当前位置:网站首页 > 网络安全培训 > 正文

脱壳系列—— 揭开so section加密的美丽外衣

freebuffreebuf 2018-04-09 289 0

本文来源:i_春秋

i春秋作家:HAI_

0x00 前言

对so的加密,https://bbs.pediy.com/thread-191649.htm大神的帖子里已经很详细的说明了。当然加密不是我们研究的重点,如何搞掉这个so的加密才是我们的要事。

或许你想看看这里

HAI_使用手册

java开发之旅

Android开发之旅

0x01 so静态分析

1.未加密之前的so

image.png

2.加密之后的so

我们使用ida打开的时候,ida进行了报错提示。

image.png

可能在平时很多时候都会发现so是被加密了的,ida就会报这个错误,我们忽略这个,然后进入。

image.png

这个就是我们加密过后的内容。

3.结论

so文件进行加密之后效果很明显,无法在加密之后的so得出有用信息。也相当于是对so进行了加壳,再详细一点就是加密壳。

而我们最主要做的就是脱掉这个加密壳。


image.png

0x02 动态脱壳

又到了我们最好玩的脱壳环节了。

利用一个最原理就是,不管你加密成什么样子,在内存中,你总是要还原的,不还原系统怎么运行。

所以我们需要进行一个动态脱壳。

连接手机,开启服务,attach

su  cd data/local/tmp  ./zhu -p23333  adb forward tcp:23333 tcp:23333  //可能会用到 adb shell am start -D -n com.example.shelldemo/.MainActivity  adb forward tcp:8700 jdwp:7728  jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,part=8700

成功附加。

image.png

这个时候程序已经在运行了。

所以我们需要找到demo里的so文件。

image.png

文件偏移是:75A00000
大小是:5000

我们来dump一下。

程序的话还是用之前的程序把。

static main(void){     auto fp, begin, end, dexbyte;     //打开或创建一个文件     fp = fopen("d:\\dump.dex", "wb");     //dex基址     begin =  0xF34C6320;     //dex基址 + dex文件大小 end = begin + 0x00013570;     for ( dexbyte = begin; dexbyte  end;     dexbyte ++ ){ //按字节将其dump到本地文件中 fputc(Byte(dexbyte), fp);         } }

稍稍的更改一下就可以使用了。

好了我们成功dump。


image.png

测试

使用ida打开。

发现ida还是报错。


image.png

image.png

先忽略,进去。

image.png

这个时候发现关键函数已经出来了。

但是我们还是想要追求一下完美。

0x03 修复

我们这里修复使用工具进行。

image.png

然后使用ida进行测试。

image.png

修复成功。


转载请注明来自网盾网络安全培训,本文标题:《脱壳系列—— 揭开so section加密的美丽外衣》

标签:移动逆向

关于我

欢迎关注微信公众号

关于我们

网络安全培训,黑客培训,渗透培训,ctf,攻防

标签列表