声明:

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

转载于:https://www.cnblogs.com/JianXu/p/5158414.html

通过ida dump Uinity3D的加密dll相关推荐

  1. Unity防破解 —— 加密Dll与Key保护

    在阅读这篇文章之前,我在处理mono加密问题时,也是参考了雨凇的文章,所以建议先看一下雨凇写的关于加密Dll的文章: 1.Unity3D研究院之Android加密DLL与破解DLL .SO 2.Uni ...

  2. Unity3D之Android加密DLL与破解DLL

    转自:http://blog.csdn.net/yupu56/article/details/53216705 1.加密方案 Unity 3D项目游戏逻辑采用C#脚本,我们知道C#编译生成的DLL或E ...

  3. 【Unity】防反编译之windows平台加密dll

    功能取决于需求,在实现这功能之前,却有一个小小的插曲,有同学认为,并不需要去实现游戏加密,再怎样也会被破解,何必浪费精力.虽然这样说,但是我们所做的加密至少也会增加一点破解成本,不会让我们辛苦写的代码 ...

  4. 用.Net Reactor5打包加密dll文件和exe程序

    软件功能: 1.可将dll文件进行加密,防止反编译. 2.可将整个debug目录下exe和引用的dll文件都整合加密到一个exe文件中 .Net Reactor破解版下载地址:https://down ...

  5. 用XenoCode 2006 加密dll(.NET

    一直使用 XenoCode 2005 Enterprise 版来混淆保护我的 .net 程序,虽说不能做到真正意义上的安全(呵呵,我就破解了几个用XenoCode加密的软件,纯粹好玩--),但比起其他 ...

  6. unity防反编译 windows平台加密dll

    原文链接:http://gad.qq.com/college/articledetail/7194480 本文首发腾讯GAD开发者平台,未经允许,不得转载 功能取决于需求,在实现这功能之前,却有一个小 ...

  7. 简单Unity 3D游戏加密dll文件提取

    大多数游戏都是使用Unity 3D做的,我们逆向分析主要分析\assets\bin\Data\Managed中的Assembly-CSharp.dll文件,当我们用.NET Reflector 或者d ...

  8. php加密 dll扩展,PHP的openssl加密扩展使用小结(推荐)

    引言 互联网的发展史上,安全性一直是开发者们相当重视的一个主题,为了实现数据传输安全,我们需要保证:数据来源(非伪造请求).数据完整性(没有被人修改过).数据私密性(密文,无法直接读取)等.虽然现在已 ...

  9. 【手游】有杀气童话 美术资源加密分析

    加密原理参考我之前写的 Unity3D 游戏加密解密那些事 0x00 在ida中先找到加密dll的地方 把libmono.so文件拖入IDA中,在函数窗口中搜索mono_image_open_from ...

  10. 【手游】魔灵幻想 美术资源加密分析

    这个游戏是用Unity3D引擎开发的,加密方式是先对AssetBundle加密,然后在libmono.so中对Assembly-CSharp.dll进行加密 0x00 在ida中先找到加密dll的地方 ...

最新文章

  1. 【Docker】容器的几种网络模式
  2. Oracle二三事之 12c 可插拔数据库PDB
  3. Trie树统计单词前缀
  4. shell脚本编写汇集
  5. LoadRunner变量到参数的互换
  6. go语言如何连接数据库
  7. SQL相关子查询与非相关子查询
  8. CubeMX配置串口的程序烧入板子不跑的解决方法
  9. Python基本语法
  10. AfterEffect滤镜插件总目录
  11. 终于找到了,中国知网免费下载论文诀窍!
  12. F12下载网页视频(开放网页)
  13. 【FXCG】多头陷阱知多少
  14. delphi BMP与jpg互转
  15. 计算平均指令时间_上海原油期货将推出TAS指令
  16. python练习题17
  17. MeteoEarth全球天气
  18. 今天吃什么转盘小程序开发制作功能介绍
  19. 本地滑块识别DLL/本地通用验证码识别DLL/文字点选/图标点选/本地识别DLL
  20. GuLi商城-在线打开pdm文件

热门文章

  1. QT All Modules QT所有模块
  2. 计算电磁学及其在复杂电磁环境数值模拟中的应用和发展趋势
  3. 236.Lowest Common Ancestor of a BinaryTree
  4. scanf 与 scanf_s
  5. [原创]SpringBoot上传图片踩的坑
  6. 一站式学习Redis 从入门到高可用分布式实践(慕课)第三章 Redis客户端
  7. Python3.x:定义一个类并且调用
  8. 动态规划:最长上升子序列(二分算法 nlogn)
  9. 表单提交后打印后台传过来的数据
  10. ZOJ 3430 Detect the Virus