首页
社区
课程
招聘
[原创]android程序破解练习初级
发表于: 2012-7-12 13:32 58370

[原创]android程序破解练习初级

2012-7-12 13:32
58370

方法一:暴力破解

文件名:KeygenMe#1.apk
工具:ApktoolGui v2.0 Final

主界面:

点击Activate按钮后出来注册提示框:


开工了,先用ApktoolGui v2.0 Final反编译成java
通过查看AndroidManifest.xml文件,找到主Activity:Com.zAWS.KeygenMe.main,查看主Activity处的代码,找到_check_code()函数


光看函数名称就能猜到是判断注册码正确性了。
其对应的smali代码为

将if-eqz改为if-nez重新编译,安装运行。OK,


方法二:分析算法,写注册机

文件名:crackme0a.apk
工具:ApktoolGui v2.0 Final
破解前:

先用ApktoolGui v2.0 Final反编译成java源代码


就一个main文件,很简单。
查看代码中的点击按钮事件

发现判断语句,找到validateSerial()方法

顺藤摸瓜,发现核心算法在这里

其中getMobileID()方法是获取手机的DeviceId即IMEI号


注册码的生成就是通过获取手机的IMEI号经MD5加密等一系列处理得来的。好了,根据上面的核心算法编写注册代码(由于我用的模拟器实验的,所以IMEI为15个0):


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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (46)
雪    币: 118
活跃值: (106)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
文件1: KeygenMe#1.rar
文件2: crackme0a.apk
谁能写出第一个的注册码?貌似要读取一个txt文件,反正我没有找到
上传的附件:
2012-7-12 13:35
0
雪    币: 118
活跃值: (106)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=pc小波;1086840]文件1: KeygenMe#1.rar
文件2: crackme0a.apk
谁能写出第一个的注册码?貌似要读取一个txt文件,反正我没有找到。[/QUOTE]

或许人家就是让你直接修改跳转吧
2012-7-12 16:09
0
雪    币: 1413
活跃值: (401)
能力值: (RANK:270 )
在线值:
发帖
回帖
粉丝
4
正想问这个keygenme是谁写的,然后在界面上看到了lohan的大名。。
2012-7-12 21:41
0
雪    币: 118
活跃值: (106)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
是啊,Lohan大牛啊
2012-7-13 09:12
0
雪    币: 16112
活跃值: (3651)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
好文,收藏.

正在学习 Android 中.
2012-7-13 11:01
0
雪    币: 27
活跃值: (127)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
7
想学但精力不够
2012-7-13 11:50
0
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不错,可以学习下!
2012-7-13 12:02
0
雪    币: 118
活跃值: (106)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
9
请多多指教
2012-7-14 20:35
0
雪    币: 204
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
谢谢分享,下载练手
2012-7-20 16:08
0
雪    币: 317
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
11
今天分析了一下KeygenMe#1.apk注册算法,如下所示:
IMEI:001022000282312

1. key0 = (IMEI每个数字的和 * 23)& 15
         =  1

2 取前5位和后5位构成str3 =“0010282312”
   取前5位和后4位并在添加“-”构成str4=“00102231-2”

key1 = _calcaulate_codes(str3);
key2 = _calcaulate_codes(str4);
这个_calcaulate_codes算法就是根据一个25个元素的数组所指示的方式对每一个输入字符进行计算并累加,
我这里的计算结果就是
key1 = “04934”
key2 = “60330”

3
注册码 = key2+key0+key1
            = 60330104934
进入注册界面,输入注册码,提示需要重启验证,重启后成功

注意:
注册码必须是11位,程序会将注册码使用DES加密后放到/data/data/Com.zAWS.KeygenMe/files/key.txt文件中。
2012-7-30 22:20
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
波哥 你好  我是新手,
一开始开工
我按照那个v2.0的教程
操作是先把这个Apk改成zip
然后解压zip得到class.dex
然后dex->jar
这都没问题
可是到了最后
jar->java时,我按了jar->java   之后ApkTool  v2.0提示预处理Jar 然后没反应了
为什么?
2012-9-29 22:45
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
刚仔细看了看这个V2.0  现在搞定了  原来是在隐藏工具里看jar...
2012-9-29 23:27
0
雪    币: 98745
活跃值: (201039)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
14
Thanks for share.
2012-10-2 15:24
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
mark!!!!!!!!!!!!1
2012-10-16 09:48
0
雪    币: 36
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
学习了,谢谢楼主分享
2012-11-15 13:13
0
雪    币: 80
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
厉害啊,为什么看你们分解之后我看起来完全能懂,也觉得不难,但是一旦自己开始全新开始一个分解,就觉得无从下手?
2012-11-28 08:37
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
膜拜,小白路过,一直想去掉游览器的升级通知,uc,欧朋,扣扣,不知道还该怎么做。
2012-12-3 14:36
0
雪    币: 229
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
19
小波终于出自己的文章了,有点水平的文章了.
2012-12-3 15:07
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
好玩 ,看一下 哈哈
2012-12-6 15:42
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
看了之后我对我写的软件很担心了!求帮助
2013-1-5 18:02
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
将if-eqz改为if-nez重新编译?想问这样改是啥意思呢
2014-3-5 23:22
0
雪    币: 11
活跃值: (80)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
收藏之,以后试试
2014-3-6 09:09
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
好东西。
2014-3-9 21:17
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
mark!!!!!!!!!!!!1
2014-3-22 17:59
0
游客
登录 | 注册 方可回帖
返回
//