文本编辑XXredit绿色版简单爆破
本帖最后由 冷月孤心 于 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:, EDX
004216CB|.4A DEC EDX
004216CC|.E9 61010000 JMP EverEdit.00421832
004216D1|>8B0D 00CB6000 MOV ECX, DWORD PTR DS:
004216D7|.57 PUSH EDI
004216D8|.68 80F85800 PUSH EverEdit.0058F880 ;license.dat
004216DD|.51 PUSH ECX
004216DE|.8D5424 24 LEA EDX, DWORD PTR SS:
004216E2|.52 PUSH EDX
004216E3|.E8 C8B4FFFF CALL EverEdit.0041CBB0
004216E8|.8B4424 28 MOV EAX, DWORD PTR SS:
004216EC|.68 78F85800 PUSH EverEdit.0058F878 ;wb
向上找到段首F2,然后跑起来,发现没有断下来,是何原因呢?点击一下关于,然后输入注册码那里输入数据或者不输入都可以,点击确定就断下来了
00421420/$81EC B8080000 SUB ESP, 0x8B8
00421426|.A1 CC145D00 MOV EAX, DWORD PTR DS:
0042142B|.33C4 XOR EAX, ESP
0042142D|.898424 B40800>MOV DWORD PTR SS:, 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:
从段首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:
重载程序,F9,继续来到验证注册码的地方跑一次看看CMP AL,BL满足什么条件的时候这个跳转才不实现
00420ADC|.84C0 TEST AL, AL
00420ADE|.8D46 F0 LEA EAX, DWORD PTR DS:
00420AE1 8D48 0C LEA ECX, DWORD PTR DS:
00420AE4 74 17 JE SHORT EverEdit.00420AFD ;此处跳转则AL赋值失败
00420AE6 F0:0FC111 LOCK XADD DWORD PTR DS:, EDX
00420AEA|.4A DEC EDX
00420AEB|.85D2 TEST EDX, EDX
00420AED|.7F 0A JG SHORT EverEdit.00420AF9
00420AEF|.8B08 MOV ECX, DWORD PTR DS:
00420AF1|.8B11 MOV EDX, DWORD PTR DS:
00420AF3|.50 PUSH EAX
00420AF4|.8B42 04 MOV EAX, DWORD PTR DS:
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:
过了一个注册码校验,继续向下走,似乎还有一处在等着咱们
004214E6|.8D9424 500400>LEA EDX, DWORD PTR SS:
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,5ret吧
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:
00421507|.50 PUSH EAX
00421508|.8D8C24 E40200>LEA ECX, DWORD PTR SS:
0042150F|.51 PUSH ECX
跟进CALL后发现好多调用,难道都在这里取这个EAX=5,先猜想一下,暂时修改了看看结果
00557371 B8 05000000 MOV EAX, 0x5 ;别管它里面有多少内容,我现在要的就是让这里返回后EAX=5
00557376 C3 RETN ;好多调用呀
00557377|.8B75 08 MOV ESI,
0055737A|.8D45 10 LEA EAX,
0055737D|.50 PUSH EAX
继续向下走
0042151A|. /74 33 JE SHORT EverEdit.0042154F ;跳转实现了,跳过了注册码错误
0042151C|> |6A 64 PUSH 0x64 ;以下就是弹出注册码不正确的地方
0042151E|. |8D5424 1C LEA EDX, DWORD PTR SS:
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:
00421535|. |6A 30 PUSH 0x30
00421537|. |68 E0E15800 PUSH EverEdit.0058E1E0 ;EverEdit
0042153C|. |8D4424 20 LEA EAX, DWORD PTR SS:
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:
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:
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:, 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:
此时跟到系统领空去了,F9了一下看到未注册没有了,是否就此破解成功了吗?点击保存所有修改,运行起来看看.运行后突然发现破解没成功.点击输入注册码依然弹出来保存授权到文件,注册后未注册消失
既然关于里面也验证了注册信息,就看看如何验证的,最终找到了RegOpenKeyExW是最合适的断点,既然要看关于,先不要着急下断点,把程序跑起来后再下断点.N次返回后到了这里,代码看起来有些清晰了
0041F5C6|.68 01000080 PUSH 0x80000001 ; |hKey = HKEY_CURRENT_USER
0041F5CB|.895C24 28 MOV DWORD PTR SS:, EBX ; |
0041F5CF|.895C24 2C MOV DWORD PTR SS:, EBX ; |
0041F5D3|.895C24 24 MOV DWORD PTR SS:, 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:
0041F5E9|.33C0 XOR EAX, EAX
0041F5EB|.894424 2E MOV DWORD PTR SS:, EAX
0041F5EF|.894424 32 MOV DWORD PTR SS:, EAX
0041F5F3|.894424 36 MOV DWORD PTR SS:, 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:
00420CC4|.E8 77F5FFFF CALL EverEdit.00420240 ;恰似这里读取了注册信息
00420CC9|.8B16 MOV EDX, DWORD PTR DS: ;返回到这里来了
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:
00420B3B|.33C4 XOR EAX, ESP
00420B3D|.898424 DC0200>MOV DWORD PTR SS:, 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仅供学习交流,如果喜欢此软件,请支持正版.
按照GGlhy的惯例,沙发得自己做 许愿墙 上榜了 {:soso_e120:}你是最棒得 {:soso_e154:}谢谢冷大帮我圆梦{:soso_e181:}
非常好的教程。 窃梦不算偷梦的吧?!!!!!! 这个非常感谢了!其中分析重启之后验证授权文件或者注册表的那一部分因为汇编问题自己迟迟解决不了,看了了解了作者思路!
居然 出了 这种思路 感谢楼主 很喜欢这个编辑器 我也来学习 学习 初学者能使用这个吗,还没进门呢
页:
[1]
2