本帖最后由 xiexie 于 2019-6-5 13:12 编辑
昨晚小白白开始学习安卓逆向的一些静态学习的总结,也希望能给同为初学的同学一些提示。
安卓逆向中主要用到两种静态分析方法:
文本搜索法
方法1:
- 首先安装app
- fiddler抓包查找数据中需要逆向才能得到的数据的关键字
- 在jadx中搜索关键字。
- 搜索技巧:短关键字搜索加符号缩小范围:关键字+“=”号,“引号+关键字,
- 双击进入查找到的关键字位置
- 混淆过的代码可以开启jadx的反混淆。
- 如果在apk的java中搜索不到抓包的参数关键字,则可以从Raw链接入手,搜索URL中的关键字,来找拼接的参数关键字
方法2:
- 不依赖jadx,GDA而使用apktools解包搜索,在smali文件内搜索关键字,查找在哪个类哪个方法中使用到,然后再在jadx内进入该方法。
在apk中搜索不到抓包中的关键字取值的几种原因:
1.内嵌了浏览器控件,里面的超链接是服务器返回,所以代码中找不到
2.数据全部放入so库中了。
3.(基本上不会出现)所有明文被加密了
界面事件法
一般用在TCP通讯分析的时候使用,文本搜索法比较难搜的可用此方法
DDMS 可以获取到 app当前界面的xml
步骤:
- 打开DDMS连接设备
- adb连接模拟器/手机
- 截取页面,获得资源ID
E:/---------%E4%BA%91%E7%AC%94%E8%AE%B0/weixinobU7Vjnw__E7MQYNeQzEcuVebsYU/98e7bad9d5774a40a292d9fb2642d06f/1f28168d4a34493fa6bb0824a2580e64.jpg
资源ID分两部分:
- 前面部分:com.tencent.reading ID所在的包
- 后面部分:top_group_ll 资源的ID名称
将资源ID在jadx里面搜索。可以查找出列表项的界面在哪些地方被引用。主要查找事件绑定的存在。
(一般情况下,安卓库命令,流程结构不会混淆)
如果,在资源ID搜索中,没有找到事件绑定,有可能是绑定在此项的下级项中。接下来两个方向:
1.向下级项查找
2.向父控件查找
在安卓中绑定事件,一般使用监听器类来绑定。
结合jadx解包和vsCode解包搜索各种。
某个抓包关键字搜索不出对应的函数,就从附近关键字着手。
定位到相关按钮的代码块位置,跟下去就可以查找到该动作的封包解包
|