首页
社区
课程
招聘
[原创]DIY Hex Workshop 4.0
发表于: 2005-9-10 16:30 8320

[原创]DIY Hex Workshop 4.0

2005-9-10 16:30
8320
破解工具:OD 1.1汉化版 WDasm
破解对象:Hex workshop 4.0
破解目的:技术爱好,方便个人使用
软件简介:HexWorkshop为功能较为强大的二进制文件编辑工具,此版本为4.00版,使用期限为35天,随后有10天的购买期

  这是小弟发上来的第一个帖子,一直在申请看雪的ID,等了一周才把注册的邮件地址更换成功,好容易可以和板子上的牛人用文字交流啦。真的好开心!:)。Hex workshop 是大多cracker都会接触到的文件修改工具,小菜鸟在入门阶段攻克的几个软件时,修改文件都是用的Hiewdemo。这次调出原来crack掉的文件想看看自己都修改了那些地方,发现Hex的comp功能还是挺方便的。运行Hex,晕,居然要注册,虽然自己不大用它,但在自己电脑上很难容忍出现注册提示框字样。呵呵,看样子又要拿起自己的手术刀给他动动手术了。

     察看执行文件hworks32.exe,无壳,VC编译。用OD载入,运行正常,呵呵,初步断定该程序没有反调试检测功能。接下来就是找到程序的关键点,看看能不能看到注册码或者修改跳转直接注册成功了。本人一向不大愿意跟踪软件的算法,尽管我对于能够写出一个软件注册机的牛人是由衷的敬佩。从解过的几个软件来看,无论是狗保护的还是注册码保护的软件,都可以通过修给特定的地方达到暴力破解的目的。(仅针对特定软件哦,不要认为所有的都可以,要不然有人要骂我误导看客啦,:))跟踪软件作者算法我觉得是很费力不讨好的事情,而且很多算法往往不是个人能够短时间吃透搞定的,不如直接越过算法来的简洁明了。当然这种方式也有它很大的局限性,比如没有找到关键地方可能就会造成软件运行异常,或者破解不全,运行不稳定等等问题。

     找到软件关键的地方在于正确的下断点。通过Wdasm查找注册失败对话框的提示字符串,晕!居然没有。现在很多软件都把这些信息加密,或者放在链接库中了。本程序就是放在链接库中验证注册码的,当然这是后话啦。随后我考虑在Od中针对字符串比较函数,字符提取函数,对话框函数,Messagebox函数下断,在输入注册信息后,软件都能顽固的给出注册失败的提示信息。晕倒,看样子要卡壳了。嘿嘿,大虾请勿见笑,为了下断,我连窗口工具都用上了,主要是前面都用得SIce,这两天才转到OD上来,很多方法还在尝试,总之就是断不下来。

     天无绝人之路,我发现点击注册按钮后,程序会MMJJ的算半天才出现出错对话框,呵呵 ,看样子算个注册码它还挺吃力的。好了,就钻这个空子。在点击注册按钮后,迅速切换到Od,按下F12让程序停住,运气好的话你会停在bpsregwd.dll中的代码10002DE1处,如果停在Ntdll(笔者用得xp系统)中也没关系,往下运行几条代码就到了 。好了 ,我们断在注册码验证代码之前或者之后了,总之还没有出现出错的对话框。往下跟跟,呵呵 运行到10002e1c出调用10002288函数,随后就发生判断了,可以发现这儿就是关键的验证注册码的地方。试着改改跳转,让他不跳。随便输入注册信息,呵呵,注册正确的提示框出现了!搞定?别高兴太早,重起Hex,你会发现依然是评估版本。看样子我们要跟入验证函数看看了。以下是关键的代码段,贴出来供大家参考。

