一些app 希望能动态加载 或者说是 增加逆向难度
把部分类 写到插件里 实际用到的时候 再把插件加载到 内存里去
然后再
xiaomi.apk
1:
先抓包
2:
androidkiller反编译
搜索关键字
搜索不到
再多搜几个关键字 发现 还是搜不到
那么这是什么原因了
再用DDMS的
Start Method Profling 功能
记得勾选第二个选项 捕捉更全
对操作的这段时间的 method 捕获
可以查看这段时间 调用了哪些方法
然后对某些关键方法 类 去搜索 结果还是没搜出来
这说明 反编译出来 的 东西 并没有 某些关键方法 类
因为在 DDMS里捕获的 是肯定 被调用的
没搜出来说明 反编译出来的smali并没有
那么这时我们就要想到 是 部分关键类 被 抽取了
这些类是 在 动态运行的时候 才出来的
然后我们
到 assets 文件夹里 看到 有 plugins 文件夹 里面有 很多
*.dat 文件 很多插件
随便拖出一个 .dat文件 到 010Editor 里去分析下 文件格式
发现在 全是乱码 说明 这应该是被加密的 文件
实际要用的时候 是要解密的
apk里 实际用的时候 是先解密 然后加载到内存 再使用
那么我们是不是 要去分析下是怎么加密的 然后去解密了
这里 不需要
我们到手机的 data/data/小米商城包名文件夹下 面
可以通过 androidkiller 的
文件工具 打开到 这个里面去看下 它比安装后 没运行前 多了很多 文件 例如 app_pluginOutDex app_plugin_signed文件夹 应该来讲 这些里面 就有我们要的 已经解密出来的类 那么我们把这些文件 导出来分析下看 记得如果没权限的话 就要先 选中文件夹 然后 右键 修改下权限
把这些文件 到 jeb里 反编译下看 有些是不能反编译的 说明不是 也可以到 010Editor里看下是什么文件格式
最后 在
app_plugin_signed 文件夹里面 找到 某个 zip文件
其实就是apk
是我们所需要的
在里面 找到了 关键字 分析 就是
那么我们如何去 动态调试了
这里 先要把这个 zip改下后缀 为apk 然后反编译
找到project里 smali里的 com目录 只有这个
把com目录 替换进到 本来的 小米商城apk 反编译后的
的smali里的 com目录
全部执行替换 即可
然后 把这个 project工程 导入到 androidstudio里去
搜索关键字 在关键地方下断点 进行调试
总结下:
当遇到 搜索多个 关键字 搜索不到的情况下
就要想到 是不是类被抽取了
这时 可以到 assets 文件夹里 看下 有没 plugin插件文件夹
也许是其他文件夹 都不一定
在需要的时候 被加载解密后 再用到的
一般来讲 这种情况
先运行下 软件 操作一遍
再到 手机包文件夹里 看下 是不是多了些文件 导出来分析下 对里面的 搜索关键字 能搜到 说明那个就是 所需要的东西
目前理解的不是很深刻 等到 再学习下 加固脱壳部分后 再来深入理解下