吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 35335|回复: 85
收起左侧

[Android 脱壳] 《2015移动安全挑战赛》第三题的APK脱壳解法

  [复制链接]
zzage 发表于 2015-1-26 22:14

0x1:

首先,发现lib文件夹下有libmobisec.so,libmobisecy.so,libmobisecz.so三个文件。
a.仔细观察,libmobisecy.so是一个zip包,里面存放了一个classes.dex文件,这dex文件里所有的函数代码都被改成throw new RuntimeException();   
b.发现libmobisecz.so是一个非so文件的数据文件,其实里面存放的就是classes.dex被偷的代码和一些要修改的code0ff偏移地址(该文件经过lzma压缩,rc4加密)。

0x2:

脱壳思路,其实只要把libmobisecz.so这个把解密后的数据给dump出来就行了,然后再根据里面的数据再把classes.dex给修复一下就行了。
1.动态调试去anti
000111BC 19 D6 01 EB                 BL      sub_86A28   //这个函数就是在做各种anti的功能,把这个函数给nop调,就可以各种调了,nop方法把字节码19 D6 01 EB改成00 00 AO E1 (其实就是mov r0, r0)

2.dump解密后的libmobisecz.so文件
a.libmobisecz.so要解密,首先肯定得打开文件, 所以在open函数下断点, 观察LR返回连接寄存器是不是在libmobisec.so,如果是,再看 R0寄存器的地址内存是不是libmobisecz.so文件的路径,是的话,就在LR寄存器的地址下断点,运行一下,然后往下跟,就能看到RC4解密和lzma解密了,然后解密后的libmobisecz.so给dump下来,等后面修复用。
b.接着在mprotect函数下断点,可以看到已被修改过classes.dex文件,dump下来后odex文件(把odex头去除)和之前的classes.dex比较,能发现有57处codeoff需要修复!

0x3:

修改classes.dex文件
a. 从解密的libmobisecz.so文件里能发现偏移+0x9,用readLEB128转一下为0x1e50(存放classes.dex第一个code_off地址),然后观察一下偏移处+0xBC为第一个DexCode结构数据。
这样code_off起始地址有了,修复多少处codeoff也有了,DexCode结构数据,接下来就是修复了...
b.修复classes.dex文件直接套用万抽抽大牛的python脚本修一下下就可以用了。

附件为比赛第三题的APK文件,解密后的decrypted_libmobisecz.so文件,修复python脚本,和脱壳修复后的dex。


ps:更新一下解密脚本,还得再修复一下annotation偏移

第三题相关附件_更新下脚本.zip

1 MB, 下载次数: 730, 下载积分: 吾爱币 -1 CB

点评

楼主第几名?能拿几万?  发表于 2015-1-28 13:46

免费评分

参与人数 21热心值 +21 收起 理由
miquan007 + 1 谢谢@Thanks!
steeder + 1 热心回复!
q303772510 + 1 我很赞同!
luohaiping3 + 1 见识了,佩服!
小卖店 + 1 热心回复!
luojianeng + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.
sndncel + 1 大神呀。。。。你太牛X了呀。。。
红楼一梦 + 1 已答复!
哈哈先生 + 1 鼓励转贴优秀软件安全工具和文档!
han1058349250 + 1 谢谢@Thanks!
瓜子吧3 + 1 交个朋友吧!对不起拿错了.
ZONDA + 1 仰慕大牛,大牛必拿不少零花钱啊
asasadasss + 1 谢谢@Thanks!
wbdl88 + 1
sfshine + 1 不明觉厉,仰慕大神
0x9527 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.
逍遥枷锁 + 1 谢谢@Thanks!
ieiqp + 1 10万奖金离你不远了!
双菜鱼 + 1 不明觉厉,仰慕大神
低调(d-iao) + 1 大神 我们交个朋友吧
myqqq + 1 啥也不说了,顶大牛

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

相约一生 发表于 2015-1-28 09:26 来自手机
感谢楼主分享,《2015移动安全挑战赛》第三题的APK脱壳解法
15732164757 发表于 2015-2-7 06:10 来自手机


       OK,结果出来了,上面是原来的指令MOVS R0, R4机器码为20 1C,下面为修改后的指令MOVS R0, #1机器码为01 20。
       好吧,UltraEdit久等了,谢幕就由你来吧(其实这才是最后的利器)!打开libillyb.so,Ctrl-G跳转到IDA中显示的修改地址,核实无误将20 1C修改为01 20,保存,libillyb.so复制回lib目录,编译运行,提示注册成功了,请注意注册成功后下面的按钮也变了。
头像被屏蔽
hnicf 发表于 2015-1-26 22:29
MMAKI 发表于 2015-1-26 22:35 来自手机
先顶再看
Hmily 发表于 2015-1-27 09:09
膜拜大牛,拿第几名?
odmin 发表于 2015-1-27 10:40
分析了不错,支持一下
kian 发表于 2015-1-27 11:20
厉害,学习学习,希望自己以后也有机会参加
lies2014 发表于 2015-1-27 13:05
学习了,谢谢分享~!
索马里的海贼 发表于 2015-1-27 13:24
先膜拜一下!
blsn3548 发表于 2015-1-27 13:57
感谢分享经验
JK52PJ 发表于 2015-1-27 14:20
向大牛学习一下。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 14:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表