首页
社区
课程
招聘
[原创]新手的第一篇破文
发表于: 2006-7-28 23:21 7785

[原创]新手的第一篇破文

jdxyw 活跃值
19
2006-7-28 23:21
7785

【文章标题】: 新手的第一篇破文
【文章作者】: jdxyw
【作者邮箱】: jdxyw2004@163.com
【软件名称】: abexcm5.exe
【软件大小】: 8kb
【下载地址】: 可能搜索不到,不知哪位有上传权限的联系我,我把软件发给你,你帮我上传吧!谢谢!
【加壳方式】: 无
【编写语言】: MASM
【使用工具】: W32Dasm,PEiD
【操作平台】: XP
【作者声明】: 这真是个很简单的crack,也是我第一次做,有做的不好的地方,请大家多多指教。
--------------------------------------------------------------------------------
【详细过程】
  首先,用PEiD查看,知道这是个无壳的用MASM编写的。
  
  再就是运行一下这个软件,随便输入个序列号,check后,弹出一个出错对话框。看来我们即可以从字符串下手,也可以
  从API函数入手了。
  
  运行W32Dasm,将crack载入,查看函数输入和字符串参考,我们首先转到"The serial you entered is not "
  所在的行数,从这个行数往上,可以发现有连续三个字符串操作的函数,可以猜想,上面应该是序列号
  生成代码了。再往上看,发现一个函数GetVolumeInformationA,这是一个获取机器信息的API函数。我们可以猜想
  ,序列号是与硬件有关的,也就是说,这个软件的序列号在不同的机器上是不同的。(但似乎好像没用上,请各位
  指教下)下面是相关代码
  
  
  * Reference To: KERNEL32.GetVolumeInformationA, Ord:0000h
                                    |
  :00401099 E8B5000000              Call 00401153         调用GetVolumeInformationA函数,获取机器信息
  
  * Possible StringData Ref from Data Obj ->"4562-ABEX"
                                    |
  :0040109E 68F3234000              push 004023F3         将4562-ABEX压栈
  :004010A3 685C224000              push 0040225C         将一个指向0040225C的缓冲区压栈,用来接受lstrcatA返回值
  
  * Reference To: KERNEL32.lstrcatA, Ord:0000h
                                    |
  :004010A8 E894000000              Call 00401141
  :004010AD B202                    mov dl, 02              循环计数为两次
  
  * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  |:004010CD(C)
  |
  :004010AF 83055C22400001          add dword ptr [0040225C], 00000001   前个字符串的第一位加上一位
  :004010B6 83055D22400001          add dword ptr [0040225D], 00000001   前个字符串的第二位加上一位
  :004010BD 83055E22400001          add dword ptr [0040225E], 00000001   前个字符串的第三位加上一位
  :004010C4 83055F22400001          add dword ptr [0040225F], 00000001   前个字符串的第四位加上一位
  :004010CB FECA                    dec dl
  :004010CD 75E0                    jne 004010AF                      经过两次后4562-ABEX变成6784-ABEX
  
  * Possible StringData Ref from Data Obj ->"L2C-5781"
                                    |
  :004010CF 68FD234000              push 004023FD     将L2C-5781压栈
  :004010D4 6800204000              push 00402000     将一个指向00402000的缓冲区压栈,用来接受lstrcatA返回值
  
  * Reference To: KERNEL32.lstrcatA, Ord:0000h
                                    |
  :004010D9 E863000000              Call 00401141
  :004010DE 685C224000              push 0040225C    将6784-ABEX压栈
  :004010E3 6800204000              push 00402000    将一个指向00402000的缓冲区压栈,用来接受lstrcatA返回值
  
  * Reference To: KERNEL32.lstrcatA, Ord:0000h       结果是组成了一个新的字符串L2C-57816784-ABEX
                                    |
  :004010E8 E854000000              Call 00401141
  :004010ED 6824234000              push 00402324    将你输入的序列号压栈
  :004010F2 6800204000              push 00402000    将新字符串压栈
  
  * Reference To: KERNEL32.lstrcmpiA, Ord:0000h
                                    |
  :004010F7 E851000000              Call 0040114D       比较两个字符串
  :004010FC 83F800                  cmp eax, 00000000    相当跳转
  :004010FF 7416                    je 00401117
  :00401101 6A00                    push 00000000
  
  * Possible StringData Ref from Data Obj ->"Error!"
                                    |
  :00401103 6834244000              push 00402434
  
  * Possible StringData Ref from Data Obj ->"The serial you entered is not "
                                          ->"correct!"
                                    |
  :00401108 683B244000              push 0040243B
  :0040110D FF7508                  push [ebp+08]
  
  * Reference To: USER32.MessageBoxA, Ord:0000h
                                    |
  :00401110 E856000000              Call 0040116B
  :00401115 EB16                    jmp 0040112D
  
  * Referenced by a (U)nconditional or (C)onditional Jump at Address:
  |:004010FF(C)
  |
  :00401117 6A00                    push 00000000
  
  * Possible StringData Ref from Data Obj ->"Well Done!"
                                    |
  :00401119 6806244000              push 00402406
  
  * Possible StringData Ref from Data Obj ->"Yep, you entered a correct serial!"
                                    |
  :0040111E 6811244000              push 00402411
  :00401123 FF7508                  push [ebp+08]
  
  * Reference To: USER32.MessageBoxA, Ord:0000h
  
  由上面可知,序列号为L2C-57816784-ABEX。
  第一次,希望大家多多指教,指出不足。
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2006年07月28日 23:19:40


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