bpsregwd.dll中的代码:
10002288               55                             push ebp
10002289               8BEC                           mov ebp,esp
1000228B               81EC C4010000                  sub esp,1C4
10002291               53                             push ebx
10002292               8D45 F8                        lea eax,dword ptr ss:[ebp-8]
10002295               56                             push esi
10002296               50                             push eax
10002297               E8 68B00000                    call bpsregwd.1000D304
1000229C               6A 02                          push 2
1000229E               8D45 F6                        lea eax,dword ptr ss:[ebp-A]
100022A1               5E                             pop esi
100022A2               50                             push eax
100022A3               8D45 FE                        lea eax,dword ptr ss:[ebp-2]
100022A6               50                             push eax
100022A7               8D45 F7                        lea eax,dword ptr ss:[ebp-9]
100022AA               50                             push eax
100022AB               8D45 F0                        lea eax,dword ptr ss:[ebp-10]
100022AE               50                             push eax
100022AF               8D45 FF                        lea eax,dword ptr ss:[ebp-1]
100022B2               50                             push eax
100022B3               8D45 EC                        lea eax,dword ptr ss:[ebp-14]
100022B6               50                             push eax
100022B7               8D45 E8                        lea eax,dword ptr ss:[ebp-18]
100022BA               50                             push eax
100022BB               FF75 20                        push dword ptr ss:[ebp+20]
100022BE               E8 A0FCFFFF                    call bpsregwd.10001F63                          //此处可以跟入察看一下
100022C3               83C4 20                        add esp,20
100022C6               84C0                           test al,al
100022C8               0F84 8D010000                  je bpsregwd.1000245B                              ; 不跳 nop
100022CE               8B45 0C                        mov eax,dword ptr ss:[ebp+C]
100022D1               3845 FF                        cmp byte ptr ss:[ebp-1],al
100022D4               0F85 7E010000                  jnz bpsregwd.10002458                              ; 不跳 nop
100022DA               8B75 10                        mov esi,dword ptr ss:[ebp+10]
100022DD               3975 F0                        cmp dword ptr ss:[ebp-10],esi
100022E0               0F8C 72010000                  jl bpsregwd.10002458
100022E6               8D8D 3CFEFFFF                  lea ecx,dword ptr ss:[ebp-1C4]
100022EC               51                             push ecx
100022ED               FF75 F0                        push dword ptr ss:[ebp-10]
100022F0               50                             push eax
100022F1               FF75 08                        push dword ptr ss:[ebp+8]
100022F4               E8 B7F7FFFF                    call bpsregwd.10001AB0
100022F9               83C4 10                        add esp,10
100022FC               33DB                           xor ebx,ebx
100022FE               84C0                           test al,al
10002300               75 15                          jnz short bpsregwd.10002317
10002302               68 AC010000                    push 1AC
10002307               8D85 3CFEFFFF                  lea eax,dword ptr ss:[ebp-1C4]
1000230D               53                             push ebx
1000230E               50                             push eax
1000230F               E8 4C1E0000                    call bpsregwd.10004160
10002314               83C4 0C                        add esp,0C
10002317               FF75 20                        push dword ptr ss:[ebp+20]
1000231A               8D85 3CFEFFFF                  lea eax,dword ptr ss:[ebp-1C4]
10002320               50                             push eax
10002321               E8 2A150000                    call bpsregwd.10003850
10002326               FF75 18                        push dword ptr ss:[ebp+18]
10002329               8D85 5CFEFFFF                  lea eax,dword ptr ss:[ebp-1A4]
1000232F               50                             push eax
10002330               E8 1B150000                    call bpsregwd.10003850
10002335               FF75 1C                        push dword ptr ss:[ebp+1C]
10002338               8D85 ACFEFFFF                  lea eax,dword ptr ss:[ebp-154]
1000233E               50                             push eax
1000233F               E8 0C150000                    call bpsregwd.10003850
10002344               83C4 18                        add esp,18
10002347               8D85 FCFEFFFF                  lea eax,dword ptr ss:[ebp-104]
1000234D               FF75 E8                        push dword ptr ss:[ebp-18]
10002350               68 C0B10110                    push bpsregwd.1001B1C0                   ; ASCII "%06d"
10002355               50                             push eax
10002356               E8 60160000                    call bpsregwd.100039BB
1000235B               FF75 08                        push dword ptr ss:[ebp+8]
1000235E               8D85 1CFFFFFF                  lea eax,dword ptr ss:[ebp-E4]
10002364               50                             push eax
10002365               E8 E6140000                    call bpsregwd.10003850
1000236A               8B45 EC                        mov eax,dword ptr ss:[ebp-14]
1000236D               83C4 14                        add esp,14
10002370               385D FE                        cmp byte ptr ss:[ebp-2],bl
10002373               8985 3CFFFFFF                  mov dword ptr ss:[ebp-C4],eax
10002379               8B45 14                        mov eax,dword ptr ss:[ebp+14]
1000237C               8985 64FFFFFF                  mov dword ptr ss:[ebp-9C],eax
10002382               74 65                          je short bpsregwd.100023E9                            ; 跳 EB65
10002384               399D 4CFFFFFF                  cmp dword ptr ss:[ebp-B4],ebx
1000238A               6A 01                          push 1
1000238C               58                             pop eax
1000238D               8985 40FFFFFF                  mov dword ptr ss:[ebp-C0],eax
10002393               0F85 99000000                  jnz bpsregwd.10002432
10002399               8985 48FFFFFF                  mov dword ptr ss:[ebp-B8],eax
1000239F               8985 4CFFFFFF                  mov dword ptr ss:[ebp-B4],eax
100023A5               8B45 F8                        mov eax,dword ptr ss:[ebp-8]
100023A8               51                             push ecx
100023A9               8985 54FFFFFF                  mov dword ptr ss:[ebp-AC],eax
100023AF               8985 58FFFFFF                  mov dword ptr ss:[ebp-A8],eax
100023B5               8BC4                           mov eax,esp
100023B7               899D 44FFFFFF                  mov dword ptr ss:[ebp-BC],ebx
100023BD               C785 50FFFFFF 0F000000         mov dword ptr ss:[ebp-B0],0F
100023C7               8D4D F8                        lea ecx,dword ptr ss:[ebp-8]
100023CA               C700 80C61300                  mov dword ptr ds:[eax],13C680
100023D0               E8 16070000                    call bpsregwd.10002AEB
100023D5               8B45 F8                        mov eax,dword ptr ss:[ebp-8]
100023D8               56                             push esi
100023D9               FF75 0C                        push dword ptr ss:[ebp+C]
100023DC               8985 5CFFFFFF                  mov dword ptr ss:[ebp-A4],eax
100023E2               E8 62F5FFFF                    call bpsregwd.10001949
100023E7               EB 47                          jmp short bpsregwd.10002430
100023E9               8B45 F8                        mov eax,dword ptr ss:[ebp-8]
100023EC               838D 50FFFFFF FF               or dword ptr ss:[ebp-B0],FFFFFFFF
100023F3               56                             push esi
100023F4               899D 40FFFFFF                  mov dword ptr ss:[ebp-C0],ebx
100023FA               FF75 0C                        push dword ptr ss:[ebp+C]
100023FD               899D 44FFFFFF                  mov dword ptr ss:[ebp-BC],ebx
10002403               899D 48FFFFFF                  mov dword ptr ss:[ebp-B8],ebx
10002409               C785 4CFFFFFF 01000000         mov dword ptr ss:[ebp-B4],1
10002413               8985 54FFFFFF                  mov dword ptr ss:[ebp-AC],eax
10002419               8985 58FFFFFF                  mov dword ptr ss:[ebp-A8],eax
1000241F               8985 5CFFFFFF                  mov dword ptr ss:[ebp-A4],eax
10002425               899D 60FFFFFF                  mov dword ptr ss:[ebp-A0],ebx
1000242B               E8 80F5FFFF                    call bpsregwd.100019B0
10002430               59                             pop ecx
10002431               59                             pop ecx
10002432               8D85 3CFEFFFF                  lea eax,dword ptr ss:[ebp-1C4]
10002438               50                             push eax
10002439               56                             push esi
1000243A               FF75 0C                        push dword ptr ss:[ebp+C]
1000243D               FF75 08                        push dword ptr ss:[ebp+8]
10002440               E8 7EF8FFFF                    call bpsregwd.10001CC3
10002445               83C4 10                        add esp,10
10002448               F6D8                           neg al
1000244A               1BC0                           sbb eax,eax
1000244C               80E4 FE                        and ah,0FE
1000244F               05 01010000                    add eax,101
10002454               8BF0                           mov esi,eax
10002456               EB 03                          jmp short bpsregwd.1000245B
10002458               6A 05                          push 5
1000245A               5E                             pop esi
1000245B               8BC6                           mov eax,esi
1000245D               5E                             pop esi
1000245E               5B                             pop ebx
1000245F               C9                             leave
10002460               C3                             retn

  笔者试着深入跟进了几个函数,想找到正确的注册码,转了几次头晕了,呵呵呵,功力有限,有待继续修炼。依照上面的代码跳转情况,联系程序中的文字提示,可以很快试出正确的验证流程。有趣的是深入改掉几个跳转,虽然不能注册成功,却可以延长试用的期限,嘿嘿,由于我没有做流程记录,自己也不知道改哪儿了,:),有兴趣的大家可以shishi。不过不要一开始就用我给的跳转方法哦,注册成功了,你就再也找不到注册的按钮了,想再进来看看流程都不行,我想这时候bpsregwd.dll文件也完成了他的使命,没什么作用了。:),推测而已,没有验证。你可以把它删除看看,哈哈!
总结:今天刚刚发现最新版的Hex workshop都有注册机了,放上来不是为了大家用这个软件有多大用处。我想更多的是介绍一下下断点的方法和分享破解软件的一些思路吧,期待与大家一块儿进步!:)

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 108
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
发错地方?
2005-9-10 17:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
最初由 闪电狼 发布
发错地方?

没有吧,这也算是推荐个工具啊,请教大虾应该放在哪儿呢?:)
2005-9-10 17:41
0
雪    币: 1264
活跃值: (612)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
你不如把它做出来。算啦。不是每个人都向你这样的水平。
菜鸟一个。但喜欢这样的文章。
2005-9-10 19:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 dfui 发布
你不如把它做出来。算啦。不是每个人都向你这样的水平。
菜鸟一个。但喜欢这样的文章。

没看懂,说的够清楚了吧。刚刚试了试最新版的,呵呵,用旧版的注册后,卸载了再装新版的也不用注册啦 。看样子这个还支持升级哦!:)
2005-9-10 21:22
0
雪    币: 214
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
支持一下!
2005-9-11 19:44
0
游客
登录 | 注册 方可回帖
返回
//