新鲜出炉!热气腾腾
作者:台州学院 屈礼军
下载地址:
http://www.live-share.com/files/185460/SCG__CRACKME.rar.html 对无法上传图片表示不满!我还想图文并茂呢!
新鲜出炉!热气腾腾的CRACKME啊,推荐新手来玩玩,一定很有味道。
这里是“SCG雪神CRACKME.exe”的下载:(欢迎来破解)挺有意思的
下载地址
http://www.live-share.com/files/185460/SCG__CRACKME.rar.html
注意,用户名和注册码都不能为空,而且必须是整数(数字)
破文打包:
http://www.live-share.com/files/185495/__.rar.html
http://www.live-share.com/files/185519/__maple.rar.html 首先查壳,PEID看出是FSG2.0的,脱壳机看雪里有的;虽然简单,我们还是来手
动脱壳!载入程序:一开始就到壳的入口点了,下面开始手脱~
00400154 > 8725 E8C94100 XCHG DWORD PTR DS:[41C9E8],ESP 未说明就一路F8
0040015A 61 POPAD
0040015B 94 XCHG EAX,ESP
0040015C 55 PUSH EBP
0040015D A4 MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
0040015E B6 80 MOV DH,80
00400160 FF13 CALL DWORD PTR DS:[EBX]
00400162 ^ 73 F9 JNB SHORT SCG雪神C.0040015D
00400164 33C9 XOR ECX,ECX F4到这里
00400166 FF13 CALL DWORD PTR DS:[EBX]
00400168 73 16 JNB SHORT SCG雪神C.00400180
0040016A 33C0 XOR EAX,EAX
0040016C FF13 CALL DWORD PTR DS:[EBX]
0040016E 73 1F JNB SHORT SCG雪神C.0040018F
00400170 B6 80 MOV DH,80
00400172 41 INC ECX
00400173 B0 10 MOV AL,10
00400175 FF13 CALL DWORD PTR DS:[EBX]
00400177 12C0 ADC AL,AL
00400179 ^ 73 FA JNB SHORT SCG雪神C.00400175
0040017B 75 3A JNZ SHORT SCG雪神C.004001B7 F4到这里
0040017D AA STOS BYTE PTR ES:[EDI]
0040017E ^ EB E0 JMP SHORT SCG雪神C.00400160
00400180 FF53 08 CALL DWORD PTR DS:[EBX+8] F4到这里
00400183 02F6 ADD DH,DH
00400185 83D9 01 SBB ECX,1
00400188 75 0E JNZ SHORT SCG雪神C.00400198
0040018A FF53 04 CALL DWORD PTR DS:[EBX+4]
0040018D EB 24 JMP SHORT SCG雪神C.004001B3
0040018F AC LODS BYTE PTR DS:[ESI]
00400190 D1E8 SHR EAX,1
00400192 74 2D JE SHORT SCG雪神C.004001C1
00400194 13C9 ADC ECX,ECX
00400196 EB 18 JMP SHORT SCG雪神C.004001B0
004001A4 /73 0A JNB SHORT SCG雪神C.004001B0
004001A6 |80FC 05 CMP AH,5
004001A9 |73 06 JNB SHORT SCG雪神C.004001B1
004001AB |83F8 7F CMP EAX,7F
004001AE |77 02 JA SHORT SCG雪神C.004001B2
004001B0 \41 INC ECX
004001B1 41 INC ECX
004001B2 95 XCHG EAX,EBP
004001B3 8BC5 MOV EAX,EBP
004001B5 B6 00 MOV DH,0
004001B7 56 PUSH ESI
004001B8 8BF7 MOV ESI,EDI
004001BA 2BF0 SUB ESI,EAX
004001BC F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
004001BE 5E POP ESI
004001BF ^ EB 9F JMP SHORT SCG雪神C.00400160
004001C1 5E POP ESI F4到这里
004001C2 AD LODS DWORD PTR DS:[ESI]
004001C3 97 XCHG EAX,EDI
004001C2 AD LODS DWORD PTR DS:[ESI]
004001C3 97 XCHG EAX,EDI
004001C4 AD LODS DWORD PTR DS:[ESI]
004001C5 50 PUSH EAX
004001C6 FF53 10 CALL DWORD PTR DS:[EBX+10]
004001C9 95 XCHG EAX,EBP
004001CA 8B07 MOV EAX,DWORD PTR DS:[EDI]
004001CC 40 INC EAX
004001CD ^ 78 F3 JS SHORT SCG雪神C.004001C2
004001CF 75 03 JNZ SHORT SCG雪神C.004001D4
004001D1 FF63 0C JMP DWORD PTR DS:[EBX+C]
这一段咋一看,傻乐!如果你没接触过FSC2.0的话,相信也能觉察到这里似乎是
个死循环但程序一定能从这一段出去,那么在哪里呢?对了,就是这个可疑的
JMP,我们移动鼠标到004001D1这一行,F2下断点,单击运行;F2再次取消断
点,然后按ENTER键到了程序入口点
004001D4 50 PUSH EAX 这里来断点
004001D5 55 PUSH EBP
004001D6 FF53 14 CALL DWORD PTR DS:[EBX+14]
004001D9 AB STOS DWORD PTR ES:[EDI]
004001DA ^ EB EE JMP SHORT SCG雪神C.004001CA
**********************************************************程序入口
00401250 68 DB 68 ; CHAR 'h' 程序入口点了
00401251 44 DB 44 ; CHAR 'D'
00401252 B2 DB B2
00401253 40 DB 40 ; CHAR '@'
00401254 00 DB 00
00401255 E8 DB E8
00401256 F0 DB F0
00401257 FF DB FF
00401258 FF DB FF
00401259 FF DB FF
0040125A 00 DB 00
0040125B 00 DB 00
0040125C 00 DB 00
0040125D 00 DB 00
0040125E 00 DB 00
0040125F 00 DB 00
00401260 30 DB 30 ; CHAR '0'
00401261 00 DB 00
00401262 00 DB 00
00401263 00 DB 00
00401264 38 DB 38 ; CHAR '8'
到了程序入口点后,按F2下断点,运行程序!然后再次取消断点。单击鼠标右
键,(如图)
从模块中删除分析,还以原来的面貌。好了,该在这里脱壳了(当然你也可以带
壳调试,我喜欢一层一层,简单化)你可以用OD自带的插件OLLDUMP来脱壳,选
用第一种模式;这里一次就脱成功了,有时脱不好,需要用Import REC来修复
表,大小改成1000,多抓取输入表内容然后第一层跟踪一下,将没用的全部CUT
掉,然后选取文件修复。一般就可以了,实在不行就自己跟进去,手动修复。但
是在这里很奇怪了,我在学校机房里脱这个程序时无法直接运行,修复后才可
以;但在寝室里的电脑上就一次成功!奇怪了,有人知
道就跟一下帖子指教一下。系统用的都是GHOST原版镜象拷贝。
杀毒:
NOD32 AVG 费尔防火墙 是不是XP版本之间的差别?
好了,脱壳保存可执行文件为1.exe,再次PEID查壳,VB5.0/6.0
脱壳就告一段落了,这个CRACKME是我们老大雪神(大一啊)学了一两节课的VB
后就迫不及待写来玩玩和学习的。
要求成员们都去熟悉VB破解,每天都进步些。
毕竟这年头很多软件都是VB写出来的。
呵呵,所以这个VB程序写的应该是挺简单和破烂的,朋友们不要见外。
听老大雪神说是加入了RND随机数,来迷惑别人的。
整个是明码比较,算法,呵呵等会儿在说。我们把“SCG雪神CRACKME.EXE”和
“注册机.EXE”都传来,供初学者乐乐。整体来讲,听说简单的。
我们接着来:
选择调试――关闭。我们转来调试“1.EXE”
加载“1.EXE”
00401250 >/$ 68 44B24000 PUSH 1.0040B244
00401255 |. E8 F0FFFFFF CALL <JMP.&MSVBVM60.ThunRTMain>
0040125A |. 0000 ADD BYTE PTR DS:[EAX],AL
0040125C |. 0000 ADD BYTE PTR DS:[EAX],AL
0040125E |. 0000 ADD BYTE PTR DS:[EAX],AL
00401260 |. 3000 XOR BYTE PTR DS:[EAX],AL
00401262 |. 0000 ADD BYTE PTR DS:[EAX],AL
00401264 |. 3800 CMP BYTE PTR DS:[EAX],AL
00401266 |. 0000 ADD BYTE PTR DS:[EAX],AL
00401268 |. 0000 ADD BYTE PTR DS:[EAX],AL
0040126A |. 0000 ADD BYTE PTR DS:[EAX],AL
0040126C |. 1B83 416AD147 SBB EAX,DWORD PTR DS:[EBX+47D16A41]
00401272 |. 27 DAA
00401273 |. 4C DEC ESP
00401274 |. 91 XCHG EAX,ECX
00401275 |. 1950 09 SBB DWORD PTR DS:[EAX+9],EDX
00401278 |. 5C POP ESP
00401279 |. 83D7 88 ADC EDI,-78
0040127C |. 0000 ADD BYTE PTR DS:[EAX],AL
0040127E |. 0000 ADD BYTE PTR DS:[EAX],AL
直接运行程序
单击鼠标右键,选择“查找”――“当前模块中的名称”
选择“rtcmsgbox”,双击来到:
00401030 > . 292F4773 DD MSVBVM60.rtcMsgBox 来到这里
00401034 > . 9A624873 DD MSVBVM60._adj_fdiv_m16i
00401038 > . 9A634873 DD MSVBVM60._adj_fdivr_m16i
0040103C > . F39D4973 DD MSVBVM60.__vbaFpR4
00401040 > . 64B34873 DD MSVBVM60._CIsin
00401044 > . AF443B73 DD MSVBVM60.__vbaChkstk ; ASCII "QWP="
00401048 > . 6FD83A73 DD MSVBVM60.EVENT_SINK_AddRef
0040104C > . 13483B73 DD MSVBVM60.__vbaStrCmp
00401050 > . 8A694873 DD MSVBVM60._adj_fpatan
00401054 > . D8594773 DD MSVBVM60.__vbaStrR8
00401058 > . 85E33B73 DD MSVBVM60.EVENT_SINK_Release
0040105C > . 09B44873 DD MSVBVM60._CIsqrt
00401060 > . 7C674673 DD MSVBVM60.EVENT_SINK_QueryInterface
00401064 > . 5B4E3B73 DD MSVBVM60.__vbaExceptHandler
00401068 > . 1D664873 DD MSVBVM60._adj_fprem
0040106C > . 4E634873 DD MSVBVM60._adj_fdivr_m64
00401070 > . 7F9D4973 DD MSVBVM60.__vbaFPException
00401074 > . A1B24873 DD MSVBVM60._CIlog
在这里设置断点!填入用户名111和假注册码222,单击注册,马上就能在
右下角堆栈窗口看到你的假码和真的注册码,它们的下面那行是“真注册码-假
注册码”的结果。
00401030 > . 292F4773 DD MSVBVM60.rtcMsgBox 在这里断点
填入用户名111和注册码222后,单击注册,等会儿应该会有OD出错信息,没关
系,我们第一层次要找的东西绝对在右下角堆栈中:
堆栈内容:
0014D3AC 00000000
0014D3B0 00000000
0014D3B4 733BF2D0 MSVBVM60.733BF2D0
0014D3B8 00000004
0014D3BC 00000007
0014D3C0 00000000
0014D3C4 0000100F
0014D3C8 00000000
0014D3CC 0015191C UNICODE "20640007371" 真注册码
0014D3D0 00151874 UNICODE "222" 假注册码
0014D3D4 00000001
0014D3D8 001518AC UNICODE "20640007149"
“20640007371-222=20640007149”
这里,如果结果为零,也就注册成功了
0014D3DC 00000000
0014D3E0 00000000
0014D3E4 0040BA70 1.0040BA70
数据记下来,退出OD,然后填入“破解我1.EXE”,
填入用户名:111 注册码:20640007371
单击注册:
天哪,错了,我想是自己找错了注册码了。
不甘心,小心翼翼地又填入了一边,蹑手蹑脚地、语无伦次地、逐字逐句地,然
后单击“注册”~~
结果伴随着“中计啦”窗口跳出――果然是错的。
怎么办?
放弃了吧!
不行!?
还要接着分析的话,那么就来吧!
换种方式,打开“VBExplorer”来准确地查找事件(前提是程序已经脱壳,而且
是VB写的)
左下角来看看:属性:里面有:command1 commandbutton 项目
如图选择:Click事件,地址:40BE50
好了,将数据记下来,关闭“VBExplorer”,打开OD加载“1.EXE”,让程序先运行起来,
单击鼠标右键转到表达式:40BE50,按ENTER到了这里:
0040BE50 > \55 PUSH EBP 这里
0040BE51 . 8BEC MOV EBP,ESP
0040BE53 . 83EC 0C SUB ESP,0C
(如图)在这里下断点
然后,在程序界面里输入:用户名:111 注册码:222
单击“注册”
好了断下来了:(以下跟算法关系紧密,直接体现了算法,我破VB功力不太够,
所以注释不多;还请见谅!达人自己研究吧!)为了减少篇幅,我将下面的很多
中间代码删除了,想研究齐全的代码就自己来破解这个东东吧,也就是从
40BE50-----40D29F这么多了。
0040BFED . 7D 12 JGE SHORT 1.0040C001
0040BFEF . 68 A0000000 PUSH 0A0
0040BFF4 . 68 FCB64000 PUSH 1.0040B6FC
0040BFF9 . 57 PUSH EDI
0040BFFA . 50 PUSH EAX
0040BFFB . FF15 1C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresultCheckObj>] ; MSVBVM60.__vbaHresultCheckObj
0040C001 > 8B4D E8 MOV ECX,DWORD PTR SS:[EBP-18] ; 这里,能看到堆栈 SS:[0012F4F0]=001565F4, (UNICODE
"222")也就是我们输入的假注册码
0040C004 . 51 PUSH ECX
0040C005 . 68 10B74000 PUSH 1.0040B710
0040C00A . FF15 4C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCmp>] ; MSVBVM60.__vbaStrCmp
0040C010 . 8BF8 MOV EDI,EAX
0040C012 . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]
0040C015 . F7DF NEG EDI
0040C017 . 1BFF SBB EDI,EDI
0040C019 . 47 INC EDI
0040C01A . F7DF NEG EDI
0040C01C . FF15 B8104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
0040C022 . 8D4D E0 LEA ECX,DWORD PTR SS:[EBP-20]
0040C025 . FF15 BC104000 CALL DWORD PTR
省略...
0040C124 . 68 A0000000 PUSH 0A0
0040C129 . 68 FCB64000 PUSH 1.0040B6FC
0040C12E . 57 PUSH EDI
0040C12F . 50 PUSH EAX
0040C130 . FF15 1C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaHresultCheckObj>] ; MSVBVM60.__vbaHresultCheckObj
0040C136 > 8B4D E8 MOV ECX,DWORD PTR SS:[EBP-18]
0040C139 . 8B46 3C MOV EAX,DWORD PTR DS:[ESI+3C]
0040C13C . 51 PUSH ECX
0040C13D . 8985 44FFFFFF MOV DWORD PTR SS:[EBP-BC],EAX
0040C143 . 8D7E 34 LEA EDI,DWORD PTR DS:[ESI+34]
0040C146 . FF15 7C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaR8Str>] ; MSVBVM60.__vbaR8Str
0040C14C . DB85 44FFFFFF FILD DWORD PTR SS:[EBP-BC]
0040C152 . 8B85 44FFFFFF MOV EAX,DWORD PTR SS:[EBP-BC]
0040C158 . 69C0 B6580600 IMUL EAX,EAX,658B6
0040C15E . DD9D 3CFFFFFF FSTP QWORD PTR SS:[EBP-C4]
0040C164 . DC8D 3CFFFFFF FMUL QWORD PTR SS:[EBP-C4]
0040C16A . DC25 18114000 FSUB QWORD PTR DS:[401118]
省略...
0040D1AB . FF15 B8104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
0040D1B1 . 8B0F MOV ECX,DWORD PTR DS:[EDI]
0040D1B3 . 51 PUSH ECX
0040D1B4 . FF15 7C104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaR8Str>] ; MSVBVM60.__vbaR8Str
0040D1BA . DC1D C8104000 FCOMP QWORD PTR DS:[4010C8]
0040D1C0 . B9 04000280 MOV ECX,80020004
0040D1C5 . 894D A8 MOV DWORD PTR SS:[EBP-58],ECX
0040D1C8 . 894D B8 MOV DWORD PTR SS:[EBP-48],ECX
0040D1CB . DFE0 FSTSW AX
0040D1CD . F6C4 40 TEST AH,40
0040D1D0 . B8 0A000000 MOV EAX,0A
0040D1D5 . 8945 A0 MOV DWORD PTR SS:[EBP-60],EAX
0040D1D8 . 8945 B0 MOV DWORD PTR SS:[EBP-50],EAX
0040D1DB . 74 7E JE SHORT 1.0040D25B ; 关键跳转!这里是关键,跳走了就完蛋了。可以爆破!
0040D1DD . 8B3D 9C104000 MOV EDI,DWORD PTR DS:[<&MSVBVM60.__vbaVarDup>] ; MSVBVM60.__vbaVarDup
0040D1E3 . 8D55 80 LEA EDX,DWORD PTR SS:[EBP-80]
0040D1E6 . 8D4D C0 LEA ECX,DWORD PTR SS:[EBP-40]
0040D1E9 . C745 88 6CB74>MOV DWORD PTR SS:[EBP-78],1.0040B76C
0040D1F0 . C745 80 08000>MOV DWORD PTR SS:[EBP-80],8
0040D1F7 . FFD7 CALL EDI ; <&MSVBVM60.__vbaVarDup>
0040D1F9 . 8D55 90 LEA EDX,DWORD PTR SS:[EBP-70]
0040D1FC . 8D4D D0 LEA ECX,DWORD PTR SS:[EBP-30]
0040D1FF . C745 98 4CB74>MOV DWORD PTR SS:[EBP-68],1.0040B74C
0040D206 . C745 90 08000>MOV DWORD PTR SS:[EBP-70],8
0040D20D . FFD7 CALL EDI
0040D20F . 8D55 A0 LEA EDX,DWORD PTR SS:[EBP-60]
0040D212 . 8D45 B0 LEA EAX,DWORD PTR SS:[EBP-50]
0040D215 . 52 PUSH EDX
0040D216 . 8D4D C0 LEA ECX,DWORD PTR SS:[EBP-40]
0040D219 . 50 PUSH EAX
0040D21A . 51 PUSH ECX
0040D21B . 8D55 D0 LEA EDX,DWORD PTR SS:[EBP-30]
0040D21E . 6A 40 PUSH 40
0040D220 . 52 PUSH EDX
0040D221 . FF15 30104000 CALL DWORD PTR DS:[<&MSVBVM60.rtcMsgBox>] ; MSVBVM60.rtcMsgBox 调用注册成功信息
0040D227 . 50 PUSH EAX
0040D228 . FF15 08104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrI4>] ; MSVBVM60.__vbaStrI4
0040D22E . 8BD0 MOV EDX,EAX
0040D230 . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]
0040D233 . FF15 A8104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrMove>] ; MSVBVM60.__vbaStrMove
0040D239 . 8BD0 MOV EDX,EAX
0040D23B . 8D4E 44 LEA ECX,DWORD PTR DS:[ESI+44]
0040D23E . FFD3 CALL EBX
0040D240 . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]
0040D243 . FF15 B8104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
0040D249 . 8D45 A0 LEA EAX,DWORD PTR SS:[EBP-60]
0040D24C . 8D4D B0 LEA ECX,DWORD PTR SS:[EBP-50]
0040D24F . 50 PUSH EAX
0040D250 . 8D55 C0 LEA EDX,DWORD PTR SS:[EBP-40]
0040D253 . 51 PUSH ECX
0040D254 . 8D45 D0 LEA EAX,DWORD PTR SS:[EBP-30]
0040D257 . 52 PUSH EDX
0040D258 . 50 PUSH EAX
0040D259 . EB 7C JMP SHORT 1.0040D2D7
0040D25B > 8B3D 9C104000 MOV EDI,DWORD PTR DS:[<&MSVBVM60.__vbaVarDup>] ; MSVBVM60.__vbaVarDup
0040D261 . 8D55 80 LEA EDX,DWORD PTR SS:[EBP-80]
0040D264 . 8D4D C0 LEA ECX,DWORD PTR SS:[EBP-40]
0040D267 . C745 88 9CB74>MOV DWORD PTR SS:[EBP-78],1.0040B79C
0040D26E . C745 80 08000>MOV DWORD PTR SS:[EBP-80],8
0040D275 . FFD7 CALL EDI ; <&MSVBVM60.__vbaVarDup>
0040D277 . 8D55 90 LEA EDX,DWORD PTR SS:[EBP-70]
0040D27A . 8D4D D0 LEA ECX,DWORD PTR SS:[EBP-30]
0040D27D . C745 98 78B74>MOV DWORD PTR SS:[EBP-68],1.0040B778
0040D284 . C745 90 08000>MOV DWORD PTR SS:[EBP-70],8
0040D28B . FFD7 CALL EDI
0040D28D . 8D4D A0 LEA ECX,DWORD PTR SS:[EBP-60]
0040D290 . 8D55 B0 LEA EDX,DWORD PTR SS:[EBP-50]
0040D293 . 51 PUSH ECX
0040D294 . 8D45 C0 LEA EAX,DWORD PTR SS:[EBP-40]
0040D297 . 52 PUSH EDX
0040D298 . 50 PUSH EAX
0040D299 . 8D4D D0 LEA ECX,DWORD PTR SS:[EBP-30]
0040D29C . 6A 20 PUSH 20
0040D29E . 51 PUSH ECX
0040D29F . FF15 30104000 CALL DWORD PTR DS:[<&MSVBVM60.rtcMsgBox>] ; MSVBVM60.rtcMsgBox 调用注册失败的提示
0040D2A5 . 50 PUSH EAX
0040D2A6 . FF15 08104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrI4>] ; MSVBVM60.__vbaStrI4
0040D2AC . 8BD0 MOV EDX,EAX
0040D2AE . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]
0040D2B1 . FF15 A8104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrMove>] ; MSVBVM60.__vbaStrMove
0040D2B7 . 8BD0 MOV EDX,EAX
0040D2B9 . 8D4E 48 LEA ECX,DWORD PTR DS:[ESI+48]
0040D2BC . FFD3 CALL EBX
0040D2BE . 8D4D E8 LEA ECX,DWORD PTR SS:[EBP-18]
0040D2C1 . FF15 B8104000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeStr>] ; MSVBVM60.__vbaFreeStr
0040D2C7 . 8D55 A0 LEA EDX,DWORD PTR SS:[EBP-60]
0040D2CA . 8D45 B0 LEA EAX,DWORD PTR SS:[EBP-50]
0040D2CD . 52 PUSH EDX
0040D2CE . 8D4D C0 LEA ECX,DWORD PTR SS:[EBP-40]
0040D2D1 . 50 PUSH EAX
0040D2D2 . 8D55 D0 LEA EDX,DWORD PTR SS:[EBP-30]
.
.
.
上面老长的代码是从截获按扭命令开始,到注册失败的完整过程。
可以看到:
其中加入了许多随机因数,也就是说一个用户名有许多个注册码,也许只有几
个,但可以肯定是不止一个,而且就算你获得的注册码是正确的,也可能第一次
注册不成功,你多试几次,就能成功!当然,如果是不正确的注册码,恐怕多试
N次也不会成功。
这个思路可以应用到共享软件的加密上,我没有去找相关信息,因为要上课了;
估计应该有人想到了吧?!呵呵
我们得出的结论是写共享软件时,屏蔽掉许多实用功能,只有注册成功后才能解
开封锁,客户通过正常手段获得了注册码(比方你很肯定得告诉软件购买者:用
这个帐号绝对可以,但可能要多实几次,直到成功)
以后再注册失败也不会影响你的功能就好了。
当然,写共享软件时应该选用非明码比较,而且比较的地方不止一个,起码几十
个,而且每一个都隔得很远。这样才能防止程序过简单地被人破解。
算法部分如果是自己研究的,就搞个几百几千行,自己回忆不起来了没有关系
的,在写代码时保存好算法可以了。世界上没有破解不掉的软件,只有无限接近
无法破解的加密。也就是说让软件在它的生命周期里不要遭受盗版就完全够用
了,几年后它也就丧失了应有的价值了,那时基本上会有别的软件来替代你的
了。就算到时被破解了,损失也不大。
好了,快要去听老师讲课了,写些重点,上面代码我没时间讲情楚,VB破解功力
不够啊哈哈。我自己不太讲得清楚。
有兴趣的来试试。感谢雪神老大,哈哈!他也是和
我一样刚学得一节课VB,迫不及待得写了“SCG雪神CRACKME.exe”CRACKME,
当作SCG的初级入会题。现在他同意公开算法,毕竟我们也都是菜鸟啊。
但十年后谁还敢这么说?
初生牛犊不怕虎!这个代码写得我自己都知道烂,烂归烂,能用就算了。
过些天等我们正式开课了,我们就好好挖掘它的方法和作用。在这里景仰那些大
虾们!向你们致敬。
越早接触这些东西,就越早能应用到实践中。
下面写下它的算法注册机:(就用VB吧,我们这学期开VB课程,刚正式上了两节
课,偶有了一点感悟,虽然老师连实际操作都还没讲)
VB算法代码:
Option Explicit
Dim a As String
Dim b As String
Dim c As Long
Dim m As String
Const x = 415926
Const y = 358979
Const z = 846264
Private Sub Command1_Click()
Label4.Visible = False
If Text1.Text = "" Then
m = MsgBox("您忘记输入用户名了!", 0 + 64 + 0, "提示:")
Else
End If
Text2.Visible = True
Text2.Enabled = True
Label2.Visible = True
c = Rnd
a = Text1.Text * c - y + z - x * c
c = Rnd
a = a * c + x * c
c = Rnd
a = a * c + y * c = Rnd
a = Text1.Text * c - y + z - x * c
c = Rnd
a = a * c + x * c = Rnd
a = Text1.Text * c - y + z - x * c
c = Rnd
a = a * c + x * c
c = Rnd
a = a * c + y * c
c = Rnd
a = a * c + y * c
c = Rnd
a = Text1.Text * c - y + z - x * c
c = Rnd
a = a * c + x * c
a = a * c + y * c
a = a + x + y + z
c = Rnd
a = Text1.Text * c - y + z - x * c
c = Rnd
a = a * c + x * c
c = Rnd
a = a * c + y * c
c = Rnd
a = Text1.Text * c - y + z - x * c
a = a * c + x * c
a = a * c + y * c
a = a + x + y + z
a = a + x + y + z
a = a + x + y + z
If c = 0 Then
a = a * 314 + y * 314 - z * 314
Else
a = y * 314 - a * 31 - z * 77
End If
c = Rnd
If c = 0 Then
a = y * 24 + z * 25 + z + 55
Else
a = y * 45 + z * 14 + a * 15
End If
Text2.Text = a
Text2.Enabled = False
End Sub
Private Sub Form_Load()
Text2.Enabled = False
Text2.Visible = False
Label2.Visible = False
End Sub
本想搞个内存注册机,简单些;可发现在这台机器上(装有NOD32、AVG、费尔)
的机器上,根本用不出来。直接把俺的工具杀掉了
只能向雪神老大借些代码,写程序吧
这里,编译好了注册机,请您用用吧,满足我的小小虚荣~汗!
谁用谁知道~~呵呵~~
于是又疯狂地多按了许多次“注册”,同样的用户名,同样的注册码,嘿嘿,成
功了:
这是算法注册机:
http://www.live-share.com/files/185463/_____.rar.html 2007/3/24
SCG maple
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课