首页
社区
课程
招聘
[旧帖] [原创]新的暴力破解方式 0.00雪花
发表于: 2010-3-14 16:01 2726

[旧帖] [原创]新的暴力破解方式 0.00雪花

2010-3-14 16:01
2726
文章作者:龍佑壞蛋
信息来源:龍蛋’Blog(hi.baidu.com/dragoneeg

Author: DragonEgg[MR]&[ESST] 
Date: 2010/03/10.作 
首发:http://hi.baidu.com/dragoneeg/blog/item/cdee4c09b9f3eb3be82488fe.html
    大约两个月前就测试成功了,一直没写,怕是又和上次(DRDOS)一样,被人误会就惨了. 
    一般的暴力破解,是在对比输入码加密后的值与正确值以后,进行强制跳转,验证机制: 
     
…… (假定是我们按下注册按钮之后 注册信息的验证从这里开始)
CALL XXXX0001(这里取注册码长度) 
JEN (不等于软件正确的注册码长度则跳向注册失败) 
…… 
CALL XXXX0002(取软件的机器码——很多软件的注册方式都采取一机一码的形式)
…… 
CALL XXXX0003(看机器码是否为空)
…… 
CALL XXXX0004(其他)
…… 
CALL XXXX0005(其他)

…… 
CALL XXXX0006(算法CALL) 
TEST AL, AL(标志位比较) 
JNE (关键跳转 如果AL标志位为0则跳转) 
…… 
CALL XXXX0007(若上方不跳 则弹出注册成功)
…… 
CALL XXXX0008(向系统写入注册信息)
RETN 
…… 
CALL XXXX0009(软件注册失败) 
…… 
RETN

(验证机制来自于《飘云阁论坛07版破解基础教程》)
而我想到的是,在第一个CALL就跳,也就是不用取得输入值,也不用加密,也不用对比,直接跳到“成功”。验证机制为:
   
…… (假定是我们按下注册按钮之后 注册信息的验证从这里开始)
JMP XXXX0007(这里直接跳转到则弹出注册成功处) 
JEN (不等于软件正确的注册码长度则跳向注册失败) 
…… 
CALL XXXX0002(取软件的机器码——很多软件的注册方式都采取一机一码的形式)
…… 
CALL XXXX0003(看机器码是否为空)
…… 
CALL XXXX0004(其他)
…… 
CALL XXXX0005(其他)

…… 
CALL XXXX0006(算法CALL) 
TEST AL, AL(标志位比较) 
JNE (关键跳转 如果AL标志位为0则跳转) 
…… 
CALL XXXX0007(若上方不跳 则弹出注册成功)
…… 
CALL XXXX0008(向系统写入注册信息)
RETN 
…… 
CALL XXXX0009(软件注册失败) 
…… 
RETN 
表现为:点“注册”就“成功”。这种方式还可以过某种或多种保护。(那次的Crack Me用一般的方法总是不成功,而介绍也说有保护.而这种方法却成功) 不过感觉程序有可能会出错,应该是寄存器里的数据未释放吧?这种方法也可以用来过保护。但我却没出错过。
    不过这方法也许早有人想到吧?却不怎么看见(我是没看见过)

补充:有朋友说这种方法只能过一些简单的保护。 遇到几层算法的就傻眼了。。感觉说的也对。。

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (26)
雪    币: 155
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
虽然还是犹如天书
但大概意思能知道了

入门真难啊
2010-3-14 16:52
0
雪    币: 57
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我糊涂了,一般破解软件就是这样个流程啊
2010-3-14 17:04
0
雪    币: 1981
活跃值: (771)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
4
。。。。。。。。。。。。。
2010-3-14 17:08
0
雪    币: 109
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
天书啊
2010-3-14 18:26
0
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不用比较就强制跳转成功处?
修改第二条指令?
函数都没有调用,会出错
2010-3-14 20:05
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
大致明白意思
2010-3-14 20:10
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
so easy?try one try~
2010-3-14 21:04
0
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
在流程上做手脚就行了么,其实没啥区别
2010-3-14 21:35
0
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
大致明白意思
2010-3-14 21:46
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
研究中、、、、
2010-3-14 22:46
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习,谢谢楼主分享!
2010-3-15 12:08
0
雪    币: 1045
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
多谢楼主 分享  来学习学习
2010-3-15 12:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
来学习破解方式..谢谢
2010-3-15 12:46
0
雪    币: 28
活跃值: (794)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
没怎么明白啊
2010-3-15 12:58
0
雪    币: 100
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
看看。。
2010-3-15 12:58
0
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
所以我后面也写了要释放寄存器内的数据。。要是一般的爆破不成功的话,可以试试这个方法。
2010-3-15 21:50
0
雪    币: 68
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
学习中。谢谢。
2010-3-15 22:05
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
看不明白
2010-3-16 00:05
0
雪    币: 48
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
我一般喜欢修改算法函数,直接修改返回值,比如直接改成
xor eax,eax  或者 mov eax,1
ret
因为很多程序是多次验证,调用同一段算法,这样就一了百了,但实际中发现,有时也可能出错,可能有其他赋值和后面代码有关,这就要进一步分析了
2010-3-16 10:54
0
雪    币: 2568
活跃值: (399)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
出错的机率太大,如用能找到比较,为什么不直接比较后的跳为JMP?
2010-3-16 12:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
在验证算法中加入关键变量的赋值
2010-3-16 16:31
0
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
有的程序有保护。。
2010-3-16 18:34
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
这就是所谓的天书..!    还是钻研基础吧.
2010-3-16 22:50
0
雪    币: 78
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
楼主应该再说明白些
2010-3-17 00:01
0
游客
登录 | 注册 方可回帖
返回
//