上周主要在弄android下的so文件注入和函数hook
起初想法很简单,美术同学跟我说,想借鉴几个手游的资源,一开始是最初级的搞法,iap,apk统统改成zip,解压吧,还真有一些游戏资源是没有加密的,爽歪歪。
然后就是有一些游戏,加了密,没办法,破解那块不熟,搜吧。
http://blog.csdn.net/ynnmnm/article/details/38392795 这篇文章引起了我的注意,可惜没写具体的方法,但是对大体流程有了了解。
再继续找吧找吧,http://blog.csdn.net/jinzhuojun/article/details/9900105 就是这篇啦,代码,过程,很详细,试试手。
基本上跟着流程走,没有什么问题,只是中途adb push的时候要有写权限。
注入很快就成功了。
接下来就是hook函数啦,我不想hook例子中的opengl中的函数,而是把我们项目的libgame.so给adb push上去,看能不能,把资源弄出来,因为我们资源也是加密了的。
按照上面两篇文章的介绍,关键点在got表,这个东西保存了一个调用外部函数的跳转信息,举个例子,libgame.so调用了uncompress函数,而后者是在libz.so里面,就hook这个函数试试,把代码随便改改,就能跑起来了。
我稍微把例子中的代码封装了一下,以参数的形式传进去:要hook的进程,在哪个的got表里面找,要注入的so路径。
一切就绪,开搞。
很快uncompress函数就hook上了
由于用的都是开源的cocos2dx,手上都有代码,想怎么样弄出资源,断点了,跟着流程走吧。
实在不行就hook opengl的库函数,毕竟所有纹理数据都要送到它那里去