标 题:crackme破解for菜青虫 (菜鸟级别以上请点评)
发信人:babason(学习不满20天)
时 间:2006-3-2
File : Crackme#3 - Self Destructed.exe
Difficulty : 1/10
Blahblah : The Serial is different on each machine.(后来我想跟安装的系统和系统的用户名有关。)
详细信息:
http://www.crackmes.de/users/d4ph1/self_destructed/download (可以下载)
运行软件,输入注册名babason,序列号123456,点注册按钮,弹出对话筐 ( "This is not the right serial...")。
很典型的。右击-查找-所有参考文字-找到This is not the right serial...-反汇编跟随到004014C5
004014C0 |. 68 00304000 PUSH Crackme#.00403000 ; |Title = "Crackme#3 By D4ph1"
004014C5 |. 68 19314000 PUSH Crackme#.00403119 ; |Text = "This is not the right serial..."
004014CA |. 6A 00 PUSH 0 ; |hOwner = NULL
004014CC |. E8 7B000000 CALL <JMP.&user32.MessageBoxA> ; \MessageBoxA
004014D1 |. EB 13 JMP SHORT Crackme#.004014E6
004014D3 |> 6A 10 PUSH 10
004014D5 |. 68 00304000 PUSH Crackme#.00403000 ; |Title = "Crackme#3 By D4ph1"
004014DA |. 68 BB304000 PUSH Crackme#.004030BB ; |Text = "You have to write a Serial first...!"
004014DF |. 6A 00 PUSH 0 ; |hOwner = NULL
004014E1 |. E8 66000000 CALL <JMP.&user32.MessageBoxA>; \MessageBoxA
(也可以根据MessageBoxA查找。办法很多)
向上找,
00401366 |. 68 EC314000 PUSH Crackme#.004031EC ; /lParam = 4031EC
0040136B |. 68 80000000 PUSH 80 ; |wParam = 80
00401370 |. 6A 0D PUSH 0D ; |Message = WM_GETTEXT
00401372 |. 68 EA030000 PUSH 3EA ; |ControlID = 3EA (1002.)
00401377 |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |hWnd
0040137A |. E8 D9010000 CALL <JMP.&user32.SendDlgItemMessageA> ; \SendDlgItemMessageA
0040137F |. A3 6C324000 MOV DWORD PTR DS:[40326C],EAX 取注册名位数
00401384 |. 83F8 04 CMP EAX,4 注册名位数比较,小于或等于转移4跳出提
00401387 |. 0F86 60010000 JBE Crackme#.004014ED 示( "The Name you write is not correct!")。
0040138D |. 83F8 14 CMP EAX,14 注册名大于或等于转移14位,跳出提示
00401390 |. 0F83 57010000 JNB Crackme#.004014ED
向下看
004013B8 |. 33C9 XOR ECX,ECX ; ECX清零
004013BA |. 49 DEC ECX ; ECX减一
004013BB |. 33D2 XOR EDX,EDX
004013BD |. 4A DEC EDX ; EDX减一
004013BE |. 33F6 XOR ESI,ESI
004013C0 |. 4E DEC ESI ; ESI减一
004013C1 |. 33C0 XOR EAX,EAX
004013C3 |. A1 6C324000 MOV EAX,DWORD PTR DS:[40326C] 取注册名位数
004013C8 |. 48 DEC EAX 减一位
004013C9 |. 50 PUSH EAX
004013CA |> 46 /INC ESI ESI归零
004013CB |. 41 |INC ECX ECX归零
004013CC |. 0FBE81 F03440>|MOVSX EAX,BYTE PTR DS:[ECX+4034F0] 好像取系统。我是XP。第一次取”X“
004013D3 |. 0FBE9E EC3140>|MOVSX EBX,BYTE PTR DS:[ESI+4031EC] ; 取注册名每一位进行一下运算
004013DA |. 83F0 12 |XOR EAX,12 ; 与12异或
004013DD |. 83C0 34 |ADD EAX,34 ; 加34
004013E0 |. C1E3 03 |SHL EBX,3 ; 注册名第一位左移3位,就是乘以2^3
004013E3 |. 83EB 20 |SUB EBX,20 ; 再减20
004013E6 |. 83F3 66 |XOR EBX,66 ; 再跟66异或
004013E9 |. 32C3 |XOR AL,BL ; EAX的低位跟EBX的低位异或
004013EB |. 03C3 |ADD EAX,EBX ; EAX与EBX相加
004013ED |. E8 5CFDFFFF |CALL Crackme#.0040114E 具体运算,F7跟进如下
0040114E /$ 66:50 PUSH AX
00401150 |. C0E8 04 SHR AL,4 ; 右移4位,除2^4(十六进制10)
00401153 |. 24 0F AND AL,0F
00401155 |. 04 30 ADD AL,30
00401157 |. 3C 39 CMP AL,39 ; EAX低位与39比较,<=时跳
00401159 |. 7E 02 JLE SHORT Crackme#.0040115D
0040115B |. 04 07 ADD AL,7
0040115D |> 42 INC EDX ; EDX清零
0040115E |. 8882 70334000 MOV BYTE PTR DS:[EDX+403370],AL ; 低位储存到地址403370+EDX
00401164 |. 66:58 POP AX
00401166 |. C0E0 04 SHL AL,4 ; 左移,乘(十六进制10)
00401169 |. C0E8 04 SHR AL,4 ; 右移,除以(十六进制10)
0040116C |. 24 0F AND AL,0F
0040116E |. 04 30 ADD AL,30
00401170 |. 3C 39 CMP AL,39 ; EXA低位与39比较,〈=时跳
00401172 |. 7E 02 JLE SHORT Crackme#.00401176
00401174 |. 04 07 ADD AL,7
00401176 |> 42 INC EDX
00401177 |. 8882 70334000 MOV BYTE PTR DS:[EDX+403370],AL ; 低位储存到地址403370+EDX
0040117D \. C3 RETN 跳出。
现在我们应该知道,真码是储存在地址:403370开始的。我们可以跟随地址:403370看
004013F2 |. 58 |POP EAX
004013F3 |. 3BF0 |CMP ESI,EAX 判断是否取完注册名
004013F5 |. 50 |PUSH EAX
004013F6 |. 74 0A |JE SHORT Crackme#.00401402
004013F8 |. 83F9 03 |CMP ECX,3 循环3次
004013FB |. 75 03 |JNZ SHORT Crackme#.00401400
004013FD |. 33C9 |XOR ECX,ECX
004013FF |. 49 |DEC ECX
00401400 |>^ EB C8 \JMP SHORT Crackme#.004013CA
下面的还是计算了。如果你换了其他注册名,后面的序列号是不变的.可以自己慢慢看。
最后在地址:004033700下断点。
00403370=Crackme#.00403370 (ASCII "7E86E6BA7E8626-3605-6BF980FD6600FE")
我的注册名是:babason
注册码是:7E86E6BA7E8626-3605-6BF980FD6600FE
新的注册名是:bbs.pediy.com
注册码:7E76F6CA7E86063A7E76F6DA7E-3605-6BF980FD6600FE
后面的是一样的.
前一段码跟软件注册名有关,中间一段跟系统(XP,WIN98等)有关,后面一段跟系统注册名有关。
各位高手看看,是不是跟系统有关?还跟系统注册的用户名有关??
地址004034F0 58 50 80 7C 05 01 42 41 42 41 53 4F 4E XP?BABASON
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法