返回介绍

21.1 动态调试步骤

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

第一步:反编译 apk

通过 apktool 工具进行 apk 的反编译,得到 smali 源码和 AndroidManifest.xml,然后修改 AndroidManifest.xml 中的 debug 属性为 true,同时在入口处加上 waitForDebug 代码,进行 debug 等待。一般入口都是先找到入口 Activity 的 onCreate 方法中的第一行处,这里需要注意的是,apktool 工具一定要加上-d 参数,这样反编译得到的文件是 Java 文件,这样才能够被 Eclipse 识别,进行调试。

第二步:回编译 apk

修改完成 AndroidManifest.xml 和添加 waitForDebug 之后,需要使用 apktool 进行回编译,回编译之后得到的是一个没有签名的 apk,还需要使用 signapk.jar 来进行签名,签名文件直接使用测试程序的签名文件就可以,最后进行安装。

第三步:将反编译 smali 工程导入 Eclipse

将反编译之后的 smali 源码导入到 Eclipse 工程中,找到关键点,进行下断点。这里的关键点,一般是先大致了解程序运行的结构,然后找到需要破解的地方,使用 View 分析工具,或者使用 jd-gui 工具直接查看 apk 源码(使用 dex2jar 将 dex 文件转化成 jar 文件,然后用 jd-gui 进行查看),找到代码的大体位置,然后下断点。这里可以借助 Eclipse 的 DDMS 自带的 View 分析工具找到对应控件的 resid,然后全局搜索这个控件的 resid,或者直接在 values/public.xml 中查找,最终定位到这个控件位置,再查看它的点击事件即可。

第四步:设置远程调试

设置远程调试工程,首先运行需要调试程序,然后在 DDMS 中找到对应的调试服务端的端口号,然后在 Debug Configurations 中设置远程调试项目,设置对应的调试端口和 ip 地址(一般都是本机 pc,那就是 localhost),然后红色小蜘蛛变成绿色的,表示远程调试项目连接关联上了调试程序。这里需要注意的是,一定需要关联正确,不然是没有任何效果的,关联成功之后,就可以进行操作。

第五步:调试 apk 程序

操作的过程中,会进入到关键的断点处,通过 F6 单步,F5 单步进入,F7 单步跳出,进行调试。找到关键方法,然后通过分析 smali 语法了解逻辑,如果逻辑复杂的,可以通过查看具体的环境变量的值来观察,这里也是最重要的,也是最复杂的,同时这里也是没有规章可寻的,这与每个人的逻辑思维以及破解能力有关系。分析关键的加密方法是需要功底的,当然这里还需要注意一个信息,就是 Log 日志,这有时候也是很重要的一个信息。

第六步:编写代码实现核心逻辑

当知道了核心方法的逻辑,要想得到正确的密码,还是需要自己用语言去实现逻辑的,需要手动编写代码才能得到正确的密码。

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

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

发布评论

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