【自制】无壳CM七连发
本帖最后由 sinainluoye 于 2015-8-19 23:12 编辑自己琢磨练习Crack有几天了,觉得应该了解些更多的东西了,但是没找到什么特别好的资源,于是就尝试字写了下CM,一共七发,全部是用C/C++写的控制台程序(黑框框),编译器是g++ (gun c++),难度是递进的(每关都是在前一关的代码基础上加些修改),我表示不看源码的话只能过掉第四关,看源码也只能过掉第五关,希望各位大大过掉5,6,7 这三关的时候给些详细的解答~
ps:写程序的时候就是想着用爆破搞的,3~7关密码的加密算法是一样的,所以还是希望大家爆破掉啦= =!
1~7关,每关都以看到源码的解压密码且程序正常退出为目的
(貌似没通关也能看到源码的解压密码,大家自觉一点啦~):
这个是没加密码的程序源码,希望大家不要直接看
欢迎和我讨论啦~
只能到第四关
第五六关只能到这里
没看源码的情况的情况下做到第三关了,做不下去了,第三关有BUG。//第一关:Hi-Man-You-Are-Good
00401388 C70424 24D04000 MOV DWORD PTR SS:,第一关.0040D024 ; ASCII "请输入密码"
0040138F E8 C8A70000 CALL <JMP.&msvcrt.puts>
00401394 8D85 00FCFFFF LEA EAX,DWORD PTR SS:
0040139A 894424 04 MOV DWORD PTR SS:,EAX
0040139E C70424 2FD04000 MOV DWORD PTR SS:,第一关.0040D02F ; ASCII "%s"
004013A5 E8 BAA70000 CALL <JMP.&msvcrt.scanf>
004013AA C74424 04 32D04>MOV DWORD PTR SS:,第一关.0040D032 ; ASCII "Hi-Man-You-Are-Good"
004013B2 8D85 00FCFFFF LEA EAX,DWORD PTR SS:
004013B8 890424 MOV DWORD PTR SS:,EAX
004013BB E8 ACA70000 CALL <JMP.&msvcrt.strcmp>
004013C0 85C0 TEST EAX,EAX
004013C2 74 3F JE SHORT 第一关.00401403
004013C4 C74424 0C 00000>MOV DWORD PTR SS:,0x0
004013CC C74424 08 46D04>MOV DWORD PTR SS:,第一关.0040D046 ; ASCII "Error"
004013D4 C74424 04 4CD04>MOV DWORD PTR SS:,第一关.0040D04C ; ASCII "再试试吧!"
004013DC C70424 00000000 MOV DWORD PTR SS:,0x0
004013E3 C785 C8FBFFFF 0>MOV DWORD PTR SS:,0x1
004013ED E8 EAA70000 CALL <JMP.&USER32.MessageBoxA>
004013F2 83EC 10 SUB ESP,0x10
004013F5 C70424 57D04000 MOV DWORD PTR SS:,第一关.0040D057 ; ASCII "cls"
004013FC E8 73A70000 CALL <JMP.&msvcrt.system>
00401401^ EB 85 JMP SHORT 第一关.00401388
00401403 C74424 0C 00000>MOV DWORD PTR SS:,0x0
0040140B C74424 08 46D04>MOV DWORD PTR SS:,第一关.0040D046 ; ASCII "Error"
00401413 C74424 04 5CD04>MOV DWORD PTR SS:,第一关.0040D05C ; ASCII "过关了~源码解压密码为: scdghxscfjghs"
//第二关:qwertyuiopasdfghjklzxcvbnm
00401383 55 PUSH EBP
00401384 89E5 MOV EBP,ESP
00401386 83EC 08 SUB ESP,0x8
00401389 C74424 04 24D04>MOV DWORD PTR SS:,第二关.0040D024 ; ASCII "qwertyuiopasdfghjklzxcvbnm"
00401391 8B45 08 MOV EAX,DWORD PTR SS:
00401394 890424 MOV DWORD PTR SS:,EAX
00401397 E8 98FFFFFF CALL 第二关.00401334
0040139C 84C0 TEST AL,AL
0040139E 74 04 JE SHORT 第二关.004013A4
004013A0 B0 01 MOV AL,0x1
004013A2 EB 02 JMP SHORT 第二关.004013A6
004013A4 B0 00 MOV AL,0x0
004013A6 C9 LEAVE
004013A7 C3 RETN
004013F7 E8 34940000 CALL 第二关.0040A830
004013FC C70424 3FD04000 MOV DWORD PTR SS:,第二关.0040D03F ; ASCII "请输入密码"
00401403 E8 B4A70000 CALL <JMP.&msvcrt.puts>
00401408 8D85 00FCFFFF LEA EAX,DWORD PTR SS:
0040140E 894424 04 MOV DWORD PTR SS:,EAX
00401412 C70424 4AD04000 MOV DWORD PTR SS:,第二关.0040D04A ; ASCII "%s"
00401419 E8 A6A70000 CALL <JMP.&msvcrt.scanf>
0040141E 8D85 00FCFFFF LEA EAX,DWORD PTR SS:
00401424 890424 MOV DWORD PTR SS:,EAX
00401427 E8 57FFFFFF CALL 第二关.00401383
0040142C 84C0 TEST AL,AL
0040142E 75 3F JNZ SHORT 第二关.0040146F
00401430 C74424 0C 00000>MOV DWORD PTR SS:,0x0
00401438 C74424 08 4DD04>MOV DWORD PTR SS:,第二关.0040D04D ; ASCII "Error"
00401440 C74424 04 53D04>MOV DWORD PTR SS:,第二关.0040D053 ; ASCII "再试试吧!"
00401448 C70424 00000000 MOV DWORD PTR SS:,0x0
0040144F C785 C8FBFFFF 0>MOV DWORD PTR SS:,0x1
00401459 E8 DEA70000 CALL <JMP.&USER32.MessageBoxA>
0040145E 83EC 10 SUB ESP,0x10
00401461 C70424 5ED04000 MOV DWORD PTR SS:,第二关.0040D05E ; ASCII "cls"
00401468 E8 5FA70000 CALL <JMP.&msvcrt.system>
0040146D^ EB 8D JMP SHORT 第二关.004013FC
0040146F C74424 0C 00000>MOV DWORD PTR SS:,0x0
00401477 C74424 08 4DD04>MOV DWORD PTR SS:,第二关.0040D04D ; ASCII "Error"
0040147F C74424 04 64D04>MOV DWORD PTR SS:,第二关.0040D064 ; ASCII "过关了~源码的解压密码为: as21f3af14a6"
00401487 C70424 00000000 MOV DWORD PTR SS:,0x0
0040148E C785 C8FBFFFF F>MOV DWORD PTR SS:,-0x1
00401498 E8 9FA70000 CALL <JMP.&USER32.MessageBoxA>
0040149D 83EC 10 SUB ESP,0x10
004014A0 B8 00000000 MOV EAX,0x0
004014A5 8985 C0FBFFFF MOV DWORD PTR SS:,EAX
004014AB EB 1B JMP SHORT 第二关.004014C8
//第三关
0040140C C70424 24E04600 MOV DWORD PTR SS:,第三关.0046E024 ; ASCII "请输入密码"
00401413 E8 58EB0100 CALL <JMP.&msvcrt.puts>
00401418 8D85 00FCFFFF LEA EAX,DWORD PTR SS:
0040141E 894424 04 MOV DWORD PTR SS:,EAX
00401422 C70424 2FE04600 MOV DWORD PTR SS:,第三关.0046E02F ; ASCII "%s"
00401429 E8 4AEB0100 CALL <JMP.&msvcrt.scanf>
0040142E 8D85 00FCFFFF LEA EAX,DWORD PTR SS:
00401434 890424 MOV DWORD PTR SS:,EAX
00401437 E8 49FFFFFF CALL 第三关.00401385
0040143C 84C0 TEST AL,AL
0040143E 75 3F JNZ SHORT 第三关.0040147F
00401440 C74424 0C 00000>MOV DWORD PTR SS:,0x0
00401448 C74424 08 32E04>MOV DWORD PTR SS:,第三关.0046E032 ; ASCII "Error"
00401450 C74424 04 38E04>MOV DWORD PTR SS:,第三关.0046E038 ; ASCII "再试试吧!"
00401458 C70424 00000000 MOV DWORD PTR SS:,0x0
0040145F C785 C8FBFFFF 0>MOV DWORD PTR SS:,0x1
00401469 E8 AEEC0100 CALL <JMP.&USER32.MessageBoxA>
0040146E 83EC 10 SUB ESP,0x10
00401471 C70424 43E04600 MOV DWORD PTR SS:,第三关.0046E043 ; ASCII "cls"
00401478 E8 03EB0100 CALL <JMP.&msvcrt.system>
0040147D^ EB 8D JMP SHORT 第三关.0040140C
0040147F C74424 0C 00000>MOV DWORD PTR SS:,0x0
00401487 C74424 08 32E04>MOV DWORD PTR SS:,第三关.0046E032 ; ASCII "Error"
0040148F C74424 04 48E04>MOV DWORD PTR SS:,第三关.0046E048 ; ASCII "过关了~ 源码的解压密码为: 1adf5h8wrt"
//??????此题是BUG吧,是楼主的代码有BUG呢?还是我实在太菜了???????
//楼主你确定不要把输入的ASCII码转换为数值再乖以16?
0040138D 8B45 08 MOV EAX,DWORD PTR SS:
00401390 890424 MOV DWORD PTR SS:,EAX
00401393 E8 9CFFFFFF CALL 第三关.00401334 //将输入的密码转换为64位的16进制数,结果要为60C9AD000FB2;
00401398 89C3 MOV EBX,EAX
0040139A 81F3 B20F00AD XOR EBX,0xAD000FB2
004013A0 89D6 MOV ESI,EDX
004013A2 81F6 C9600000 XOR ESI,0x60C9
感谢楼主,够我玩好几天的了。。 够我这个新手慢慢玩了 不可以整合到一起么,分P很费CB的 dongfang155 发表于 2015-8-18 20:34
不可以整合到一起么,分P很费CB的
CM区下载不是不花CB么???!!! sinainluoye 发表于 2015-8-18 20:37
CM区下载不是不花CB么???!!!
好吧我承认我不知道 谢谢 @Thank you 好吧C++源码看不懂。cm玩不动