脱壳系列—— *加密脱壳(Android使用手册破解)
作者:i春秋作家HAI_ZHU
0×00 前言
好久没有写文了,要好好开动一下了。很多事情要忙。这篇文章本来很早之前就要写的,但是因为很多事情就拖了很久。
前置内容
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。0×01 smali层静态分析
反编译,不多说。
然后来看启动的class。
调用run方法,和load方法。
这里有两个so文件载入。
exec
execmain
0×02 so层分析
libexec.so
查看JNIonload,发现并没有我们需要的内容。
这个时候,我们可以先尝试进行一下动态调试。
0×03 动态调试
首先要明确断点dexfileopen。
前置配置不啰嗦了。可以去看一下之前的文章。
勾选三项,停在这里。
下端点。
端点的位置在libdvm.so->dexfileopen.
jdb转发。
F9运行,发现端点停在这里了。
同步R0寄存器。
这里很明显看到了一个dex文件。
0×04 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
0×05 偷梁换柱
把dex反编译后放入Android killer中进行分析。
通过使用app发现“请先激活用户”
搜索
然后对跳转方法进行更改。进行暴力破解。
测试:破解成功。
0×06 脱壳修复
去掉android:name=”com.shell.SuperApplication”,然后进行回编译。
最后大功告成

更多精彩