首页
社区
课程
招聘
OD中下内存断点破解加密与解密随书光盘中的GCCrackme8
发表于: 2006-4-15 15:11 8865

OD中下内存断点破解加密与解密随书光盘中的GCCrackme8

2006-4-15 15:11
8865

【软件名称】《加密与解密》随书光盘中的CrackMe中的GC Crackme 8
【下载地址】
【应用平台】Win2000
【软件大小】127 KB
【软件限制】Name/Company/Serial/Code
【破解声明】发表此篇破文只是为了给我这样的菜鸟详细说明利用OD下内存断点的方法,我写这破文花了一天的时间很不容易,希望给菜鸟一些帮助
【破解工具】OllyDbg
【软件简介】
========================================================================================
【分析过程】1 用PEID查看,发现是UPX 0.89.6 - 1.02 / 1.05 - 1.22 -> Markus & Lazlo加壳,用OD很快脱壳了。
再用PEID查看,发现是DELPHI编写的程序,心中暗喜,DEDE利器可以派上用场了。
遗憾的是用DEDE打开,Procedure页中什么也看不见,这样我就不能找到断点了。
用OD打开,有一个入口点警告,发现脱壳后的程序仍然是经过压缩的,作为菜鸟,上来当然是搜索字符串,很失望,没有有用的东西了。然后,想利用GetWindowTextA函数下断,程序根本都不中断,这下,我就不知道该怎么办了,我是菜鸟啊!
2 我看了下roy给的tutorial,发现‘try to bpx getdlgitemtexta and getwindowtexta. it doesn' t works. try to bpx hmemcpy.it works.’,OH,My GOD! 我的是Win2000啊,bpx hmemcpy不行啊.
这时,我想起‘看雪论坛精华6’有篇文章,ollydbg破解教学之--------万能断点篇 ,我按照其方法,
‘载入程序选OD菜单栏上的插件-----命令行(快捷键是ALT+F1), 在弹出的窗口中输入万能断点命令:bpx hmemcpy,按ENTER键,结果又出现一个对话框: 在这个框里右键单击,出现一个对话框,选中在每个命令中设置断点(热键是S),单击,你看每一行 都变成了红色吧,这表示全部设下断点了,后面的过程很烦燥,你要一边按F9,边按F2把一些无用的断点去掉,有一点耐心吧, 当然也可以不这样做,但遇到断点跳不过的时候,你就得按F2把这个断点去掉. ’结果,按照其办法,F9运行到后来,弹出‘Error'对话框,Runtime error 216 at 00002AE4’。
3 办法都试了,看来只能用内存断点试一下了。下面详细介绍利用OD下内存断点破解全过程,希望将我的思路写出来,
一是我自己总结,二是和我这样的菜鸟共同学习。

输入以下信息
name: hai
org:  dahai
sn:   123
code: 456
双击“Check”按钮,(说明,单击不行,单击后在内存中找不到用户名,双击后能找到用户名称了。必须双击)
ALT+M,然后在CODE段,搜索内存"hai",发现
00D18770  68 61 69 00 54 E4 42 00 54 E4 42 00 88 38 00 00  hai.T渎.T渎.?..
在00D18770  单元处的"68"上右键,下内存访问断点.然后回到应用程序,双击"Check"按钮,中断在下列地址。
77DFC853    F3:A4           REP MOVS BYTE PTR ES:[EDI],BYTE PTR >
77DFC855    E8 56FCFFFF     CALL USER32.77DFC4B0
77DFC85A    5E              POP ESI
77DFC85B    5F              POP EDI
77DFC85C    8BC3            MOV EAX,EBX
77DFC85E    5B              POP EBX
77DFC85F    5D              POP EBP
77DFC860    C2 1000         RETN 10

