哔哩哔哩:https://www.bilibili.com/video/BV1UE411A7rW?p=34

具体用法,看视频教程( 去掉 RE 的 结束广告 )

6 种定位关键代码的方法,当然还有其他方法,以后遇见了补充上:

  • 1. 信息反馈法( 资源id / 字符串 )。根据程序正常运行的提示信息进行定位,例如:错误提示运行提示等等。可以在程序中直接搜索字符串,当提示信息在 String.xml 资源文件中的时候,可以根据 R.java 的映射文件,查找对应的资源id,然后在 smali 或者在 ida 窗口中进行搜索
  • 2. 特征函数法( api 函数 )。根据程序提示信息的方法,在对应的 Android 的 API 下断点,通过 API 来检索相关的代码。
  • 3. 顺序查看法(分析程序执行流程 / 病毒分析)。从 AndroidManifest.xml 中找到 主 Activity 界面,然后顺序分析代码,通常在分析病毒软件时使用。( 通过 UI 进行分析, adb shell dumpsys activity top )
  • 4. 代码注入法。( 动态调试 / 插入log / 查看logcat / 分析加解密 )。动态调试,又叫插桩,即在关键反汇编代码处插入可以输出 logcat 调试信息的代码
  • 5. 栈跟踪法( 动态调试 / 函数调用流程 )。栈跟踪法属于动态调试的方法,原理是输出运行时栈调用跟踪信息,然后查看函数调用序列来理解方法的执行流程
  • 6. Method Profiling( 动态调试 / 热点分析 / 函数调用流程 )。动态调试方法。主要用于热点分析和性能优化。除了可以记录每个函数赵勇的CPU时间外,还可以跟踪所有的函数调用关系,并提供比栈跟踪法更详细的函数调用序列报告。

快速定位关键代码:

1.分析流程
     搜索特征字符串
     搜索关键api
     通过方法名来判断方法的功能
 
2.快速定位关键代码
     反编译 APK 程序,AndroidManifest.xml => 包名/系统版本/组件
     程序的主 activity(程序入口界面)
           每个 Android 程序有且只有一个 主Activity
           分析程序的执行流程
     需重点关注的 application
           application 执行时间
           授权验证
 
3.定位关键代码的技巧
     信息反馈法 ( 资源id/字符串 )
     特征函数法 ( api函数 )
     顺序查看法 ( 分析程序执行流程 / 病毒分析 )
     代码注入法 ( 动态调式 / 插入log / 查看logcat/分析加解密 )
     栈跟踪法   ( 动态调式 / 函数调用流程)
     Method Profiling ( 方法剖析 => 动态调式 / 热点分析/ 函数调用流程 )

Android逆向工程:实战!讲解在Smali代码中如何快速定位找到关键代码

https://blog.csdn.net/qq_34149335/article/details/82491997

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