通过ida dump Uinity3D的加密dll
声明:
1.本文转载自:http://www.52pojie.cn/thread-398266-1-1.html,仅供自己保存使用,高手勿喷
2.欢迎学习交流
通过ida dump Uinity3D的加密dll
看了一篇文章:http://www.jianshu.com/p/5bba57045b09
通过hook解密Uinity3D的加密dll,最近刚接触动态,于是就尝试了下能不能通过IDA,像脱壳一样,dump出解密的dll文件,试了下,果然可以,在这里分享下
工具:ida6.6 小米2s 青龙*月刀(随便找的一款游戏)
解压app lib文件夹下的libmono.so ,拖入ida
主要还是在这个几个函数上下断点(可以参考mono的源码)
mono_image_open_from_data_full
mono_image_open_from_data
mono_image_open_from_data_with_name
解密个过程可能在这几个函数的左右
查看前面函数最终调用的还是mono_image_open_from_data_with_name,
动态调试:如果app有反调试,还需要跳过饭调试,下面简单介绍动态调试的准备工作(网上有很多动态调试教程)
推送android_server到手机
1:adb push android_server /data/local/tmp/
2.:adb shell
3.cd /data/data/tmp/
4.chmod 777 android_server
5../android_server
端口转发:adb forward tcp:23946 tcp:23946
debug启动app
adb shell am start -D -n com.huiguan.qinglong.taiqi.dl/com.huiguan.qlyyd.UnityPlayerNativeActivity
查看此app PID
adb shell
ps |grep dl
记录下PID并转发下
adb forward tcp:8700 jdwp:PID
设置ida 并打开attach 上进程,
运行app
这个时候在cmd窗口上运行jdb调试:jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
这个时候可以调试了
运行app会断在linker上
接着如果app没有反调戏:直接f9运行
出现下面这个窗口:点same
稍等片刻,还会端在linker上,直接f9运行
如果出现这个窗口,全部选择yes(pass to app)不用等待了
后面可能会出现很多这个窗口全部选择yes 然后f9运行
最终断在mono_image_open_from_data_with_name,方法上
首次加载并非我们想要的dll直接跳过,
下图断点关键函数上
如果看不懂可以 f5 看下源码,这里直接f5 源码演示,他这里重写了momo的源码
int __fastcall mono_image_open_from_data_with_name(int a1, char *haystack, int a3, int a4, char a5, char *haystacka)
几个关键性参数
//nt a1 读取dll文件偏移地址
// char *haystack ,dll文件的大小
// char *haystacka ,文件名称
这个时候跟随R1寄存器看到加密的dll文件的地址,说明dll还没开始解密,解密可能会在后面。单步向下走并注意各个寄存器的变化,经过一个简单的循环
将dll解密了这个时候dll就在内存中解密了,
这个时候已经可以dump了,
查看寄存器窗口:找到R6和R11
整个文件偏移的开始R6=7B95304C
偏移地址的结束R6+R11=7B95304C+3AF200=7BD0224C
使用;dump dex的脚本
auto fp, dexAddress;
fp = fopen(“D:\\test.dll”, “wb”);
for ( dexAddress=0x7B95304C; dexAddress < 0x7BD0224C; dexAddress++ )
fputc(Byte(dexAddress), fp);
run下就ok了
附上:原dll和解密dll
http://pan.baidu.com/s/1c4P6Q
通过ida dump Uinity3D的加密dll的更多相关文章
- Unity防破解 —— 加密Dll与Key保护
在阅读这篇文章之前,我在处理mono加密问题时,也是参考了雨凇的文章,所以建议先看一下雨凇写的关于加密Dll的文章: 1.Unity3D研究院之Android加密DLL与破解DLL .SO 2 ...
- LoadLibrary(C:\soft\IDA 7.0\IDA 7.0\plugins\python64.dll) error: 找不到指定的模块。 C:\soft\IDA 7.0\IDA 7.0\plugins\python64.dll: can't load file LoadLibrary(C:\soft\IDA 7.0\IDA 7.0\plugins\python64.dll) erro
LoadLibrary(C:\soft\IDA 7.0\IDA 7.0\plugins\python64.dll) error: 找不到指定的模块. C:\soft\IDA 7.0\IDA 7.0\p ...
- Unity Android加密DLL笔记
unity mono 地址:https://github.com/Unity-Technologies/mono 下载与unity版本对应的unity mono. brew安装:http://brew ...
- 使用Dotfuscator保护.NET DLL加密DLL,防止DLL反编译
1.下载地址 https://pan.baidu.com/s/1ztWlBxw1Qf462AE7hQJQRg 2.操作步骤 2.1安装后打开DotfuscatorPro软件,如下图所示: 2.2 选择 ...
- ida dump内存脚本
auto i,fp; fp = fopen("d:\\dump.dex","wb"); for(i=r0;i<r0+0x20;i++) fputc(Byt ...
- dump、libeay32.dll、gsoap、webserver多线程调用gsoap产生崩溃
问题:调用webserver接口出现dump文件,dump文件指向libeay32.dll有问题,产生崩溃的原因是gsoap多线程问题,多线程调用时需要程序启动的地方调用如下函数进行多线程初始化: i ...
- 转:使用IDA动态调试WanaCrypt0r中的tasksche.exe
逆向分析——使用IDA动态调试WanaCrypt0r中的tasksche.exe 转:http://www.4hou.com/technology/4832.html 2017年5月19日发布 导语: ...
- Unity Mono脚本 加密
加密环境 引擎版本:Unity3D 5.3.4 及更高版本 (使用Mono而并非IL2CPP) 操作系统:CentOS 6.2(Final) 加密环境:Android.IOS(暂定) 加密对象:C#源 ...
- DLL编程学习
原文出处:http://www.blogjava.net/wxb_nudt/archive/2007/09/11/144371.html DLL编写教程 半年不能上网,最近网络终于通了,终于可以更新博 ...
随机推荐
- 【Python入门学习】闭包&装饰器&开放封闭原则
1. 介绍闭包 闭包:如果在一个内部函数里,对在外部作用域的变量(不是全局作用域)进行引用,那边内部函数被称为闭包(closure) 例如:如果在一个内部函数里:func2()就是内部函数, 对在外部 ...
- php新手需要注意的高效率编程
1.尽量静态化: 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍. 当然了,这个测试方法需要在十万级以上次执行,效果才明显. 其实静态方法和非静 ...
- 王者荣耀交流协会--第2次Scrum会议
Scrum master:袁玥 要求1:工作照片 要求2:时间跨度:2017年10月14号 6:02--6:43 共计41min 要求3:地点:一食堂二楼两张桌子旁(靠近卖方便面那边) 要求4:立 ...
- 【acm】杀人游戏(hdu2211)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2211 杀人游戏 Time Limit: 3000/1000 MS (Java/Others) M ...
- Ansible基础配置与常用模块使用
环境介绍: Ansible服务端IP:192.168.2.215 Ansible客户端IP:192.168.2.216.192.168.2.218.192.168.2.113 一.创建Ansibl ...
- c 用指针操作结构体数组
重点:指针自加,指向下一个结构体数组单元 #include <stdio.h> #include <stdlib.h> #include <string.h> #d ...
- 探究Android中通过继承ViewGroup自定义控件的原理
原文地址:http://www.cnblogs.com/kross/p/3378395.html 今天断断续续的折腾了一下午到现在20:38,终于有点明白了.o(╯□╰)o 在Android开发中,我 ...
- mysql中(存储)函数
(存储)函数: 函数,也说成“存储函数”,其实就是js或php中所说的函数! 唯一的区别: 这里的函数必须返回一个数据(值): 定义形式: 注意事项: 1, 在函数内部,可以有各种变量和流程控制的使用 ...
- 【C++】为多态基类声明virtual析构函数
来自<Effective C++>条款07:为多态声明virtual析构函数 当derived class对象经由一个base class指针被删除,而该base class带着一个non ...
- apache server-status配置
引言 自己配置LAMP服务器时(xwamp),获取状态信息出现错误: You don't have permission to access /server-status on this server ...