encrypt apk

在Windows下使用Cygwin尝试了下,没成功

在Mac下走通的流程


主要参考了

http://www.xuanyusong.com/archives/3553

http://www.luzexi.com/unity3d-%E9%87%8D%E6%96%B0%E7%BC%96%E8%AF%91mono%E5%8A%A0%E5%AF%86dll/

感谢作者的分享


1、下载 https://github.com/Unity-Technologies/mono/tree/unity-4.6 


2、在Mac下安装 brew 
( see : http://www.cnblogs.com/easonoutlook/p/3156623.html)

Homebrew依赖于XCode,首先需要安装,lion后XCode也是免费的了,直接到App store下载。同时Homebrew也依赖ruby,Mac已经自带ruby。

1
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

3、下载编译mono的依赖项
autoconf
automake
libtool
pkg-config


4、下载NDK
https://dl.google.com/android/ndk/android-ndk-r9-darwin-x86_64.tar.bz2


5、拷贝编译脚本
mono源代码/externals/buildscripts/build_runtime_andrord.sh
mono源代码/externals/buildscripts/build_runtime_andrord_x86.sh
mono源代码/目录


6、反复运行脚本,调试各种错误
*建议使用x86来上手
*有各种路径配置的小坑
*所有问题都是配置问题
*善于利用config.log排查问题


7、修改成release版本,屏蔽 arm5和arm6的编译流程
*CFLAGS里的-g 改成 -O2
*增加 -Wl, -gc--sections


以上都是编译mono,在这步完成之后,就简单了。

8、利用APKTool 解包, 替换两个架构的 libmono.so ,再打回去。


9、这样自定义的mono就打好了。

关于加密:
由于一些原因,不能写的很详细,大思路可以说一下。
首先你需要有以下能力:
1、加密文件流的工具
2、解密文件流的函数(C语言)

处理下解出来的游戏的dll,加好密
利用mono载入image的函数作为数据源,写一个反向的解密流程。
然后dll就无法直接被ILSpy这种东西打开了。

我自己是用python做的加密工具,然后再写的配套c语言解密流程
这两个语言在数据类型、升值、截断、初值、宏定义、这些方面的差异,坑了我整整一天 T_T.

运气在这个过程中很重要,我测试x86脚本在排除了各种配置问题后,一次成功。另外一个同事则在编译阶段出现了问题。
可能是因为使用的依赖库版本不一致。
遇到问题了,就紧扣config.log,哪里有错改哪里。
本质上只是利用gcc编译so, 只是以前从来没搞过,所以刚上手会很头大。

may the force be with you!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值