发表在
原创文章
2014-11-14 10:45:38
|
查看全部
| 阅读模式
应用名字:朋友说要和谐下
应用包名:com.gale.sanguokill.hd
用到工具:Notepad++
Ide
C32asm
Ida和ddms(因为用的朋友的电脑,很多东西都没装,这里就不演示了。)
前言:
这个游戏的支付验证时移动 MM和支付宝的,当修改好支付宝回编打包,运行游戏的时候出现闪退。不修改反而没事,于是想到如何来欺骗它。然后反复试验,成功了。判断这个游戏是so验证dex,dex验证so的一款验证.具体细节可能不太详细,大家看看方法和思路吧。
一.
IDE反编译好之后,我们在项目菜单里面,右键com.gale.sanguokill.hd打开文件夹。复制路径,打开notepad++,ctrl+f搜索classes.dex,在目录上面粘贴路径,全部查找 看看都那些文件调用了classes.dex。图1
http://bbs.pediy.com/attachment.php?attachmentid=91157&thumb=1&d=1406883425
看到了有6个文件调用了classes.dex,只需要关心so,就像前面提到了,这个是SO与dex互相验证.图2.
http://bbs.pediy.com/attachment.php?attachmentid=91158&thumb=1&d=1406883425
打开ide看AndroidManfest.xml启动文件sanguokillactivity,这里调用了libgame.so文件.图3
第一步,到这里结束.
http://bbs.pediy.com/attachment.php?attachmentid=91159&thumb=1&d=1406883425
二.
修改”game”名
未修改:
.method static constructor <clinit>()V
.locals 1
const-string v0, "game"
invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V
return-void
.end method
修改后:
.method static constructor <clinit>()V
.locals 1
const-string v0, "kanxue"
invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V
return-void
.end method
OK,执行下一步.
我们把.apk改成.rar把里面的classes.dex拖出来,修改成lkanxue.ooo,在拖放到里面. 图4
http://bbs.pediy.com/attachment.php?attachmentid=91160&thumb=1&d=1406883425
修改好后,来修改so文件名和so文件里面调用classes.dex文件名的字符.
刚刚提到过,修改so是两个,分别是armeabi和armeabi-v7a里的libgame.so.
拖出来,因为刚刚把dex监听so的名字改成kanxue所以要把libgame.so名字改成libkanxue.so.用c32asm打开libkanxue.so,用十六进制模式,因为不支持反汇编模式打开.
搜索ansi字符串 classes.dex,修改成刚刚外部修改的lkanxue.ooo.图5
http://bbs.pediy.com/attachment.php?attachmentid=91161&thumb=1&d=1406883425
保存,把这个libkanxue.so拖放到armeabi目录里面.图6
http://bbs.pediy.com/attachment.php?attachmentid=91162&thumb=1&d=1406883425
Armeabi-v7a目录下的libgame.so文件和armeabi的一样,就不写了。
然后修改classes.dex文件的内购就不会闪退了
简洁原理:
原文件是1.dex 2.so 复制1.dex 2.so 文件改名为3.dex 4.so
1. dex调用4.so
2. 4so调用3.dex
3.so 还是原来的so
欺骗,欺骗,或者说是狸猫换太子。
OK,教程到这里结束,写的不好,笑笑就好了,别喷我,现在对喷子有阴影了。
文档下载:链接: http://pan.baidu.com/s/1jGurV8M 密码: 123h
|
-
查看全部评分
总评分:
NB +2
荣获致谢 +1
|