发新帖

Unity3d动态调式研究

[复制链接]
18935 9
本文作者:七少月
作者:七少月 Unity3d动态调式,一般而言可知,U3D最重要是dll,我们分两种情况:
一、DLL有加密壳:
动态调式其实最精髓的用法就是在静态分析不容易或无法静态分析时,也就是脱壳。现今,我认为有以下几种方法可以解决DLL被加密壳加密的情况:
1.  直接使用IDA反编译libmono.so,寻找关键函数处的解密代码,这样办法类似于静态分析,其实libmono.so中确实存在着DLL的加密和解密算法,但如果加密太难静态分析,还是要用动态调式这个so。如果so无法附加怎么办?就按照我给的解决办法,开两个IDA,一个下断,一个附加,具体可以自己实现;
2. 使用gdb附加,gcore,在core文件中寻找相关MZ头和尾巴original filename:assembly-csharp.dll,掐头去尾。标准的GDB动态调式,IDA中也有GDB调式的功能,也可以单独去使用GDB工具。
3. 对libmono.so的关键函数进行hook。JAVA可以HOOK,签名也可以HOOK,SO肯定也能HOOK。关键是借助libsubtrate.so或者subtrate这个HOOK工具;
4. 利用IDA对DLL进行动态脱壳。这和IDA动态脱SO壳类似,既然可以脱SO壳,肯定也能脱DLL壳,实际上,DLL脱壳还出现更早。只要把握住地址和大小,脱壳就可以成功,这里可以借助自动IDADUMP插件。如下图:

5. HOOK DLL,我们知道可以HOOK JAVA、SO、签名、函数等等,为何不能挂钩C#,勾住DLL,或者挂钩在调用该DLL之前的JAVA代码里,HOOK DLL应该可行,先写一个hook.dll,然后让APK调用这个hook.dll;
二、DLL没有加密,可以打开的动态下断调式
我们可以类比,假如你觉得一个函数是关键,可以用reflector插件对DLL添加上一句messagebox,当是下断,这也是一种很清晰的动态调式。

视频下载地址:http://pan.baidu.com/s/1c035lSW

已有1人评分 NB 荣获致谢 理由
十万个为什么 + 1 + 1 很给力!

查看全部评分 总评分: NB +1  荣获致谢 +1 

举报 使用道具

回复

精彩评论9

yyj85391    发表于 2015-8-10 20:19:50 来自手机  | 显示全部楼层
感谢大神,现在好多3D游戏DLL加密了!特别是一些单机游戏加密更多!回家下载认真的学习,有不懂的地方麻烦大神多多指教

举报 使用道具

回复 支持 反对
xin    发表于 2015-8-10 22:56:55 来自手机  | 显示全部楼层
貌似好复杂哦!!

举报 使用道具

回复 支持 反对
peterdocter    发表于 2015-8-11 14:14:27 | 显示全部楼层
教程总结不错,只是视频不太给力
希望以后视频结合教程来一个实战例子!

举报 使用道具

回复 支持 反对
Childhood    发表于 2015-8-11 22:07:05 | 显示全部楼层
支持,楼下的跟上哈~

举报 使用道具

回复 支持 反对
Waitfor    发表于 2015-8-11 22:09:22 | 显示全部楼层
长时间没来看了 ~~

举报 使用道具

回复 支持 反对
一杯凉温水    发表于 2015-8-11 22:20:23 | 显示全部楼层
学习下

举报 使用道具

回复 支持 反对
Rebirth    发表于 2015-8-11 22:34:59 | 显示全部楼层
希望能和楼主一起交流一下

举报 使用道具

回复 支持 反对
Foooooooood    发表于 2015-8-11 22:39:35 | 显示全部楼层
非常好,顶一下

举报 使用道具

回复 支持 反对
清风远行    发表于 2015-8-11 22:57:38 | 显示全部楼层
呵呵,明白了

举报 使用道具

回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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