上传的附件:
收藏
免费 7
支持
分享
最新回复 (15)
雪    币: 333
活跃值: (11)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
2
没人帮我上传文件吗?
2006-7-29 09:46
0
雪    币: 433
活跃值: (176)
能力值: ( LV13,RANK:1250 )
在线值:
发帖
回帖
粉丝
3
MASM写的?发给我看看,我试试能否把它还原成源代码。
2006-7-29 11:34
0
雪    币: 370
活跃值: (78)
能力值: ( LV9,RANK:970 )
在线值:
发帖
回帖
粉丝
4
下次可以上传了。
2006-7-29 14:02
0
雪    币: 333
活跃值: (11)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
5
文件已经上传了。大家多指教
2006-7-29 16:01
0
雪    币: 443
活跃值: (200)
能力值: ( LV9,RANK:1140 )
在线值:
发帖
回帖
粉丝
6
以前在这里就看过了!!
但还是支持楼主!!
2006-7-29 16:58
0
雪    币: 338
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
不错.练习一下!
2006-7-29 17:21
0
雪    币: 333
活跃值: (11)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
8
以前就有这篇吗?不好意思啊! 我不知道
2006-7-29 17:29
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
用 W32Dasm 破的,??,支持!
2006-7-30 10:31
0
雪    币: 230
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
思路清晰,步骤明了,学习中。。。。
2006-7-31 08:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我是菜鸟~~
学习一下
2006-7-31 13:45
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
学习中,不错,支持!!!
2006-8-6 10:11
0
雪    币: 214
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
13
支持一下,用OD相对容易些;

另外,注册码和硬件无关
2006-8-11 19:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
004010FC     83F8 00        CMP EAX,0
004010FF  |. 74 16          JE SHORT abexcm5.00401117
00401101     6A 00          PUSH 0
00401103  |. 68 34244000    PUSH abexcm5.00402434                    ; |Title = "Error!"
00401108  |. 68 3B244000    PUSH abexcm5.0040243B                    ; |Text = "The serial you entered is not correct!"

将cmp eax,0 换成cmp eax,1
就不用注册号了,哈哈,
请问,在WINHEX中怎么改呢?
2006-8-12 15:29
0
雪    币: 141
活跃值: (162)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
最初由 gsqylwz 发布
004010FC 83F8 00 CMP EAX,0
004010FF |. 74 16 JE SHORT abexcm5.00401117
00401101 6A 00 PUSH 0
00401103 |. 68 34244000 PUSH abexcm5.00402434 ; |Title = "Error!"
00401108 |. 68 3B244000 PUSH abexcm5.0040243B ; |Text = "The serial you entered is not correct!"
........


查找83F80074166A0068,改成83F80174166A0068
2006-8-12 16:06
0
雪    币: 434
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
谢谢,学习了!
2006-8-12 16:31
0
游客
登录 | 注册 方可回帖
返回
//