首页
社区
课程
招聘
[原创]android动态调试,dex文件脱壳。第一次写东西!高台贵手
发表于: 2015-8-15 14:37 16780

[原创]android动态调试,dex文件脱壳。第一次写东西!高台贵手

2015-8-15 14:37
16780
网站上面已经有很多关于dex文件脱壳的资料,在工作中刚好遇到这游戏对dex,so都加处理,就抱着试试的态度。就有了这个贴。废话不多说了! 大小牛就路过吧。全文如下:
  1: 首先来看看这游戏dex文件,很明显的dex大小不对,java代码也对应不上。这肯定有猫腻呀。。就附加游戏试试,想不到游戏一直崩溃。只好看看游戏状态怎样,想不到竟然有传说中TracerPid。其实你也可以用某大神的hook的status方法,我hook这open方法打印的出来的log如下

2:好了,既然知道是游戏附加在被调试被检查,就会通过fopen,fget获得程序的状态以判断。都知道fopen,fget函数都是在对应的libc.so里面的,现在我们把手机上面的libc.so拿出来(ps:adb pull /system/lib/libc.so //Users).好了,,用IDA打开在fopen,fget下好断点。准备工作做的差不多了。接下来就是调试部分。首先把ida软件对应的android_server。push到手机上面去。我放在手机/data/local/tmp/目录下面的,记得给android_server加权限。OK,现在就可以执行android_server了。现在服务端已经有了,就差客户端了,用ida打开下好断点libc.so,在自己电脑实现消息转发,因我mc机开启另外一个命令行执行adb forward tco:23946 tcp:23946。下一步在ida里面进行配置来接受调试,在ida依次选择Debuger->process options进行配置。好了,如果前面都没有设置错误应该在开始调试时debugger->attach to process就能看到手机里面的进程了。一切准备工作差不多了,就差启动游戏进行调试了。刚开始的我们已经知道了如果让游戏起来再附加是不行的,用ida附加会崩溃,所以用了网上说了一种用am方式。就是不让游戏的so跑起来,要不然。。OK,用am启动游戏,adb shell am start -D -n 包名/activity,,如果没什么意外的话,手机上面的游戏已经处在带待调试状态;接着用ida附加上去就Ok,一直跳过那些什么符号表啥的,最后你就不能再执行了。不是游戏死掉了,而是要等待java层继续继续,好,,再开启一个命令窗口执行jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700,,这时候游戏就完全可以了,游戏自然就会断在刚开始fopen这函数这里。这时候就完全可以控制,同时记得在模块那里对模块libdvm.so里面的dvmDexFileOpenPartial下断,游戏不断的fopen于fget之间跑呀跑,直到等到fget的值r0的b包含了TracerPid信息,可以明显pid不为0,修改之,继续跑,这游戏会连续两次检查TracerPid,都把他修改掉,等两次改完后,一直执行下去,过段时间调试就在libdvm.so库函数dvmDexFileOpenPartial下断点,大家都这知道是干嘛用的。r0就是只是指向dex在内存中基地址,r1就是dex文件的大小。只要把断点处的内存dump出来就可以了。。。
现在只要在ida中执行一段代码  :
auto fp,dexaddress;
fp = fopen("/Users/Documents/123456.dex","wb");
for(dexaddress=0x702bf608;dexaddress<0x7040C52C;dexaddress++)
{

   fputc(Byte(dexaddress),fp);
}

fclose(fp);
就OK了
最后反编译123456.dex就能完全看见代码了!!

到这里也就差不多了,,完全是让跟我一样菜的人能学习下调试而已。

-----------------------------------------
ps:其实这游戏的so文件也做了处理,用ida完全打不开的,后面的so文件我不知道脱掉,只有等大神来搞定~~
发个so文件图:

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 44
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
膜拜大神,沙发,带上饮料和瓜子,多谢分享,
2015-8-15 14:39
0
雪    币: 8
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好东西,太赞了,学习了,楼主给力,膜拜!!
2015-8-15 14:40
0
雪    币: 8
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
求版主加精啊,这么好的文章,仔细看了一下,对于我们这样的菜鸟帮助太大了
2015-8-15 15:27
0
雪    币: 242
活跃值: (1913)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
什么壳?
2015-8-15 17:20
0
雪    币: 52
活跃值: (106)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
学习了。。
2015-8-15 18:34
0
雪    币: 144
活跃值: (178)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
Lz分享的好东西,太赞了,学习了
2015-8-17 00:24
0
雪    币: 9479
活跃值: (757)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
把原APK发一下看看
2015-8-17 05:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
菜鸟学习了
2015-8-17 08:52
0
雪    币: 1329
活跃值: (4314)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
10
怎么没有样本
2015-8-17 09:03
0
雪    币: 277
活跃值: (3358)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
11
因为现在这游戏还在运营,不想引起不比要麻烦,想知道是具体是那个游戏可以留个邮箱啥的
2015-8-17 09:22
0
雪    币: 4554
活跃值: (2186)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
爱加密 很早以前的版本吧..
2015-8-17 10:26
0
雪    币: 215
活跃值: (372)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
操作还挺详细的...排版略渣..
2015-8-17 10:52
0
雪    币: 277
活跃值: (3358)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
14
en
,,四个字!
2015-8-17 12:49
0
雪    币: 26
活跃值: (1651)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
你好!能否给我发一份样本,谢谢

healthyandwelfare@163.com
2015-8-19 18:40
0
雪    币: 540
活跃值: (338)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
16
求样本  wmp1014@163.com
2015-8-20 16:05
0
雪    币: 159
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
17
求样本!谢谢!
mailfornothing#163.com
2015-8-21 09:00
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
不错不错
2015-8-21 11:16
0
游客
登录 | 注册 方可回帖
返回
//