首页
课程
问答
CTF
社区
招聘
看雪峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
看雪峰会
看雪商城
证书查询
看雪社区
¥付费问答
发新帖
14
1
[旧帖]
[原创]基于NDK的Android防破解
0.00雪花
2014-10-27 14:23
4123
[旧帖]
[原创]基于NDK的Android防破解
0.00雪花
七剑客
2014-10-27 14:23
4123
Android
程序防破解是发布
app
时一个很需要考虑的问题,通常的做法是对代码加入混淆干扰以增加破解难度。但即便如此,混淆操作之后的java代码仍然可以被通过各种方法进行破解。在基于NDK的Android中含有相应的main.cpp来作为应用程序的入口,因而在这里进行一些防破解较验,相应的破解难度就会增大不少(相对于java代码)。
在Android整个导出过程中,生成.dex阶段是整个打包发布操作的基础,包括相应的java源代码、外部库文件均会被编译链接到.dex文件中,而其中关于代码的任何改动后重新生成.dex,其均会与原始文件均会有所不同,因而就可通过对.dex文件进行MD5较验而做为app是否被破解的依据。对于Android app,dex源码文件安全性是最重要的,因此,这个dex源码加密保护其实很有必要,在这个方面,可以做到的有爱加密这个平台,不同类型的应用也有不同的加密保护方案,详细可以在这里了解:
http://www.ijiami.cn/appprotect_mobile_games
基本流程:
1、打包发布阶段(只进行一次):在打包生成过程得到.dex之后计算该.dex文件的MD5串,并将其写入到NDK工程的main.cpp中,作为最终版本较验的标准串。该过程可以加入到Ant自动化打包发布中,作为生成.dex的后续阶段。
2、动态运行阶段(每次启动进行):在main.cpp的程序启动入口处添加动态的.dex MD5计算,并与代码中存储的标准MD5串进行比较,若两者不匹配则说明程序已经被破解,即刻退出。
阶段1:计算.dex文件的MD5串并将其写入到对应的main.cpp中,相应的ant操作大体如下(并不完整以)。
生成dex对应的MD5,并将其存储到一个文件中:
<target name="predexmd5"depends="dex">
<exe cexecutable="${dexmd5tool}" failonerror="true">
<arg value="${dexmd5tempfile}" />
<arg value="${dex-ospath}"/>
</exec>
</target>
从外部文件中读入相应的MD5串,并存储到一个ANT的变量:
<target name="dexmd5" depends="predexmd5">
<loadfile srcfile="${dexmd5tempfile}"property="dexmd5sign"/>
</target>
将.dex文件的MD5串写入到main.cpp中:
<targetnametargetname="setmaincpp" depends="dexmd5">
<replace file="${maincppfile}"token="Ant_DexMD5Sign" value="${dexmd5sign}"/>
</target>
其中使用的dexmd5tool是一个自实现的外部exe,主要实现对任意文件计算其相应的MD5并将串值保存到一个指定的文件。这里需要MD5串以文件形式进行保存主要是以便在ant中打该文件并读入其中的字符串到ant变量中(并没有找到其它方法直接将相应的MD5码写入到ant变量中去,因而做这样的婉转实现)。将MD5串向main.cpp中写入主要就是利用ant的字符串替换机制来实现即可。
更新完main.cpp之后需要利用NDK对工程进行重新编译(主要是重编译这里有改动的C++代码,该步必须进行)
调用NDKbuikd来完成相应的重编译工作:
<targetnametargetname="ndkbuild" depends="setmaincpp">
<exec executable="${basedir}/ndkbuild.bat" failonerror="true">
</exec>
</target>
Ndkbuild.bat中的相关内容即如同Eclipse中配置的编译参数一样:
X:/cygwin/bin/bash.exe --login -c "cd/cygdrive/XXX/XXX/Android/jni && $NDK/ndk-build"
阶段2:对dex计算相应的MD5并在main.cpp中进行启动时较验。
这里需要在app每次启动运行中动态得到当前apk包中的.dex文件并进行MD5的计算与较验。这里直接实现并不太容易,因而借助于了一个第三方包libzip,它可以以.so的形式链入到NDK工程中,并将指定的zip包(apk包)解压缩,将其中的所有文件以二进制的方式返回。如此一来就可以运行时得到当前apk包的dex的二进制流;将计算binary的MD5代码也一并加入到该工程中即可以完成在main.cpp中启动时动态较验.dex的MD5值。
若当前apk包中的.dex文件MD5码与main.cpp中存储的MD5码(阶段1得到)匹配,程序合法运行;否则,较验不通过认为已经被修改过,直接退出。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
收藏
・
14
点赞
・
1
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
最新回复
(
13
)
银翼魔术师
雪 币:
1
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
0
回帖
1
粉丝
0
关注
私信
银翼魔术师
2014-10-29 17:22
2
楼
0
涨知识了
七剑客
雪 币:
8
活跃值:
(25)
能力值:
( LV3,RANK:20 )
在线值:
发帖
14
回帖
52
粉丝
0
关注
私信
七剑客
2014-11-1 10:34
3
楼
0
恩,好好学习!
kanxue
雪 币:
32406
活跃值:
(18795)
能力值:
(RANK:350 )
在线值:
发帖
1826
回帖
15216
粉丝
487
关注
私信
kanxue
8
2014-11-2 12:08
4
楼
0
你kx够,可以自行购买邀请码转正。
小强!
雪 币:
205
活跃值:
(27)
能力值:
( LV2,RANK:10 )
在线值:
发帖
12
回帖
73
粉丝
0
关注
私信
小强!
2014-11-2 18:41
5
楼
0
谢谢你的原创
我转发了,已带上你名字.
烟草者
雪 币:
119
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
2
回帖
78
粉丝
0
关注
私信
烟草者
2014-11-3 21:08
6
楼
0
很不错拜读
heartbeast
雪 币:
59
活跃值:
(185)
能力值:
( LV3,RANK:20 )
在线值:
发帖
14
回帖
101
粉丝
0
关注
私信
heartbeast
2014-11-4 10:19
7
楼
0
这个也很容易破啊,我修改dex后,自己算一个MD5,把你存储的MD5串也改了不就行了
Ethernet
雪 币:
203
活跃值:
(169)
能力值:
( LV2,RANK:10 )
在线值:
发帖
14
回帖
139
粉丝
0
关注
私信
Ethernet
2014-11-4 10:39
8
楼
0
矛和盾的来往,从破解角度来讲,现在分析so也不是什么难事。
kxlife
雪 币:
37
活跃值:
(10)
能力值:
( LV2,RANK:10 )
在线值:
发帖
3
回帖
7
粉丝
0
关注
私信
kxlife
2014-11-4 13:53
9
楼
0
只是让破解麻烦一些,多花些时间,难倒初级破解者
地狱怪客
雪 币:
339
活跃值:
(133)
能力值:
( LV7,RANK:110 )
在线值:
发帖
23
回帖
1142
粉丝
8
关注
私信
地狱怪客
2
2014-11-6 09:22
10
楼
0
楼主 醒醒 可以转正了~
七剑客
雪 币:
8
活跃值:
(25)
能力值:
( LV3,RANK:20 )
在线值:
发帖
14
回帖
52
粉丝
0
关注
私信
七剑客
2014-11-6 09:39
11
楼
0
谢谢提醒,怎么转正!
七剑客
雪 币:
8
活跃值:
(25)
能力值:
( LV3,RANK:20 )
在线值:
发帖
14
回帖
52
粉丝
0
关注
私信
七剑客
2014-11-6 09:40
12
楼
0
ok,也谢谢你转发!
七剑客
雪 币:
8
活跃值:
(25)
能力值:
( LV3,RANK:20 )
在线值:
发帖
14
回帖
52
粉丝
0
关注
私信
七剑客
2014-11-6 09:42
13
楼
0
文章达到优秀不是可以直接转正,不用购买邀请码了吧!
七剑客
雪 币:
8
活跃值:
(25)
能力值:
( LV3,RANK:20 )
在线值:
发帖
14
回帖
52
粉丝
0
关注
私信
七剑客
2014-11-6 09:45
14
楼
0
感谢!
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
七剑客
14
发帖
52
回帖
20
RANK
关注
私信
他的文章
[原创]爱加密APP竞品分析上线,一键帮你分析竞品动态
5788
[活动结束]爱加密年终三重风暴:有安全有肾6,果断要任性!
15393
[原创]最值得学习阅读的10个C语言开源项目代码
17266
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
返回
顶部