当前位置:首页 » 编程软件 » 美团反编译

美团反编译

发布时间: 2023-02-23 18:29:49

㈠ android 不混淆代码要怎么使用Robust

什么是代码混淆:
    Android SDK 自带了混淆工具Proguard。它位于SDK根目录\tools\proguard下面。如果开启了混淆,Proguard默认情况下会对所有代码,包括第三方包都进行混淆,可是有些代码或者第三方包是不能混淆的,这就需要我们手动编写混淆规则来保持不能被混淆的部分。

为什么要混淆:
优化java的字节码
减小apk文件的大小,在混淆过程中会删除未使用过的类和成员
代码安全,使类、函数、变量名随机变成无意义的代号形如:a,b,c...之类。防止app被反编译之后能够很容易的看懂代码

㈡ Android | 他山之石,可以攻玉!一篇文章看懂 v1/v2/v3 签名机制

这篇文章的内容会涉及以下前置 / 相关知识,贴心的我都帮你准备好了,请享用~

数字签名(Digital Signature)也叫作数字指纹(Digital Fingerprint),它是消息摘要算法和非对称加密算法的结合体,能够验证数据的完整性,并且认证数据的来源

数据签名算法的模型分为两个主要阶段:

需要注意的是,Android 目前不对应用证书进行 CA 认证,应用可以由第三方(OEM、运营商、其他应用市场)签名,也可以自行签名。

应用 APK 其实是一种特殊的 Zip 压缩包,无法避免恶意破解者解压 / 反编译修改内容,针对这个问题有何解决方案呢?他山之石,可以攻玉 ——数字签名算法。应用签名正是数字签名算法的应用场景之一,与其他应用场景类似,目的无非是:

Android 平台上运行的每个应用都必须有开发者的签名。在安装应用时,软件包管理器会验证 APK 是否已经过适当签名,安装程序会拒绝没有获得签名就尝试安装的应用。

软件包管理器在安装应用前会验证应用摘要,如果破解者修改了 apk 里的内容,那么摘要就不再匹配,验证失败(验证流程见下文方案)。

截止至 Android 11,Android 支持以下三种应用签名方案:

为了提高兼容性,必须按照 v1、v2、v3 的先后顺序采用签名方案,低版本平台会忽略高版本的签名方案在 APK 中添加的额外数据。

v1 签名方案是基于 Jar 的签名。

首先,我们先来分析其签名产物。 v1 签名后会增加 META-INF 文件夹 ,其中会有如下三个文件。考虑到使用不同的证书和签名方式,得到的文件名可能不同,因此你只要留意文件的后缀即可:

v1 签名流程如下:

MANIFEST.MF(Message Digest File,摘要文件)

*.SF(Signature File,签名文件)

验证流程可以分为验证签名和验证完整性两个步骤:

验证签名步骤:

如果上述签名验证结果正确,才会验证完整性:

以上任何步骤验证失败,则整个 APK 验证失败。

为了解决这些问题,Android 7.0 中引入了 APK 签名方案 v2。

v2 签名方案是一种 全文件签名方案 ,该方案能够发现对 APK 的受保护部分进行的所有更改,相对于 v1 签名方案验证速度更快,完整性覆盖范围更广。

在分析 v2 签名方案之前,我们先简单了解一下 Zip 文件格式:

首先,我们先来分析其签名产物。v2 签名后会在 “条目内容区”和“中央目录区”之间插入“APK 签名分块(APK Signing Block)”

从左到右边,我们定义为区块 1~4。

相对与 v1 签名方案,v2 签名方案不再以文件为单位计算摘要了,而是以 1 MB 为单位将文件拆分为多个连续的块(chunk),每个分区的最后一个块可能会小于 1 MB。

v2 签名流程如下:

验证流程可以分为验证签名和验证完整性两个步骤:

签名方案 v3 支持密钥轮换,应用能够在 APK 更新过程中更改其签名密钥。

【累了,后面先不写了...】

这一节,我们介绍基于 Android 应用签名机制的衍生应用场景。