一直按F8,直到下列代码:
0042BD11    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]
0042BD14    E8 A77AFDFF     CALL crackme8.004037C0
0042BD19    83F8 05         CMP EAX,5                            ; 用户名长度必须大于等于5
0042BD1C    7D 09           JGE SHORT crackme8.0042BD27
0042BD1E    C605 20E74200 0>MOV BYTE PTR DS:[42E720],1           ; 42E720代表用户名是否合法,0为合法,1为非法
0042BD25    EB 07           JMP SHORT crackme8.0042BD2E
0042BD27    C605 20E74200 0>MOV BYTE PTR DS:[42E720],0
0042BD2E    8D55 FC         LEA EDX,DWORD PTR SS:[EBP-4]
0042BD31    A1 1CE74200     MOV EAX,DWORD PTR DS:[42E71C]
0042BD36    8B80 F0010000   MOV EAX,DWORD PTR DS:[EAX+1F0]
0042BD3C    E8 67E0FEFF     CALL crackme8.00419DA8
0042BD41    837D FC 00      CMP DWORD PTR SS:[EBP-4],0           ; 单位不能为空
0042BD45    75 09           JNZ SHORT crackme8.0042BD50
0042BD47    C605 21E74200 0>MOV BYTE PTR DS:[42E721],1           ; 42E720代表用户名是否合法,0为合法,1为非法
0042BD4E    EB 07           JMP SHORT crackme8.0042BD57
0042BD50    C605 21E74200 0>MOV BYTE PTR DS:[42E721],0
0042BD57    8D55 FC         LEA EDX,DWORD PTR SS:[EBP-4]
0042BD5A    A1 1CE74200     MOV EAX,DWORD PTR DS:[42E71C]
0042BD5F    8B80 F4010000   MOV EAX,DWORD PTR DS:[EAX+1F4]
0042BD65    E8 3EE0FEFF     CALL crackme8.00419DA8
0042BD6A    837D FC 00      CMP DWORD PTR SS:[EBP-4],0           ; Serial不能为空
0042BD6E    75 09           JNZ SHORT crackme8.0042BD79
0042BD70    C605 22E74200 0>MOV BYTE PTR DS:[42E722],1           ; 42E720代表用户名是否合法,0为合法,1为非法
0042BD77    EB 07           JMP SHORT crackme8.0042BD80
0042BD79    C605 22E74200 0>MOV BYTE PTR DS:[42E722],0
0042BD80    8D55 FC         LEA EDX,DWORD PTR SS:[EBP-4]
0042BD83    A1 1CE74200     MOV EAX,DWORD PTR DS:[42E71C]
0042BD88    8B80 F8010000   MOV EAX,DWORD PTR DS:[EAX+1F8]
0042BD8E    E8 15E0FEFF     CALL crackme8.00419DA8
0042BD93    837D FC 00      CMP DWORD PTR SS:[EBP-4],0           ; Code不能为空
0042BD97    75 09           JNZ SHORT crackme8.0042BDA2
0042BD99    C605 23E74200 0>MOV BYTE PTR DS:[42E723],1           ; 42E720代表用户名是否合法,0为合法,1为非法
0042BDA0    EB 07           JMP SHORT crackme8.0042BDA9
0042BDA2    C605 23E74200 0>MOV BYTE PTR DS:[42E723],0
0042BDA9    33C0            XOR EAX,EAX
0042BDAB    5A              POP EDX
0042BDAC    59              POP ECX
0042BDAD    59              POP ECX
0042BDAE    64:8910         MOV DWORD PTR FS:[EAX],EDX
0042BDB1    68 CBBD4200     PUSH crackme8.0042BDCB
0042BDB6    8D45 F8         LEA EAX,DWORD PTR SS:[EBP-8]
0042BDB9    BA 02000000     MOV EDX,2
0042BDBE    E8 A577FDFF     CALL crackme8.00403568
0042BDC3    C3              RETN
RETN之后到达:
0042BEF4    803D 20E74200 0>CMP BYTE PTR DS:[42E720],0           ;  判断用户名称是否合法
0042BEFB    0F85 C5000000   JNZ crackme8.0042BFC6
0042BF01    803D 21E74200 0>CMP BYTE PTR DS:[42E721],0           ;  判断单位是否合法
0042BF08    0F85 B8000000   JNZ crackme8.0042BFC6
0042BF0E    803D 22E74200 0>CMP BYTE PTR DS:[42E722],0           ;  判断Serial是否合法
0042BF15    0F85 AB000000   JNZ crackme8.0042BFC6
0042BF1B    803D 23E74200 0>CMP BYTE PTR DS:[42E723],0           ;  判断Code是否合法
0042BF22    0F85 9E000000   JNZ crackme8.0042BFC6
0042BF28    8D55 FC         LEA EDX,DWORD PTR SS:[EBP-4]
0042BF2B    8B83 EC010000   MOV EAX,DWORD PTR DS:[EBX+1EC]

