作者:i春秋作家HAI_ZHU

0×00 前言

好久没有写文了,要好好开动一下了。很多事情要忙。这篇文章本来很早之前就要写的,但是因为很多事情就拖了很久。

前置内容

HAI_使用手册

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

知识总结

0×01 smali层静态分析

反编译,不多说。

然后来看启动的class。

脱壳系列—— *加密脱壳(Android使用手册破解) Safe 第1张

调用run方法,和load方法。

脱壳系列—— *加密脱壳(Android使用手册破解) Safe 第2张

这里有两个so文件载入。

exec

execmain

脱壳系列—— *加密脱壳(Android使用手册破解) Safe 第3张

0×02 so层分析

libexec.so

脱壳系列—— *加密脱壳(Android使用手册破解) Safe 第4张

查看JNIonload,发现并没有我们需要的内容。

脱壳系列—— *加密脱壳(Android使用手册破解) Safe 第5张

这个时候,我们可以先尝试进行一下动态调试。

0×03 动态调试

首先要明确断点dexfileopen。

前置配置不啰嗦了。可以去看一下之前的文章。

勾选三项,停在这里。

脱壳系列—— *加密脱壳(Android使用手册破解) Safe 第6张

下端点。

脱壳系列—— *加密脱壳(Android使用手册破解) Safe 第7张

端点的位置在libdvm.so->dexfileopen.

jdb转发。

脱壳系列—— *加密脱壳(Android使用手册破解) Safe 第8张

F9运行,发现端点停在这里了。

脱壳系列—— *加密脱壳(Android使用手册破解) Safe 第9张

同步R0寄存器。

脱壳系列—— *加密脱壳(Android使用手册破解) Safe 第10张

这里很明显看到了一个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发现“请先激活用户”

搜索

脱壳系列—— *加密脱壳(Android使用手册破解) Safe 第11张

然后对跳转方法进行更改。进行暴力破解。

测试:破解成功。

0×06 脱壳修复

去掉android:name=”com.shell.SuperApplication”,然后进行回编译。 
脱壳系列—— *加密脱壳(Android使用手册破解) Safe 第12张

最后大功告成

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