1. IDA Pro打开libmono.so, 修改mono_image_open_from_data_with_name为
mono_image_open_from_data_with_name_0,
2. 替换实现mono_image_open_from_data_with_name,
extern mono_image_open_from_data_with_name_0(...)
mono_image_open_from_data_with_name(...) {
MonoImage *img = mono_image_open_from_data_with_name_0(...)
//发现数据文件头不是DLL前缀则解密 img->raw_data, 相应修改img->raw_data_len
return img
}
3. 重新打包libmono.so替换Unity3D中的android下的版本.
4. 另外写个加密的工具,植入构建环境(MonoDeveloper或VS,添加一个打包后Build Phase来加密DLL)(IOS下禁用JIT固采用AOT编译,DLL中没有逻辑代码,所以无需 *** 心)
从AndroidManifest.xml中可以看出,腾讯的改造应该是修改并替换了入口的classes.dex,把以前的入口 UnityPlayerProxyActivity替换为com.tencent.tauth.AuthActivity. 然后去加载了自定义的早孙几个so: libNativeRQD.so. 周全考虑,为了防止第三方委托libmono去做解密而做了防护措施. 具体实现我还没做深入分析, 应该也是老套路.
libmono.so中的mono_image_open_from_data_with_name也被替换成了mono_image_open_from_data_with_name_0.
解密(android):
方法一: ROOT android系统(最好是一部手机,别搞模敬睁肆拟器,慢死), 挂载LD_PRELOAD的API hook来实现.
方法二: 内存特征码提取,简单高效无敌机器能读,你就能读
首先想通过此方樱芹法完全复刻一个游戏工程,这是不可能的 不要想了1、基于il2cpp编译的 目前来轮颂返说虽然可以 但是对于新手还是有点困难的
2、腊饥基于mono编译的 可以把dll文件推到反编译软件比如ilspy即可
可以,80%以上的Unity游戏都根本没做纤森漏代码混淆和资源加密,简直都对不春派起反编译三个字毁烂。直接拿来用就可以。工具的话,看代码用reflector。
资源就是打好包的assetbundle,直接用就好了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)