我早就注册了看雪的号了!一直没空来!
刚来论坛3天~~呵呵!看了CCDebuger大侠的OllyDBG 入门系列(五)的文章!具体怎样的我也模糊!!
自己拿了cycle.exe文件来破了!进入主题:
把cycle.exe载入OD,按F9让程序运行。在Name,Serial编辑框随便输入:
再按Alt+M键,来到内存映射窗口:
我们在DATA数据段按F2键下断
然后在按程序的Check按钮,OD断下来了。
往下看看是不是就到了CCDebuger的OllyDBG 入门系列(五)的数据分析那里呀!
啊哈!!下面引用CCDebuger老师的分析:
004010E2 |. 8BFE MOV EDI,ESI ; 用户名送 EDI
004010E4 |. 03F8 ADD EDI,EAX
004010E6 |. FC CLD
004010E7 |. F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
004010E9 |. 33C9 XOR ECX,ECX ; 清零,设循环计数器
004010EB |. BE 71214000 MOV ESI,cycle.00402171 ; 注册码送ESI
004010F0 |> 41 INC ECX
004010F1 |. AC LODS BYTE PTR DS:[ESI] ; 取注册码的每个字符
004010F2 |. 0AC0 OR AL,AL ; 判断是否为空
004010F4 |. 74 0A JE SHORT cycle.00401100 ; 没有则跳走
004010F6 |. 3C 7E CMP AL,7E ; 判断字符是否为非ASCII字符
004010F8 |. 7F 06 JG SHORT cycle.00401100 ; 非ASCII字符跳走
004010FA |. 3C 30 CMP AL,30 ; 看是否小于30H,主要是判断是不是数字或字母等
004010FC |. 72 02 JB SHORT cycle.00401100 ; 小于跳走
004010FE |.^ EB F0 JMP SHORT cycle.004010F0
00401100 |> 83F9 11 CMP ECX,11 ; 比较注册码位数,必须为十进制17位
00401103 |. 75 1A JNZ SHORT cycle.0040111F
00401105 |. E8 E7000000 CALL cycle.004011F1 ; 关键,F7跟进去
0040110A |. B9 01FF0000 MOV ECX,0FF01
0040110F |. 51 PUSH ECX
00401110 |. E8 7B000000 CALL cycle.00401190 ; 关键,跟进去
00401115 |. 83F9 01 CMP ECX,1
00401118 |. 74 06 JE SHORT cycle.00401120
0040111A |> E8 47000000 CALL cycle.00401166 ; 注册失败对话框
0040111F |> C3 RETN
00401120 |> A1 68214000 MOV EAX,DWORD PTR DS:[402168]
00401125 |. 8B1D 6C214000 MOV EBX,DWORD PTR DS:[40216C]
0040112B |. 33C3 XOR EAX,EBX
0040112D |. 3305 82214000 XOR EAX,DWORD PTR DS:[402182]
00401133 |. 0D 40404040 OR EAX,40404040
00401138 |. 25 77777777 AND EAX,77777777
0040113D |. 3305 79214000 XOR EAX,DWORD PTR DS:[402179]
00401143 |. 3305 7D214000 XOR EAX,DWORD PTR DS:[40217D]
00401149 |.^ 75 CF JNZ SHORT cycle.0040111A ; 这里跳走就完蛋
0040114B |. E8 2B000000 CALL cycle.0040117B ; 注册成功对话框
我们知道0040114B处是最重要的
0040114B |. E8 2B000000 CALL cycle.0040117B ; 注册成功对话框
我在想我直接调用这个CALL不就直接来到注册成功对话框了吗??二话不说马上分析CALL!(小弟之前弄过外挂写CALL的~~嘻嘻。。
)
进入CALL内部:
0040117B /$ 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
0040117D |. 68 12214000 PUSH cycle.00402112 ; |Title = "Wow!"
00401182 |. 68 17214000 PUSH cycle.00402117 ; |Text = "Congratulations!\nWrite a tutorial/keygen an send it to cW_6556@yahoo.com"
00401187 |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |hOwner
0040118A |. E8 2E010000 CALL <JMP.&USER32.MessageBoxA> ; \MessageBoxA
这里我们知道这个CALL需要EBP寄存器的值。
在CALL内部按F8单步走!注意观察EBP的值。步过00401187 |. FF75 08 PUSH DWORD PTR SS:[EBP+8]
这句后发现EBP的值一直没变!我们记下EBP=0012FB70
关掉OD!
到这里我们已经分析完了!下面开始调用这个CALL看看!
---------------------------------------------------------------------------------------------------
打开汇编注入器,写入代码:
mov ebp,0012FB70
CALL 0040117B
选上程序cycle.exe的进程!最后按CreateRemoteThread按钮注入代码!
哈哈哈!!这算爆破不???哥哥姐姐们指点一下!!我刚来没什么基础!
衷心感谢CCDebuger老师!!
应看学10周年!祝看雪越办越好~~
支持看雪支持中国软件!
!
!
!
!
!
!
!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!