auto fp,addr_start,addr_now,size,addr_end;
addr_start = 0x62509000;
size = 0x6A7968;
addr_end = addr_start+size;
fp=fopen(“C:\dump.dex”,“wb”);
for(addr_now = addr_start;addr_now<addr_start+size;addr_now++)
fputc(Byte(addr_now),fp);
在IDA中
搜索关键字
memcmp
在这函数下第一行汇编指令下断点
为什么要在memcmp 下断点呢?
Hex View窗口里 右键 chronize with R0
按F9运行
注意观察 R0值
出现 dex.35 关键字时 要注意观察了
dex.35这行 十六进制 下 第三行(dex.35这是第一行) 前8个字节 就是dex的大小
观察下 这个值的 大小 注意 这个值
在内存中 数值是 按 endian放心 存放的 就是 高低位切换的
然后看下 这个值的大小 一般来说 dex都有 几M 即几千KB的 字节
然后 再对比下 原classes.dex的 大小
首先 要跟原dex不一样 二个大小要在合理大小
会出现 多个 dex.35关键字 注意
然后出现 可疑的 时候 这时我们 dump出来 用IDA的 script 命名
FILE->SCRIPT CMOND 即出来
在里面 输入 脚本
auto fp,addr_start