返回介绍

13.3 运行项目

发布于 2024-10-10 22:32:19 字数 2269 浏览 0 评论 0 收藏 0

上节介绍了这三个项目,下面就来看看如何运行吧。

第一步:得到源程序 apk 文件和脱壳程序的 dex 文件

运行源程序项目和脱壳程序项目,得到源程序 apk 文件和脱壳程序的 dex 文件,如图 13-8 所示。

图 13-8 项目结构图

之后得到这两个文件(记得将 classes.dex 文件改名 ForceApkObj.dex),然后使用加壳程序进行加壳,如图 13-9 所示。

这里的 ForceApkObj.apk 文件和 ForceApkObj.dex 文件是输入文件,输出的是 classes.dex 文件。

第二步:替换脱壳程序中的 classes.dex 文件

在第一步中得到加壳之后的 classes.dex 文件之后,并且在第一步运行脱壳项目的时候得到一个 ReforceApk.apk 文件,这时候使用解压缩软件进行替换,如图 13-10 所示。

图 13-9 加壳程序

图 13-10 压缩软件查看 apk 内容

第三步:得到替换之后的 ReforceApk.apk 文件

这个文件因为被修改了,所以需要重新对它签名,不然运行也是报错的。这里可以使用 jarsigner 工具对 apk 进行重签名:

这里最主要的命令就是中间的一条签名的命令,关于命令的参数说明如下:

例如:

那么通过上面的三个步骤之后得到一个签名之后的最终文件:ReforceApk_des.apk。安装这个 apk,然后运行,效果如图 13-11 所示。

图 13-11 运行效果图

这个时候再去反编译一下源程序 apk,如下所示(这个文件是脱壳出来的 payload.apk,看 ReforeceApk 中的代码就知道它的位置了):

发现 dex 文件格式是不正确的。说明加固是成功的。

总结遇到的问题如下:

·研究的过程中遇到签名不正确的地方,开始的时候替换 dex 文件,就直接运行了 apk,但是总是提示签名不正确。

·运行的过程中说找不到源程序中的 Activity,需要在脱壳程序中的 AndroidManifest.xml 中查看一下源程序中的 Activity,如下所示:

通过上面的过程可以看到,关于 apk 加固的工作还是挺复杂的,涉及的东西也挺多,下面就来总结一下。

加壳程序:

·任务:对源程序 apk 进行加密,合并脱壳程序的 dex 文件,然后输入一个加壳之后的 dex 文件。

·语言:任何语言都可以,不限于 Java 语言。

·技术点:对 dex 文件格式的解析。

脱壳程序:

·任务:获取源程序 apk,进行解密,然后动态加载进来,运行程序。

·语言:Android 项目(Java)。

·技术点:如何从 apk 中获取 dex 文件,动态加载 apk,使用反射运行 Application。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文