脱壳系列—— *加密脱壳(Android使用手册破解)
时间:2018-04-02
作者:i春秋作家HAI_ZHU
0x00 前言
好久没有写文了,要好好开动一下了。很多事情要忙。这篇文章本来很早之前就要写的,但是因为很多事情就拖了很久。
前置内容
0x01 smali层静态分析
反编译,不多说。
然后来看启动的class。
调用run方法,和load方法。
这里有两个so文件载入。
exec
execmain
0x02 so层分析
libexec.so
查看JNIonload,发现并没有我们需要的内容。
这个时候,我们可以先尝试进行一下动态调试。
0x03 动态调试
首先要明确断点dexfileopen。
前置配置不啰嗦了。可以去看一下之前的文章。
勾选三项,停在这里。
下端点。
端点的位置在libdvm.so->dexfileopen.
jdb转发。
F9运行,发现端点停在这里了。
同步R0寄存器。
这里很明显看到了一个dex文件。
0x04 dump dex
通过dex文件判断大小和偏移。
使用脚本进行dump
static main(void){
auto fp, begin, end, dexbyte;
//打开或创建一个文件
fp = fopen("e:\\dumpss.dex", "wb");
//dex基址
begin = 0x772C06DC;
//dex基址 + dex文件大小
end = begin + 0x000FAEB4;
for ( dexbyte = begin; dexbyte end; dexbyte ++ ){
//按字节将其dump到本地文件中
fputc(Byte(dexbyte), fp);
}
}
成功dump
0x05 偷梁换柱
把dex反编译后放入Android killer中进行分析。
通过使用app发现“请先激活用户”
搜索
然后对跳转方法进行更改。进行暴力破解。
测试:破解成功。
0x06 脱壳修复
去掉android:name="com.shell.SuperApplication",然后进行回编译。
最后大功告成
上一篇:吴甘沙的四次转身 下一篇:远征漠北——腾讯的黑产战争