- UID
- 38475
注册时间2007-12-1
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
发表于 2008-1-15 23:18:58
|
显示全部楼层
学习一下
双色球精算师破解
下载:http://www.gdcpw.com/softdown/setup1.exe
大小:10.3 MB (10,903,840 字节)
版本:1.0.0.0
MD5:A92EA410BF29E261FA271B66927BF952
工具:PEiD、OD、keymake
破解过程:
1. 杀毒并安装。
2. 查壳;(Borland Delphi 6.0 - 7.0)
3. OD载入并运行。
4. 随意输入注册码,单击注册,弹出错误的提示。[注册码无效,请重新输入]
5. 根据经验,可以查找字串参考。(Find ASCII)
Ultra String Reference,项目 3293 Address=005A0C01 Disassembly=mov eax,双色球精.005A0E80 Text String=注册码无效,请重新输入
6. 双击进入。
005A0BE5 BA 5C0E5A00 mov edx,双色球精.005A0E5C ; 正确提示
005A0BEA E8 0547E6FF call 双色球精.004052F4
005A0BEF 8B45 F0 mov eax,dword ptr ss:[ebp-10]
005A0BF2 33C9 xor ecx,ecx
005A0BF4 33D2 xor edx,edx
005A0BF6 E8 81F2F3FF call 双色球精.004DFE7C
005A0BFB EB 37 jmp short 双色球精.005A0C34
005A0BFD 33C9 xor ecx,ecx
005A0BFF 33D2 xor edx,edx
005A0C01 B8 800E5A00 mov eax,双色球精.005A0E80 ; 错误提示
7. 根据经验,向上找关键跳和算法CALL。
005A0B3F /0F85 B8000000 jnz 双色球精.005A0BFD ; 关键跳,将跳下错误提示
再往上就是此段开始
005A0ACC 55 push ebp ; 注册开始,可以在此下断慢慢跟下去(F2)
8. 下断后,单步跟踪,不用F7跟入。(如果跟来跟去会头晕眼花)
005A0ACC 55 push ebp ; 注册开始
005A0ACD 8BEC mov ebp,esp
005A0ACF B9 07000000 mov ecx,7
005A0AD4 6A 00 push 0
005A0AD6 6A 00 push 0
005A0AD8 49 dec ecx
005A0AD9 ^ 75 F9 jnz short 双色球精.005A0AD4
005A0ADB 51 push ecx
005A0ADC 53 push ebx
005A0ADD 56 push esi
005A0ADE 8BF0 mov esi,eax
005A0AE0 33C0 xor eax,eax
005A0AE2 55 push ebp
005A0AE3 68 2D0E5A00 push 双色球精.005A0E2D
005A0AE8 64:FF30 push dword ptr fs:[eax]
005A0AEB 64:8920 mov dword ptr fs:[eax],esp
005A0AEE 8B86 04030000 mov eax,dword ptr ds:[esi+304]
005A0AF4 8378 0C 05 cmp dword ptr ds:[eax+C],5
005A0AF8 7E 0A jle short 双色球精.005A0B04
005A0AFA A1 989E5B00 mov eax,dword ptr ds:[5B9E98]
005A0AFF E8 900AEEFF call 双色球精.00481594
005A0B04 8D55 F8 lea edx,dword ptr ss:[ebp-8]
005A0B07 8B86 04030000 mov eax,dword ptr ds:[esi+304]
005A0B0D E8 9E34ECFF call 双色球精.00463FB0
005A0B12 8B45 F8 mov eax,dword ptr ss:[ebp-8] ; eax中是输入的假码位数
005A0B15 8D55 FC lea edx,dword ptr ss:[ebp-4] ; eax中为假码
005A0B18 E8 038BE6FF call 双色球精.00409620
005A0B1D 8B45 FC mov eax,dword ptr ss:[ebp-4]
005A0B20 50 push eax ; 入栈
005A0B21 8D55 F4 lea edx,dword ptr ss:[ebp-C]
005A0B24 A1 B8645A00 mov eax,dword ptr ds:[5A64B8]
005A0B29 8B00 mov eax,dword ptr ds:[eax]
005A0B2B 8B80 08030000 mov eax,dword ptr ds:[eax+308]
005A0B31 E8 7A34ECFF call 双色球精.00463FB0
005A0B36 8B55 F4 mov edx,dword ptr ss:[ebp-C] ; 观察edx中,出现了真码
005A0B39 58 pop eax ; 出栈
005A0B3A E8 B548E6FF call 双色球精.004053F4 ; 真假码对比,edx中为真码,此处可以制作内存注册机
005A0B3F 0F85 B8000000 jnz 双色球精.005A0BFD ; 关键跳
9. 制作内存注册机。
左边:
中断地址:005A0B3A
中断次数:1
第一字节:E8
指令长度:5
// E8 B548E6FF 10/2=5
右边:
内存方式
勾寄存器:EDX
用户信息:自己填写,建议将logo换成自己的,否则生成的exe将会被误杀、误报。
总结:delphi写的程序,一般查找字串参考时Find ASCII方式就好,个人喜好。
有时如果实在破不了,可以用dede辅助分析。
像此类一前一后的注册提示,一般在附近就有关键跳转,可以是上面,也可以是下面。
不用太担心找不到,找的方法是单击任意跳转,看它的箭头和颜色。看看它跳向哪里?
今天天气好冷,现在0下,大家注意保重身体啊,学习重要,生命更重要啊。
谢谢楼主的分享,此文与我一样水平的朋友共勉,难免疏漏,请批评指正。 |
|