跟踪发现,用户名必须大于等于5个字符,单位,注册码和Code不能为空,重新输入:
name: laowanghai
org:  dahai
sn:   123
code: 456
双击“Check”按钮,(说明,单击不行,单击后在内存中找不到用户名,双击后能找到用户名称了。必须双击)
ALT+M,然后在CODE段,搜索"laowanghai"(注意“整个段块”不要选中),
在弹出的转存窗口中可以看到下面的内容:
00D18760  6C 61 6F 77 61 6E 67 68 61 69 00 00 54 E4 42 00  laowanghai..T渎.
在00D18760单元处的"6C"上右键,下内存访问断点.然后回到应用程序,双击"Check"按钮,中断在下列地址。

004038F9    8B0E            MOV ECX,DWORD PTR DS:[ESI]
只管F8,一直到RETN,程序经过下列代码,
004038FB    8B1F            MOV EBX,DWORD PTR DS:[EDI]
004038FD    39D9            CMP ECX,EBX
004038FF    75 58           JNZ SHORT crackme8.00403959
00403901    4A              DEC EDX
00403902    74 15           JE SHORT crackme8.00403919
00403904    8B4E 04         MOV ECX,DWORD PTR DS:[ESI+4]
00403907    8B5F 04         MOV EBX,DWORD PTR DS:[EDI+4]
0040390A    39D9            CMP ECX,EBX
0040390C    75 4B           JNZ SHORT crackme8.00403959
0040390E    83C6 08         ADD ESI,8
00403911    83C7 08         ADD EDI,8
00403914    4A              DEC EDX
00403915  ^ 75 E2           JNZ SHORT crackme8.004038F9
00403917    EB 06           JMP SHORT crackme8.0040391F
00403919    83C6 04         ADD ESI,4
0040391C    83C7 04         ADD EDI,4
0040391F    5A              POP EDX
00403920    83E2 03         AND EDX,3
00403923    74 22           JE SHORT crackme8.00403947
00403925    8B0E            MOV ECX,DWORD PTR DS:[ESI]
00403927    8B1F            MOV EBX,DWORD PTR DS:[EDI]
00403929    38D9            CMP CL,BL
0040392B    75 41           JNZ SHORT crackme8.0040396E
0040392D    4A              DEC EDX
0040392E    74 17           JE SHORT crackme8.00403947
00403930    38FD            CMP CH,BH
00403932    75 3A           JNZ SHORT crackme8.0040396E
00403934    4A              DEC EDX
00403935    74 10           JE SHORT crackme8.00403947
00403937    81E3 0000FF00   AND EBX,0FF0000
0040393D    81E1 0000FF00   AND ECX,0FF0000
00403943    39D9            CMP ECX,EBX
00403945    75 27           JNZ SHORT crackme8.0040396E
00403947    01C0            ADD EAX,EAX
00403949    EB 23           JMP SHORT crackme8.0040396E
0040394B    8B57 FC         MOV EDX,DWORD PTR DS:[EDI-4]
0040394E    29D0            SUB EAX,EDX
00403950    EB 1C           JMP SHORT crackme8.0040396E
00403952    8B46 FC         MOV EAX,DWORD PTR DS:[ESI-4]
00403955    29D0            SUB EAX,EDX
00403957    EB 15           JMP SHORT crackme8.0040396E
00403959    5A              POP EDX
0040395A    38D9            CMP CL,BL
0040395C    75 10           JNZ SHORT crackme8.0040396E
0040395E    38FD            CMP CH,BH
00403960    75 0C           JNZ SHORT crackme8.0040396E
00403962    C1E9 10         SHR ECX,10
00403965    C1EB 10         SHR EBX,10
00403968    38D9            CMP CL,BL
0040396A    75 02           JNZ SHORT crackme8.0040396E
0040396C    38FD            CMP CH,BH
0040396E    5F              POP EDI
0040396F    5E              POP ESI
00403970    5B              POP EBX
00403971    C3              RETN
程序运行到此处
00419BD4   /75 1E           JNZ SHORT crackme8.00419BF4
只管F8,一直到RETN,程序经过下列代码,
00419BD6    8B77 04         MOV ESI,DWORD PTR DS:[EDI+4]
00419BD9    85F6            TEST ESI,ESI
00419BDB    74 1B           JE SHORT crackme8.00419BF8
00419BDD    8BC6            MOV EAX,ESI
00419BDF    8B15 E87D4100   MOV EDX,DWORD PTR DS:[417DE8]         ; crackme8.00417E28
00419BE5    E8 568FFEFF     CALL crackme8.00402B40
00419BEA    84C0            TEST AL,AL
00419BEC    74 0A           JE SHORT crackme8.00419BF8
00419BEE    F646 20 01      TEST BYTE PTR DS:[ESI+20],1
00419BF2    74 04           JE SHORT crackme8.00419BF8
00419BF4    33DB            XOR EBX,EBX
00419BF6    EB 02           JMP SHORT crackme8.00419BFA
00419BF8    B3 01           MOV BL,1
00419BFA    8B55 FC         MOV EDX,DWORD PTR SS:[EBP-4]
00419BFD    8BC7            MOV EAX,EDI
00419BFF    E8 385AFFFF     CALL crackme8.0040F63C
00419C04    84DB            TEST BL,BL
00419C06    74 0A           JE SHORT crackme8.00419C12
00419C08    8B55 FC         MOV EDX,DWORD PTR SS:[EBP-4]
00419C0B    8BC7            MOV EAX,EDI
00419C0D    E8 C6010000     CALL crackme8.00419DD8
00419C12    33C0            XOR EAX,EAX
00419C14    5A              POP EDX
00419C15    59              POP ECX
00419C16    59              POP ECX
00419C17    64:8910         MOV DWORD PTR FS:[EAX],EDX
00419C1A    68 2F9C4100     PUSH crackme8.00419C2F
00419C1F    8D45 F8         LEA EAX,DWORD PTR SS:[EBP-8]
00419C22    E8 1D99FEFF     CALL crackme8.00403544
00419C27    C3              RETN
程序运行到此处
00419C2F    5F              POP EDI
只管F8,一直到RETN,程序经过下列代码,
00419C30    5E              POP ESI                               ; 00D14694
00419C31    5B              POP EBX
00419C32    59              POP ECX
00419C33    59              POP ECX
00419C34    5D              POP EBP
00419C35    C3              RETN
程序运行到此处
0042BF28    8D55 FC         LEA EDX,DWORD PTR SS:[EBP-4]
0042BF2B    8B83 EC010000   MOV EAX,DWORD PTR DS:[EBX+1EC]
0042BF31    E8 72DEFEFF     CALL crackme8.00419DA8
0042BF36    8B55 FC         MOV EDX,DWORD PTR SS:[EBP-4]         ; 用户名
0042BF39    8BC3            MOV EAX,EBX
0042BF3B    8B08            MOV ECX,DWORD PTR DS:[EAX]
0042BF3D    FF51 18         CALL DWORD PTR DS:[ECX+18]
0042BF40    8D55 FC         LEA EDX,DWORD PTR SS:[EBP-4]
0042BF43    8B83 F0010000   MOV EAX,DWORD PTR DS:[EBX+1F0]
0042BF49    E8 5ADEFEFF     CALL crackme8.00419DA8
0042BF4E    8B55 FC         MOV EDX,DWORD PTR SS:[EBP-4]         ; EDX中取得单位
0042BF51    8D85 FCFEFFFF   LEA EAX,DWORD PTR SS:[EBP-104]
0042BF57    B9 FF000000     MOV ECX,0FF
0042BF5C    E8 3B78FDFF     CALL crackme8.0040379C
0042BF61    8D95 FCFEFFFF   LEA EDX,DWORD PTR SS:[EBP-104]
0042BF67    B8 24E74200     MOV EAX,crackme8.0042E724            ; 单位长度+单位字符串
0042BF6C    B1 0A           MOV CL,0A
0042BF6E    E8 8D67FDFF     CALL crackme8.00402700
0042BF73    8D55 FC         LEA EDX,DWORD PTR SS:[EBP-4]
0042BF76    8B83 F4010000   MOV EAX,DWORD PTR DS:[EBX+1F4]
0042BF7C    E8 27DEFEFF     CALL crackme8.00419DA8
0042BF81    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]         ; Serial
0042BF84    E8 EBA5FDFF     CALL crackme8.00406574
0042BF89    A3 60E74200     MOV DWORD PTR DS:[42E760],EAX        ; 42e760存放serial in hex
0042BF8E    8D55 FC         LEA EDX,DWORD PTR SS:[EBP-4]
0042BF91    8B83 F8010000   MOV EAX,DWORD PTR DS:[EBX+1F8]
0042BF97    E8 0CDEFEFF     CALL crackme8.00419DA8
0042BF9C    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]         ; Code
0042BF9F    E8 D0A5FDFF     CALL crackme8.00406574
0042BFA4    A3 64E74200     MOV DWORD PTR DS:[42E764],EAX        ; 42e764存放code in hex
0042BFA9    33C0            XOR EAX,EAX
0042BFAB    A3 30E74200     MOV DWORD PTR DS:[42E730],EAX        ; 42E730清零
0042BFB0    33C0            XOR EAX,EAX
0042BFB2    A3 34E74200     MOV DWORD PTR DS:[42E734],EAX        ; 42E734清零
0042BFB7    E8 14FEFFFF     CALL crackme8.0042BDD0               ; 计算正确的Serial
0042BFBC    E8 83FEFFFF     CALL crackme8.0042BE44               ; 计算正确的Code
0042BFC1    E8 E2FEFFFF     CALL crackme8.0042BEA8               ; 判断Serial与Code是否正确
0042BFC6    33C0            XOR EAX,EAX
0042BFC8    5A              POP EDX
0042BFC9    59              POP ECX
0042BFCA    59              POP ECX
0042BFCB    64:8910         MOV DWORD PTR FS:[EAX],EDX
0042BFCE    68 E3BF4200     PUSH crackme8.0042BFE3
0042BFD3    8D45 FC         LEA EAX,DWORD PTR SS:[EBP-4]
0042BFD6    E8 6975FDFF     CALL crackme8.00403544
0042BFDB    C3              RETN

