【文章标题】: 菜鸟教程之万能断点追玛
【文章作者】: 妈妈不让说
【作者邮箱】: 妈妈不让说
【作者主页】: 妈妈不让说
【作者QQ号】: 妈妈不让说
【软件名称】: crackme
【下载地址】: 教程打包下载
【加壳方式】: 无壳
【保护方式】: 无保护
【编写语言】: VB
【使用工具】: OD任何版本
【操作平台】: Windows Sp1
【作者声明】: crackme区人气不高,特此来灌灌水.顺便提高骗技!另外失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
注:此教程只适合跟我一样的菜鸟朋友学习,高手请勿见笑.适合明码比较的追玛教程!
crackme区人气不高,特此来灌灌水.
依然还是菜鸟学习篇,高手依然飘过.
例1(VB程序):
打开crackme,采用的是用户名+注册码的方式.并查壳,Microsoft Visual Basic 5.0 / 6.0
OD载入
00401228 > 68 540F4100 PUSH crackme.00410F54 //停在这里
0040122D E8 EEFFFFFF CALL <JMP.&MSVBVM60.#100>
00401232 0000 ADD BYTE PTR DS:[EAX],AL
00401234 0000 ADD BYTE PTR DS:[EAX],AL
00401236 0000 ADD BYTE PTR DS:[EAX],AL
00401238 3000 XOR BYTE PTR DS:[EAX],AL
0040123A 0000 ADD BYTE PTR DS:[EAX],AL
0040123C 3800 CMP BYTE PTR DS:[EAX],AL
0040123E 0000 ADD BYTE PTR DS:[EAX],AL
00401240 0000 ADD BYTE PTR DS:[EAX],AL
00401242 0000 ADD BYTE PTR DS:[EAX],AL
00401244 ^ E2 BD LOOPD SHORT crackme.00401203
00401246 E3 30 JECXZ SHORT crackme.00401278
00401248 2A34D5 11A375BB SUB DH,BYTE PTR DS:[EDX*8+BB75A311]
0040124F 0ADF OR BL,BH
00401251 97 XCHG EAX,EDI
00401252 75 47 JNZ SHORT crackme.0040129B
00401254 0000 ADD BYTE PTR DS:[EAX],AL
F9运行,也许你问我是不是有病,其实是告诉大家另外一个方法追玛而已,转到正题```
这个时候 点crackme上的注册 姓名输入 kanxue 注册玛输入 5201314 这个时候千万别点确定!
在代码区点右键,查看----选模块USER32就到了USER32中如下代码段
77D11000 > 44 INC ESP
77D11001 0C F6 OR AL,0F6
77D11003 77 6B JA SHORT <&ntdll.RtlActivateActivationCo>
77D11005 11F5 ADC EBP,ESI
77D11007 77 08 JA SHORT USER32.77D11011
77D11009 30FC XOR AH,BH
77D1100B - 77 A1 JA SHORT USER32.77D10FAE
77D1100D 16 PUSH SS
77D1100E F5 CMC
77D1100F - 77 FE JA SHORT USER32.77D1100F
77D11011 4F DEC EDI
77D11012 F677 16 DIV BYTE PTR DS:[EDI+16]
77D11015 12F6 ADC DH,DH
77D11017 - 77 CF JA SHORT USER32.77D10FE8
77D11019 0D F777CEFC OR EAX,FCCE77F7
77D1101E F677 4C DIV BYTE PTR DS:[EDI+4C]
在代码区点右键,查找----二进制字串,输入:F3 A5 8B C8 83 E1 03 F3 A4 E8,点确定就来到了我门的万能断点的代码
77D29303 F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS> //这个就是万能断点代码拉^-^
77D29305 8BC8 MOV ECX,EAX
77D29307 83E1 03 AND ECX,3
77D2930A F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
77D2930C E8 04F9FFFF CALL USER32.77D28C15
77D29311 5F POP EDI
77D29312 5E POP ESI
在这里F2或双击下断点后,点确定!按F9观察寄存器中的值直到第一次看到我们输入的假码《我这里输入的是5201314》就停止按F9,寄存器如下:
EAX 00000007
ECX 00000001
EDX 00140608
EBX 00000007
ESP 0012F074
EBP 0012F084
ESI 001512C0 ASCII "5201314"
EDI 00D521D0
EIP 77D29303 USER32.77D29303
我门在出现假码的下一行,点右键,选数据窗口中跟随,来到数据窗口如下处
00D521D0 00000000
在此行点右键,选断点----内存访问;F9运行,中断
7340BC99 84C0 TEST AL,AL //断在这里
7340BC9B 74 0E JE SHORT MSVBVM60.7340BCAB
7340BC9D 3C 1E CMP AL,1E
7340BC9F 74 04 JE SHORT MSVBVM60.7340BCA5
7340BCA1 3C 1F CMP AL,1F
7340BCA3 75 03 JNZ SHORT MSVBVM60.7340BCA8
7340BCA5 C601 26 MOV BYTE PTR DS:[ECX],26
7340BCA8 41 INC ECX
7340BCA9 ^ EB EC JMP SHORT MSVBVM60.7340BC97
7340BCAB C3 RETN
7340BCAC 53 PUSH EBX
7340BCAD 56 PUSH ESI
7340BCAE 57 PUSH EDI
7340BCAF 8B7C24 10 MOV EDI,DWORD PTR SS:[ESP+10]
7340BCB3 85FF TEST EDI,EDI
7340BCB5 74 7C JE SHORT MSVBVM60.7340BD33
7340BCB7 33C0 XOR EAX,EAX
7340BCB9 33C9 XOR ECX,ECX
7340BCBB 3807 CMP BYTE PTR DS:[EDI],AL
7340BCBD B3 26 MOV BL,26
7340BCBF 74 13 JE SHORT MSVBVM60.7340BCD4
7340BCC1 381C38 CMP BYTE PTR DS:[EAX+EDI],BL
7340BCC4 75 07 JNZ SHORT MSVBVM60.7340BCCD
ALT +F9按很多次就可以返回到程序领空到以下段,我这里是17次.你那里我就不知道了?-,-
00413020 85C0 TEST EAX,EAX //返回到这里
00413022 DBE2 FCLEX
00413024 7D 12 JGE SHORT crackme.00413038
00413026 68 A0000000 PUSH 0A0
0041302B 68 481A4100 PUSH crackme.00411A48
00413030 57 PUSH EDI
00413031 50 PUSH EAX
00413032 FF15 24104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresu>; MSVBVM60.__vbaHresultCheckObj
00413038 8B55 C8 MOV EDX,DWORD PTR SS:[EBP-38]
0041303B 8D4D CC LEA ECX,DWORD PTR SS:[EBP-34]
0041303E C745 C8 0000000>MOV DWORD PTR SS:[EBP-38],0
00413045 FFD6 CALL ESI
00413047 8D4D B8 LEA ECX,DWORD PTR SS:[EBP-48]
0041304A FF15 C0104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeO>; MSVBVM60.__vbaFreeObj
00413050 8B55 D0 MOV EDX,DWORD PTR SS:[EBP-30]
00413053 8B45 CC MOV EAX,DWORD PTR SS:[EBP-34]
00413056 52 PUSH EDX
00413057 50 PUSH EAX
00413058 6A 00 PUSH 0
0041305A FF15 98104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCo>; MSVBVM60.__vbaStrComp
00413060 66:85C0 TEST AX,AX
00413063 0F85 08010000 JNZ crackme.00413171
00413069 A1 10404100 MOV EAX,DWORD PTR DS:[414010]
0041306E 85C0 TEST EAX,EAX
00413070 75 19 JNZ SHORT crackme.0041308B
00413072 8B3D 7C104000 MOV EDI,DWORD PTR DS:[<&MSVBVM60.__vbaNe>; MSVBVM60.__vbaNew2
F8一步一步的往下跟就可以看到注册码了:)
EAX 001508D4 UNICODE "5201314"
ECX 00D51214
EDX 00151414 UNICODE "UEKAAN"
EBX 733B3FA7 MSVBVM60.__vbaObjSet
ESP 0012F3A0
EBP 0012F488
ESI 733B4422 MSVBVM60.__vbaStrMove
EDI 00D51CE4
EIP 00413056 crackme.00413056
输入一下,成功了.是不是感觉有点成就感.-_-
另外 感谢 peaceclub KanXue Fly 大彻大悟 machenglin wynney laomms xxdoc forgot monkeycz 一直以来对我的帮助
祝大家2007新的一年 身体健康 万事如意 金猪大发
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2007年01月15日 13:07:10
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
上传的附件: