作者:i春秋作家HAI_ZHU
0x00 前言
好久没有写文了,要好好开动一下了。很多事情要忙。这篇文章本来很早之前就要写的,但是因为很多事情就拖了很久。
前置内容
HAI_使用手册
知识总结
反编译,不多说。
然后来看启动的class。

调用run方法,和load方法。

这里有两个so文件载入。
exec
execmain

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");
begin = 0x772C06DC;
end = begin + 0x000FAEB4;
for ( dexbyte = begin; dexbyte end; dexbyte ++ ){
fputc(Byte(dexbyte), fp);
}
}
成功dump
0x05 偷梁换柱
把dex反编译后放入Android killer中进行分析。
通过使用app发现“请先激活用户”
搜索

然后对跳转方法进行更改。进行暴力破解。
测试:破解成功。
0x06 脱壳修复
去掉android:name="com.shell.SuperApplication",然后进行回编译。

最后大功告成