- UID
- 64823
注册时间2009-12-8
阅读权限40
最后登录1970-1-1
独步武林
TA的每日心情 | 开心 2024-12-31 00:26 |
---|
签到天数: 77 天 [LV.6]常住居民II
|
本帖最后由 冷月孤心 于 2015-1-20 11:47 编辑
不喜勿回,回帖请注意言辞.
【文章标题】: everedit绿色版简单爆破
【文章作者】: 冷月孤心
【作者邮箱】: [email protected]
【作者QQ号】: 55825450
【软件大小】: 2.28 MB
【下载地址】: 自己搜索下载
【使用工具】: PYG_ODBG
【操作平台】: XP
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
载入软件后右键搜索license.dat,双击进入
004216C4 |. 83CA FF OR EDX, 0xFFFFFFFF
004216C7 |. F0:0FC111 LOCK XADD DWORD PTR DS:[ECX], EDX
004216CB |. 4A DEC EDX
004216CC |. E9 61010000 JMP EverEdit.00421832
004216D1 |> 8B0D 00CB6000 MOV ECX, DWORD PTR DS:[0x60CB00]
004216D7 |. 57 PUSH EDI
004216D8 |. 68 80F85800 PUSH EverEdit.0058F880 ; license.dat
004216DD |. 51 PUSH ECX
004216DE |. 8D5424 24 LEA EDX, DWORD PTR SS:[ESP+0x24]
004216E2 |. 52 PUSH EDX
004216E3 |. E8 C8B4FFFF CALL EverEdit.0041CBB0
004216E8 |. 8B4424 28 MOV EAX, DWORD PTR SS:[ESP+0x28]
004216EC |. 68 78F85800 PUSH EverEdit.0058F878 ; wb
向上找到段首F2,然后跑起来,发现没有断下来,是何原因呢?点击一下关于,然后输入注册码那里输入数据或者不输入都可以,点击确定就断下来了
00421420 /$ 81EC B8080000 SUB ESP, 0x8B8
00421426 |. A1 CC145D00 MOV EAX, DWORD PTR DS:[0x5D14CC]
0042142B |. 33C4 XOR EAX, ESP
0042142D |. 898424 B40800>MOV DWORD PTR SS:[ESP+0x8B4], EAX
00421434 |. 53 PUSH EBX
00421435 |. 55 PUSH EBP
00421436 |. 33DB XOR EBX, EBX
00421438 |. 68 C7000000 PUSH 0xC7
0042143D |. 8D8424 110400>LEA EAX, DWORD PTR SS:[ESP+0x411]
从段首F8往下走会发现验证注册码的地方
0042145E |. 51 PUSH ECX
0042145F |. 8BCD MOV ECX, EBP
00421461 |. E8 CAF5FFFF CALL EverEdit.00420A30 ; 发现一个验证注册码的地方
00421466 |. 3AC3 CMP AL, BL
00421468 |. 0F84 AE000000 JE EverEdit.0042151C ; 此处如果跳转实现了就会弹出来注册码不正确
0042146E |. 6A 63 PUSH 0x63
00421470 |. 8D5424 1D LEA EDX, DWORD PTR SS:[ESP+0x1D]
重载程序,F9,继续来到验证注册码的地方跑一次看看CMP AL,BL满足什么条件的时候这个跳转才不实现
00420ADC |. 84C0 TEST AL, AL
00420ADE |. 8D46 F0 LEA EAX, DWORD PTR DS:[ESI-0x10]
00420AE1 8D48 0C LEA ECX, DWORD PTR DS:[EAX+0xC]
00420AE4 74 17 JE SHORT EverEdit.00420AFD ; 此处跳转则AL赋值失败
00420AE6 F0:0FC111 LOCK XADD DWORD PTR DS:[ECX], EDX
00420AEA |. 4A DEC EDX
00420AEB |. 85D2 TEST EDX, EDX
00420AED |. 7F 0A JG SHORT EverEdit.00420AF9
00420AEF |. 8B08 MOV ECX, DWORD PTR DS:[EAX]
00420AF1 |. 8B11 MOV EDX, DWORD PTR DS:[ECX]
00420AF3 |. 50 PUSH EAX
00420AF4 |. 8B42 04 MOV EAX, DWORD PTR DS:[EDX+0x4]
00420AF7 |. FFD0 CALL NEAR EAX
00420AF9 |> B0 01 MOV AL, 0x1
二次来到跳转看到如果AL=1则CMP AL,BL比较成功,下面跳转不会跳
00421466 |. 3AC3 CMP AL, BL 路过上面的CALL 后发现BL=0 此处只需AL=1即可.
00421468 |. 0F84 AE000000 JE EverEdit.0042151C ; 此处如果跳转实现了就会弹出来注册码不正确
所以先这样改一下
00420A30 B0 01 MOV AL, 0x1
00420A32 C2 0400 RETN 0x4
00420A35 90 NOP
00420A36 |. A1 CC145D00 MOV EAX, DWORD PTR DS:[0x5D14CC]
过了一个注册码校验,继续向下走,似乎还有一处在等着咱们
004214E6 |. 8D9424 500400>LEA EDX, DWORD PTR SS:[ESP+0x450]
004214ED |. 68 CCF85800 PUSH EverEdit.0058F8CC ; %c\t%s\t%s\t%s\t%[^\n]
004214F2 |. 52 PUSH EDX
004214F3 |. E8 795E1300 CALL EverEdit.00557371 ; 那么我们跟进这个地址暂时修改MOV EAX,5 ret吧
004214F8 |. 83C4 4C ADD ESP, 0x4C
004214FB |. 83F8 05 CMP EAX, 0x5 ; 这里又需要注意了,在这里EAX值为5时,下面的跳转才不会跳
004214FE |. 75 1C JNZ SHORT EverEdit.0042151C ; 看到这个地址是不是有些眼熟?
00421500 |. 8D8424 440300>LEA EAX, DWORD PTR SS:[ESP+0x344]
00421507 |. 50 PUSH EAX
00421508 |. 8D8C24 E40200>LEA ECX, DWORD PTR SS:[ESP+0x2E4]
0042150F |. 51 PUSH ECX
跟进CALL后发现好多调用,难道都在这里取这个EAX=5,先猜想一下,暂时修改了看看结果
00557371 B8 05000000 MOV EAX, 0x5 ; 别管它里面有多少内容,我现在要的就是让这里返回后EAX=5
00557376 C3 RETN ; 好多调用呀
00557377 |. 8B75 08 MOV ESI, [ARG.1]
0055737A |. 8D45 10 LEA EAX, [ARG.3]
0055737D |. 50 PUSH EAX
继续向下走
0042151A |. /74 33 JE SHORT EverEdit.0042154F ; 跳转实现了,跳过了注册码错误
0042151C |> |6A 64 PUSH 0x64 ; 以下就是弹出注册码不正确的地方
0042151E |. |8D5424 1C LEA EDX, DWORD PTR SS:[ESP+0x1C]
00421522 |. |52 PUSH EDX
00421523 |. |68 993B0000 PUSH 0x3B99
00421528 |. |B9 58B46000 MOV ECX, EverEdit.0060B458
0042152D |. |E8 FEB10900 CALL EverEdit.004BC730
00421532 |. |8B4D 04 MOV ECX, DWORD PTR SS:[EBP+0x4]
00421535 |. |6A 30 PUSH 0x30
00421537 |. |68 E0E15800 PUSH EverEdit.0058E1E0 ; EverEdit
0042153C |. |8D4424 20 LEA EAX, DWORD PTR SS:[ESP+0x20]
00421540 |. |50 PUSH EAX
00421541 |. |51 PUSH ECX
00421542 |. |E8 39F10300 CALL EverEdit.00460680
00421547 |. |83C4 10 ADD ESP, 0x10
0042154A |. |E9 2A030000 JMP EverEdit.00421879
0042154F |> \8B15 DCD65800 MOV EDX, DWORD PTR DS:[<&USER32.DefW>; user32.DefWindowProcW
继续往前走,我也没想到一次性能调试成功,这是最顺利的一回
0042159B |. 8D4C24 24 LEA ECX, DWORD PTR SS:[ESP+0x24]
0042159F |. E8 0CEDFFFF CALL EverEdit.004202B0 ; 此时弹出要保存授权了,继续跟一下,不F7进去看了,如果实在想看也没关系
004215A4 |. 3D B0040000 CMP EAX, 0x4B0
004215A9 |. 0F85 22010000 JNZ EverEdit.004216D1 :点击保存到注册表则此处不跳
004215AF |. 8D4424 10 LEA EAX, DWORD PTR SS:[ESP+0x10]
004215B3 |. 50 PUSH EAX ; /pHandle
004215B4 |. 68 A8F85800 PUSH EverEdit.0058F8A8 ; |Software\EverEdit
004215B9 |. 68 01000080 PUSH 0x80000001 ; |hKey = HKEY_CURRENT_USER
004215BE |. 895C24 1C MOV DWORD PTR SS:[ESP+0x1C], EBX ; |
004215C2 |. FF15 1CD05800 CALL NEAR DWORD PTR DS:[<&ADVAPI32.Re>; \RegOpenKeyW
004215C8 |. 85C0 TEST EAX, EAX
004215CA |. 74 15 JE SHORT EverEdit.004215E1 :不跳则授权失败,幸好这里是跳的,不用动手脚了
004215CC |. 8D4C24 10 LEA ECX, DWORD PTR SS:[ESP+0x10]
此时跟到系统领空去了,F9了一下看到未注册没有了,是否就此破解成功了吗?点击保存所有修改,运行起来看看.运行后突然发现破解没成功.点击输入注册码依然弹出来保存授权到文件,注册后未注册消失
既然关于里面也验证了注册信息,就看看如何验证的,最终找到了RegOpenKeyExW是最合适的断点,既然要看关于,先不要着急下断点,把程序跑起来后再下断点.N次返回后到了这里,代码看起来有些清晰了
0041F5C6 |. 68 01000080 PUSH 0x80000001 ; |hKey = HKEY_CURRENT_USER
0041F5CB |. 895C24 28 MOV DWORD PTR SS:[ESP+0x28], EBX ; |
0041F5CF |. 895C24 2C MOV DWORD PTR SS:[ESP+0x2C], EBX ; |
0041F5D3 |. 895C24 24 MOV DWORD PTR SS:[ESP+0x24], EBX ; |
0041F5D7 |. FF15 34D05800 CALL NEAR DWORD PTR DS:[<&ADVAPI32.RegOpenKeyExW>] ; \RegOpenKeyExW
0041F5DD |. 3BC3 CMP EAX, EBX
0041F5DF |. 0F85 A8000000 JNZ EverEdit.0041F68D
0041F5E5 |. 8B7C24 10 MOV EDI, DWORD PTR SS:[ESP+0x10]
0041F5E9 |. 33C0 XOR EAX, EAX
0041F5EB |. 894424 2E MOV DWORD PTR SS:[ESP+0x2E], EAX
0041F5EF |. 894424 32 MOV DWORD PTR SS:[ESP+0x32], EAX
0041F5F3 |. 894424 36 MOV DWORD PTR SS:[ESP+0x36], EAX
继续往下走,看了一下没有重要线索,我直接在RET那里F4了返回再探
0042029F |. 8BC7 MOV EAX, EDI
004202A1 |. 5F POP EDI ; 0012F314
004202A2 |. 5E POP ESI
004202A3 \. C2 0400 RETN 0x4
再返回看看
00420CBD |. 51 PUSH ECX
00420CBE |. FFD5 CALL NEAR EBP
00420CC0 |. 50 PUSH EAX
00420CC1 |. 8D4F 7C LEA ECX, DWORD PTR DS:[EDI+0x7C]
00420CC4 |. E8 77F5FFFF CALL EverEdit.00420240 ; 恰似这里读取了注册信息
00420CC9 |. 8B16 MOV EDX, DWORD PTR DS:[ESI] ; 返回到这里来了
00420CCB |. 68 B5040000 PUSH 0x4B5
00420CD0 |. 52 PUSH EDX
00420CD1 |. FFD5 CALL NEAR EBP
00420CD3 |. 50 PUSH EAX
接下来,去段首下断点,初步断定"关于"就在这里了.
00420B30 /$ 81EC E0020000 SUB ESP, 0x2E0 ; 调用关于
00420B36 |. A1 CC145D00 MOV EAX, DWORD PTR DS:[0x5D14CC]
00420B3B |. 33C4 XOR EAX, ESP
00420B3D |. 898424 DC0200>MOV DWORD PTR SS:[ESP+0x2DC], EAX
00420B44 |. 53 PUSH EBX
00420B45 |. 55 PUSH EBP
00420B46 |. 56 PUSH ESI
00420B47 |. 57 PUSH EDI
00420B48 |. 8BF9 MOV EDI, ECX
那么,接下来的分析任务交给你了,一切都由你来发现
至于自动更新,可以在update.exe跟进,在段首下断跟一下就知道了,我是这么搞的.在段首XOR EAX,EAX RET
特别提醒:关于里面验证成功就是注册版了.
--------------------------------------------------------------------------------
【版权声明】: 本文原创于冷月孤心, 转载请注明作者并保持文章的完整, 谢谢!
2014年12月01日 上午 11:44:00仅供学习交流,如果喜欢此软件,请支持正版.
|
评分
-
查看全部评分
|