其中CALL crackme8.0042BDD0               ; 计算正确的Serial函数如下:
0042BDD0    56              PUSH ESI
0042BDD1    57              PUSH EDI
0042BDD2    BE 30E74200     MOV ESI,crackme8.0042E730
0042BDD7    BF 38E74200     MOV EDI,crackme8.0042E738
0042BDDC    A1 1CE74200     MOV EAX,DWORD PTR DS:[42E71C]
0042BDE1    8B40 08         MOV EAX,DWORD PTR DS:[EAX+8]         ; 取得用户名
0042BDE4    0FB640 03       MOVZX EAX,BYTE PTR DS:[EAX+3]
0042BDE8    8907            MOV DWORD PTR DS:[EDI],EAX           ; 用户名第4个字符放在42E738中
0042BDEA    A1 1CE74200     MOV EAX,DWORD PTR DS:[42E71C]
0042BDEF    8B40 08         MOV EAX,DWORD PTR DS:[EAX+8]
0042BDF2    0FB640 01       MOVZX EAX,BYTE PTR DS:[EAX+1]
0042BDF6    8947 04         MOV DWORD PTR DS:[EDI+4],EAX         ; 用户名第2个字符放在42E73C中
0042BDF9    A1 1CE74200     MOV EAX,DWORD PTR DS:[42E71C]
0042BDFE    8B40 08         MOV EAX,DWORD PTR DS:[EAX+8]
0042BE01    0FB640 04       MOVZX EAX,BYTE PTR DS:[EAX+4]
0042BE05    8947 08         MOV DWORD PTR DS:[EDI+8],EAX         ; 用户名第5个字符放在42E740中
0042BE08    A1 1CE74200     MOV EAX,DWORD PTR DS:[42E71C]
0042BE0D    8B40 08         MOV EAX,DWORD PTR DS:[EAX+8]
0042BE10    0FB600          MOVZX EAX,BYTE PTR DS:[EAX]
0042BE13    8947 0C         MOV DWORD PTR DS:[EDI+C],EAX         ; 用户名第1个字符放在42E744中
0042BE16    A1 1CE74200     MOV EAX,DWORD PTR DS:[42E71C]
0042BE1B    8B40 08         MOV EAX,DWORD PTR DS:[EAX+8]
0042BE1E    0FB640 02       MOVZX EAX,BYTE PTR DS:[EAX+2]
0042BE22    8947 10         MOV DWORD PTR DS:[EDI+10],EAX        ; 用户名第3个字符放在42E748中
0042BE25    B2 05           MOV DL,5
0042BE27    8BC7            MOV EAX,EDI
0042BE29    6908 800D0000   IMUL ECX,DWORD PTR DS:[EAX],0D80     ; 用户名按照第4,2,5,1,3字符的顺序的ASCII码大小*0xD80
0042BE2F    030E            ADD ECX,DWORD PTR DS:[ESI]
0042BE31    81F1 15A10300   XOR ECX,3A115
0042BE37    890E            MOV DWORD PTR DS:[ESI],ECX
0042BE39    83C0 04         ADD EAX,4
0042BE3C    FECA            DEC DL
0042BE3E  ^ 75 E9           JNZ SHORT crackme8.0042BE29
0042BE40    5F              POP EDI
0042BE41    5E              POP ESI
0042BE42    C3              RETN