在 v1 方案中, MANIFEST.MF *.SF 这两个文件会记录大量的文件名和文件摘要。如果 apk 中文件数很多,而且文件名很长,那么这两个文件会变得很大。使用 AndResGuard 工具,可以将文件名转换为短路径文件名,从而减少这两个文件的大小。

在实际生产中,往往需要生成多个渠道的 APK 包,传统的方法是使用 APKTool 逆向工具、Flavor + BuildType 等方案,这一类多渠道打包方案的缺点是耗时严重。随着 Android 应用签名方案的演进,演变出了不同的多渠道打包方案:

在 v1 方案中,我们提到了完整性校验不覆盖到 META-INF 文件夹的问题。有些多渠道打包方案就是利用了这个问题,在 META-INF 文件夹下添加空文件, 用空文件的名称来作为渠道的唯一标识 ,就可以节省打包的时间,提高打渠道包的速度。

除了添加空文件的方法,还可以向 APK 添加 Zip Comment 来生成多渠道包(APK 本身就是特殊的 Zip 包)。

在 v2 签名方案中,几乎整个 APK 都纳入保护范围,如果向 APK 添加空文件或 Zip Comment 的话,在安装时会报以下错误:

新背景下的多渠道打包方案,则是利用了 APK 签名分块(区块 2)不受保护 & 字段可扩展的特点 ,向区块中添加多渠道信息(ID-Value),例如 美团多渠道打包方案 Walle 。

㈢ 像美团外卖这样的APP用一种开发语言,能开发得出来吗

像美团外卖这样的APP用一种开发语言,能开发得出来吗?答案是不能。

美团发展到现在可以说已经是一个【巨无霸】了,里面集成了很多很多功能,除了核心的外卖,还有 旅游 、 娱乐 、购物、出行,金融等等业务线,那么这么多复杂的业务根本不可能用同一种开发语言实现。

那么美团都用到哪些开发语言和技术了呢?下面就根据我的理解详细说一下。

前端是把产品的核心服务交给用户的呈现者,它的表述方式、展示形式以及交互逻辑都跟用户息息相关,都影响着用户使用产品的体验,也就是说直接影响产品的用户留存。

前端开发主要分为三大类型:Andriod、IOS和PC(H5) ,Android开发语言是Kotlin和Java,IOS开发语言是Object-c和Swift,PC(H5)开发语言就比较杂了,有JS、CSS、HTML,还有很多第三方的前端框架,比如Angular.js、vue.js、Bootstrap、JQuery等等。

关于后端的功能,这一点可以说是众说纷纭,主要需要考虑的是如何实现功能、数据的交互流程和存取、平台的稳定性与性能等。

那么后端都用到哪些开发语言和技术呢?

根据后端技术选型的标准,后端可选的开发语言和技术是非常多的。

比如Java体系的话,可以选用SpringMVC、Spring cloud、Hibernate,Mybatis、Mysql、Redis、Memcache、zookeeper、Kafka......;

比如python体系的话,可以选用Django、Flask、Tarnado、Web2py等,中间件都是通用的,Redis,MQ、MySQL、Kafka等都可以用在python体系中;

当然还有PHP、C、Perl等开发语言。


综上所述,美团这个巨无霸公司,随着业务线的扩展用到的技术肯定会越来越多,而且越来越复杂,技术快速变革的时代,适者生存的竞争性也会越来越激烈。

俗话说:罗马不是一日建成的,任何事都不可能一蹴而就,包含技术。在以后的发展中美团也会逐步更新自己的技术和开发语言的。

至少三种语言。后端一种语言(比如Java丶Go丶Python丶PHP等),后端语言及生态比较成熟。下面重点聊前端App开发。

前台两种语言(Android和iOS是不同的开发环境。比如Android用Java或者Kotlin,iOS采用Object C++或Swift),称之为Native开发。

当然创业公司可以用一种前端语言写App前端,这样就不需要Android和苹果分两种语言写,写一次代码可以编译成Android和iOS的App,现在通行的方案有Vue之类的DOM渲染模式,以及ReactNative方案(RN)。性能上RN优于DOM渲染但低于用Native开发的App。所以美团这种公司,一定是Native方式写App,但RN是初创项目不错的选择。

