Unity3d动态调式研究
本文作者:七少月作者:七少月 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插件。如下图:http://attach.52pojie.cn/forum/201508/10/200135n0kxz2ukukmi0yk6.png
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
感谢大神,现在好多3D游戏DLL加密了!特别是一些单机游戏加密更多!回家下载认真的学习,有不懂的地方麻烦大神多多指教 貌似好复杂哦!! 教程总结不错,只是视频不太给力{:5_121:}
希望以后视频结合教程来一个实战例子!{:5_144:} 支持,楼下的跟上哈~ 长时间没来看了 ~~ 学习下 希望能和楼主一起交流一下 非常好,顶一下 呵呵,明白了
页:
[1]