其中CALL crackme8.0042BE44               ; 计算正确的Code函数如下:
0042BE44    56              PUSH ESI
0042BE45    BE 34E74200     MOV ESI,crackme8.0042E734
0042BE4A    33C0            XOR EAX,EAX
0042BE4C    A0 26E74200     MOV AL,BYTE PTR DS:[42E726]          ; 42E724 存放的是单位长度加单位字符串
0042BE51    A3 4CE74200     MOV DWORD PTR DS:[42E74C],EAX        ; 单位第2个字符存放在42E74C中
0042BE56    33C0            XOR EAX,EAX
0042BE58    A0 29E74200     MOV AL,BYTE PTR DS:[42E729]
0042BE5D    A3 50E74200     MOV DWORD PTR DS:[42E750],EAX        ; 单位第5个字符存放在42E750中
0042BE62    33C0            XOR EAX,EAX
0042BE64    A0 27E74200     MOV AL,BYTE PTR DS:[42E727]
0042BE69    A3 54E74200     MOV DWORD PTR DS:[42E754],EAX        ; 单位第3个字符存放在42E754中
0042BE6E    33C0            XOR EAX,EAX
0042BE70    A0 25E74200     MOV AL,BYTE PTR DS:[42E725]
0042BE75    A3 58E74200     MOV DWORD PTR DS:[42E758],EAX        ; 单位第1个字符存放在42E758中
0042BE7A    33C0            XOR EAX,EAX
0042BE7C    A0 28E74200     MOV AL,BYTE PTR DS:[42E728]
0042BE81    A3 5CE74200     MOV DWORD PTR DS:[42E75C],EAX        ; 单位第4个字符存放在42E75C中
0042BE86    B2 05           MOV DL,5
0042BE88    B8 38E74200     MOV EAX,crackme8.0042E738
0042BE8D    6908 621A0000   IMUL ECX,DWORD PTR DS:[EAX],1A62     ; 用户名按照第4,2,5,1,3字符顺序与0x1A62向乘
0042BE93    030E            ADD ECX,DWORD PTR DS:[ESI]
0042BE95    81F1 36DC0D00   XOR ECX,0DDC36                       ; 异或0xDDC36
0042BE9B    890E            MOV DWORD PTR DS:[ESI],ECX
0042BE9D    83C0 04         ADD EAX,4
0042BEA0    FECA            DEC DL
0042BEA2  ^ 75 E9           JNZ SHORT crackme8.0042BE8D
0042BEA4    5E              POP ESI
0042BEA5    C3              RETN