与RN竞争的还有一种新贵flutter,是google推出来的,但设计原理与RN不同,性能方面优于RN,只是目前生态不够健全,国内有闲鱼app是采用此技术。未来可能会占一席之地。

最后,其实App开发已经是强努之末,我觉得主流应该是朝PWA和小程序方向发展。

你好,开发譬如美团这种APP,用一种语言是实现不了的,一个APP有安卓和苹果两个操作系统,开发能在安卓iOS端应用的APP主流的开发语言和技术是很多的,如后台有JAVA、C++、PHP、Python等多种开发语言,前端有kotlin、HTML、css、jquery、ajax、bootstrap、angular.js、react、vue.js、node.js、swift、object-c等多种语言和框架。

一个APP的开发是需要前端技术和后台技术共同配合完成,这样的APP不论是功能还是性能都给用户很好的体验,单一开发语言毕竟技术支持有限,所以即使能开发出来,APP的用户体验也是不理想的。

一般APP有这几种开发组合模式:1、原生安卓iOS开发,前端:JAVA、kotlin、swift、object-c后台:JAVA、PHP、C++等后台技术,这种模式开发周期长,成本高,性能好;2、混合APP开发即hybrid app,前端以网页技术为主,穿插原生开发功能,兼具原生APP和web app的优点,如淘宝、微信等应用都是走的这个技术;3、web app,前端纯网页技术,后台为主流开发语言,这种模式开发速度快,成本低,界面体验可能弱一些。

可见开发一款APP大多数都是多种语言配合完成,谢谢阅读。

看完之前的评论,依然好奇为什么一个语言不能完全胜任。

前端跨平台的方案有react native,cordova,flutter等,如果需要兼容开发小程序,h5页面,可以采用taro来开发,一套代码,所有平台通吃。

后端的方案有服务端运行时nodejs,大数据背景下运用而生的数据库mobgodb,缓存解决方案redis,搜索工具elasticsearch,负载均衡ngix,基本上是需要什么就有什么

所以总结下来,一句话,一种语言可以实现类似美团这样的app和小程序。为什么美团使用的语言那么多,一大原因估计是美团app开发的早,当时前端技术不成熟,工具没现在这么多。

使用混合开发与C++ 进行跨平台开发,有好有坏。

C++ 进行跨平台开发

编写一次,随处运行。早在 2013 年,Dropbox 就采用上述策略进行移动开发,这背后的想法很简单:用 C++ 编写一次代码,而不是用 Java 和 Objective-C 编写两次。那时,整个移动工程团队相对还比较小,但需要支持快速增长的移动路线图。因此,公司希望找到一种方法,使这个小团队可以快速交付大量 Android 和 iOS 代码。

如今,Dropbox 完全放弃了这个策略,转而使用各个平台的原生语言(主要是 Swift 和 Kotlin ,这两种语言在刚开始制定移动策略时还不存在)。

Hybrid App混合开发

Hybrid App主要以JS+Native两者相互调用为主,从开发层面实现“一次开发,多处运行”的机制,成为真正适合跨平台的开发。Hybrid App兼具了Native App良好用户体验的优势,也兼具了Web App使用HTML5跨平台开发低成本的优势。

目前已经有众多Hybrid App开发成功应用,比如美团、爱奇艺、支付宝等知名移动应用,都是采用Hybrid App开发模式。

移动应用开发的方式,目前主要有三种:


几种模似都可以开发出应用,小应用无所谓,但是大流量应用,对图形要求高的如 游戏 等原生开发的效果还是最好

支付宝打开很慢,就是因为采用混合开发,使用人多了不如原生开发

不行的哦。任何你看到的应用和网页,都需要多个语言开发的,大的分比如前端和后端,用的语言都是不一样的

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:746
制作脚本网站 发布:2025-10-20 08:17:34 浏览:1010
python中的init方法 发布:2025-10-20 08:17:33 浏览:716
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:878
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:774
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1124
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:349
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:227
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:911
python股票数据获取 发布:2025-10-20 07:39:44 浏览:873