首页
社区
课程
招聘
[原创]so与dex互验证欺骗.
发表于: 2014-8-1 17:02 17544

[原创]so与dex互验证欺骗.

2014-8-1 17:02
17544
应用名字:朋友说要和谐下

应用包名: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

看到了有6个文件调用了classes.dex,只需要关心so,就像前面提到了,这个是SO与dex互相验证.图2.

打开ide看AndroidManfest.xml启动文件sanguokillactivity,这里调用了libgame.so文件.图3
第一步,到这里结束.

二.
修改”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

修改好后,来修改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

保存,把这个libkanxue.so拖放到armeabi目录里面.图6

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

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 29
活跃值: (499)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
2
沙发就由我来坐了!
个人感觉本地验证的强度都不大,如果搞一个网络验证的话,就会麻烦点~
2014-8-1 17:11
0
雪    币: 507
活跃值: (140)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
先赞一下,思路不错~
最好直接对so进行分析,然后直接去掉那里的验证,更省事了就~

--------------
2014-8-1 17:12
0
雪    币: 67
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
朋友说的对~~~
2014-8-1 17:13
0
雪    币: 0
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
只是用这个应用提供下思路
2014-8-1 17:15
0
雪    币: 0
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
恩,你说的这个可以,但是网络验证比较麻烦,只要目的达到不是就好了。提供下思路
2014-8-1 17:17
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
验证这种东西嘛。 跟Windows 平台是一样一样的。 都可以破掉。 未来估计随着CPU性能上升,又继续掉入VM的坑
2014-8-1 17:18
0
雪    币: 507
活跃值: (140)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
嗯....
2014-8-1 17:58
0
雪    币: 4
活跃值: (801)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
大牛 发了一个帖子,立马转正..膜拜
2014-8-1 22:36
0
雪    币: 427
活跃值: (64)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
不错的方法 支持一下
2014-8-2 19:09
0
雪    币: 250
活跃值: (251)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
思路很nice阿
2014-8-4 18:11
0
雪    币: 28
活跃值: (126)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
好文也,学习。
2015-8-17 20:15
0
雪    币: 27
活跃值: (354)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习了,这个方法可以举一反三。感谢楼主分享经验。
2015-8-17 21:05
0
游客
登录 | 注册 方可回帖
返回
//