其中CALL crackme8.0042BEA8               ; 判断Serial与Code是否正确函数如下:
0042BEA8    A1 64E74200     MOV EAX,DWORD PTR DS:[42E764]
0042BEAD    3B05 34E74200   CMP EAX,DWORD PTR DS:[42E734]        ; 42E734正确的CODE in Hex
0042BEB3    75 19           JNZ SHORT crackme8.0042BECE          ; 关键跳转
0042BEB5    A1 60E74200     MOV EAX,DWORD PTR DS:[42E760]
0042BEBA    3B05 30E74200   CMP EAX,DWORD PTR DS:[42E730]        ; 42E730正确的Serial in Hex
0042BEC0    75 0C           JNZ SHORT crackme8.0042BECE          ; 关键跳转
0042BEC2    A1 70D94200     MOV EAX,DWORD PTR DS:[42D970]
0042BEC7    8B00            MOV EAX,DWORD PTR DS:[EAX]
0042BEC9    E8 6EA6FFFF     CALL crackme8.0042653C
0042BECE    C3              RETN

根据上面描述可以很容易写出注册机:

#include "stdio.h"

void main()
{
        char name[20];
        int  i;
        long sn_name=0;
        long code_name=0;
        long temp;
        int  s[5]={3,1,4,0,2};
        printf("please input your name!\n");
        scanf("%s",name);
       
        for(i=0;i<5;i++)
        {
                temp=name[s[i]]*0xD80;
                temp+=sn_name;
                temp=temp^0x3A115;
                sn_name=temp;
        }
        for(i=0;i<5;i++)
        {
                temp=name[s[i]]*0x1A62;
                temp+=code_name;
                temp=temp^0xDDC36;
                code_name=temp;
        }
        printf("The correct Serial is %d\n",sn_name);
        printf("The correct Code is %d\n",code_name);
}


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (10)
雪    币: 47147
活跃值: (20455)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
又有一位新人冒出水面,文章不错。
2006-4-15 15:39
0
雪    币: 196
活跃值: (135)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
3
学习加灌水..
2006-4-15 15:50
0
雪    币: 69
活跃值: (342)
能力值: ( LV9,RANK:550 )
在线值:
发帖
回帖
粉丝
4
谢谢老大加精,这将是对我这两天工作的最大肯定。
2006-4-15 15:53
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你怎么会想到双击check?
这个方法对于单击找不到name或者假码的软件有没有普遍性?
2006-4-16 08:50
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
问题同楼上
好像看起来没什么道理的说
2006-4-16 12:24
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
问题同楼上
好像看起来没什么道理的说
2006-4-16 12:29
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
楼主,能不能把GCCrackme8也传上来
2006-4-17 06:26
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
双击“Check”按钮,(说明,单击不行,单击后在内存中找不到用户名,双击后能找到用户名称了。必须双击)
ALT+M,然后在CODE段,搜索内存"hai",发现

楼主能解释一下为什么不能找到用户名称吗?我也老是遇到找不到的情况.
2006-4-17 08:27
0
雪    币: 69
活跃值: (342)
能力值: ( LV9,RANK:550 )
在线值:
发帖
回帖
粉丝
10
双击,我是运气试出来的。我希望有高手给出详细说明。最近有个项目太忙,好久没来灌水学习了。 下次我将GCCrackme8传上来了。
2006-4-20 19:44
0
雪    币: 322
活跃值: (113)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
老乡中的牛人啊
2010-9-20 14:56
0
游客
登录 | 注册 方可回帖
返回
//