您的位置:首页精文荟萃破解文章 → 破解noodles-crackme2.5 (8千字)

破解noodles-crackme2.5 (8千字)

时间:2004/10/15 0:56:00来源:本站整理作者:蓝点我要评论(0)

CrackMe下载
破解noodles-crackme2.5:
又一个好久没CRACK了,应为刚来学校,电脑也才拿回来不久,也就有好久没有玩
电脑了,再加上还有一个软件赶着要汉化...[还没完成呢...:-(]
好了,终于把这个CRACKME完成了.这是一个KEYFILE+NUM.的,要先找到KEYFILE才会出现主程序界面.而那个KEYFILE是记录NAME的,但是将你的NAME在KEYFILE里是加密的.
好了,开始CRACK它!
先用FILEMON可以知道那个KEYFILE的名是:SPOOK.KEY,和它上一个版本的KEYFILE相同.
好了,用HEX WORKSHOP建一个(建议把这个软件作为CRACK必备工具,我用的还是我自己汉化的...)随便写点东东,然后在SICE里用BPX CREATEFILEA,运行程序,OK中断了:
...
* Reference To: KERNEL32.CreateFileA, Ord:0000h
                                  |
:00401134 E831070000              Call 0040186A
:00401139 83F8FF                  cmp eax, FFFFFFFF/*按F12可到这*/
:0040113C 0F8406060000            je 00401748
:00401142 A35A224000              mov dword ptr [0040225A], eax
:00401147 FF355A224000            push dword ptr [0040225A]

* Reference To: KERNEL32.GetFileType, Ord:0000h
                                  |
:0040114D E8E8060000              Call 0040183A
:00401152 686C224000              push 0040226C
:00401157 FF355A224000            push dword ptr [0040225A]

* Reference To: KERNEL32.GetFileSize, Ord:0000h
                                  |
:0040115D E8D2060000              Call 00401834/*取得文件的长度*/
:00401162 A35E224000              mov dword ptr [0040225E], eax
:00401167 83F80C                  cmp eax, 0000000C/*长度要等于0CH=12D*/
:0040116A 0F85D8050000            jne 00401748
:00401170 6A00                    push 00000000
:00401172 686C224000              push 0040226C
:00401177 50                      push eax
:00401178 6870224000              push 00402270/*文件内容的缓冲*/
:0040117D FF355A224000            push dword ptr [0040225A]

* Reference To: KERNEL32.ReadFile, Ord:0000h
                                  |
:00401183 E8D6060000              Call 0040185E/*读出文件内容*/
:00401188 85C0                    test eax, eax
:0040118A 0F84B8050000            je 00401748
:00401190 33C0                    xor eax, eax
:00401192 33C9                    xor ecx, ecx
:00401194 FF355A224000            push dword ptr [0040225A]

* Reference To: KERNEL32.CloseHandle, Ord:0000h
                                  |
:0040119A E8B9060000              Call 00401858
:0040119F 33C0                    xor eax, eax
:004011A1 33C9                    xor ecx, ecx
:004011A3 B870224000              mov eax, 00402270/*这里放的是KEYFILE的内容!*/
:004011A8 B104                    mov cl, 04/*这里开始解密NAME!只处理了前8个字符*/
:004011AA 014804                  add dword ptr [eax+04], ecx
:004011AD 49                      dec ecx
:004011AE D34004                  rol dword ptr [eax+04], cl
:004011B1 49                      dec ecx
:004011B2 2908                    sub dword ptr [eax], ecx
:004011B4 49                      dec ecx
:004011B5 D308                    ror dword ptr [eax], cl
:004011B7 8B5808                  mov ebx, dword ptr [eax+08]
:004011BA 891D24234000            mov dword ptr [00402324], ebx/*这里可以看到解密后的NAME*/
...
这段程序读KEYFILE和解密KEYFILE的内容(内容是NAME).
在:00401167的CMP可以知道文件长度是0CH=12D,那我们就在KEYFILE里写入12个字符(随便写)然后再追!然后到解密NAME...你会问,知道程序是用KEYFILE的内容作一番处理,但我如何知道它是解密NAME?其实一开始我也不知道的,只是我完全跟踪过之后才知道的.为了象我一样的菜鸟容易看明白,那下面我就用我破解的过程写:
KEYFILE的长度正确后就会出现主面,会让你输入一个8位的NUM.,那我们输入1234abcd(个人习惯),再在SICE里用BPX HMEMCPY,用F12后可以到这:
...
* Reference To: USER32.GetDlgItemTextA, Ord:0000h
                                  |
:004014E1 E814040000              Call 004018FA
:004014E6 BF02234000              mov edi, 00402302/*到这里:-)*/
:004014EB BE0C204000              mov esi, 0040200C
:004014F0 33C9                    xor ecx, ecx
:004014F2 33DB                    xor ebx, ebx

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00401511(C), :00401522(C), :00401535(C)
|
:004014F4 02D9                    add bl, cl
:004014F6 8A0E                    mov cl, byte ptr [esi]
:004014F8 46                      inc esi
:004014F9 80F900                  cmp cl, 00
:004014FC 743B                    je 00401539
:004014FE C1E304                  shl ebx, 04
:00401501 80F930                  cmp cl, 30
:00401504 7C3D                    jl 00401543
:00401506 80F966                  cmp cl, 66
:00401509 7F38                    jg 00401543
:0040150B 80E930                  sub cl, 30
:0040150E 80F909                  cmp cl, 09
:00401511 7EE1                    jle 004014F4
:00401513 80E907                  sub cl, 07
:00401516 80F909                  cmp cl, 09
:00401519 7E28                    jle 00401543
:0040151B 84C9                    test cl, cl
:0040151D 7824                    js 00401543
:0040151F 80F90F                  cmp cl, 0F
:00401522 7ED0                    jle 004014F4
:00401524 80E920                  sub cl, 20
:00401527 84C9                    test cl, cl
:00401529 7818                    js 00401543
:0040152B 80F909                  cmp cl, 09
:0040152E 7813                    js 00401543
:00401530 7411                    je 00401543
:00401532 80F90F                  cmp cl, 0F
:00401535 7EBD                    jle 004014F4
:00401537 EB0A                    jmp 00401543

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004014FC(C)
|
:00401539 8BC6                    mov eax, esi
:0040153B 891D16204000            mov dword ptr [00402016], ebx
:00401541 EB48                    jmp 0040158B
...
这一段代码是将输入的NUM.变成相应的16进制代码:'1234abcd'->1234ABCDH,用F10可以到这:
...
:0040159C BB70224000              mov ebx, 00402270/*为保存解密后的NAME的地址*/
:004015A1 A116204000              mov eax, dword ptr [00402016]/*把NUM.分成两段
:004015A6 C1E010                  shl eax, 10                    分别放在EAX和ECX
:004015A9 8B0D16204000            mov ecx, dword ptr [00402016]  在SICE里很容易看
:004015AF C1E910                  shr ecx, 10                    出来*/
:004015B2 C1C010                  rol eax, 10
:004015B5 2903                    sub dword ptr [ebx], eax/*解密后的NAME的第1,2个
:004015B7 83C304                  add ebx, 00000004        字符-NUM.的后四位*/
:004015BA 010B                    add dword ptr [ebx], ecx/*解密后的NAME的第5,6个
:004015BC 66813BA065              cmp word ptr [ebx], 65A0  字符+NUM.的前四位,并:004015C1 0F857CFFFFFF            jne 00401543              分别和65A0H和6F4EH比:004015C7 83EB04                  sub ebx, 00000004        较*/
:004015CA 66813B4E6F              cmp word ptr [ebx], 6F4E
:004015CF 0F856EFFFFFF            jne 00401543
...
这里就是最后的比较了,上面的两个CMP相等则CRACK成功了,用RFL Z不让它跳你会在程序里看到'XXXXXXXX cracked this program'但你会发现XXXXXXXX是乱码!不用说XXXXXXXX该是你的大名!那也就是说我们忽略了什么!呵呵其实就是开始的那段解密程序!(:004011A8那里)你要是在:004015C1和:004015CF里用RFL Z后再继续跟下去你也许会发现XXXXXXXX和KEYFILE里的前8个字符相关!在这里也许还会知道后面的4个字符没有解密的,也就是说和我们CRACK不相关!呵呵...
好了,下面就要分析CMP前的那一段计算NUM.的代码了:处理NUM.的代码不难,算法简单明了.现在剩下的就只是要找出加密的NAME了:我要使'XXXXXXXX'='VitaminC'也就是说要使KEYFILE里的前8位字符解密后等于'VitaminC'.让我们细看那段解密用的代码:(其实一开始我并不知道那段解密代码的存在,只是在找NUM.时用于处理NUM.的那EBX(:0040159C)里的东东不知从何而来时我猜想它应该从KEYFILE中来,后来我又重头开始跟踪了一次发现了EBX里的东东是解密后的NAME)
...
:004011A8 B104                    mov cl, 04
:004011AA 014804                  add dword ptr [eax+04], ecx
:004011AD 49                      dec ecx
:004011AE D34004                  rol dword ptr [eax+04], cl
:004011B1 49                      dec ecx
:004011B2 2908                    sub dword ptr [eax], ecx
:004011B4 49                      dec ecx
:004011B5 D308                    ror dword ptr [eax], cl
:004011B7 8B5808                  mov ebx, dword ptr [eax+08]
:004011BA 891D24234000            mov dword ptr [00402324], ebx
...
算法也不难,可以知道:
KEYFILE的第5位字符+4H后再将KEYFILE的第5,6,7,8位ROL 03H
KEYFILE的第1位字符-2H后再将KEYFILE的第1,2,3,4位ROR 01H
这就是解密算法,那它的加密算法便是它的逆算法,不难,只是ROL和ROR我是在HEX WORKSHOP里完成的(HEX WORKSHOP好用!),那么'VitaminC'加密后是:AED2 E8C2 29CD 6DA8H写入KEYFILE,到这KEYFILE就完成了,最后就只是找出NUM.了:
56H(V)-08H=4EH
69H(i)-FAH=6FH
33H-6DH(m)=A0H
FCH-69H(i)=65H
可以看出NUM.是:FC33FA08
好了,这个程序就完成了,其实在这里我很想把整个过程说得很清楚,但本人能力实在有限,也许好多人看完了这个教程也是不知所以然,那就请谅解我的菜吧!

OK!

NUM.:FC33FA08

Vitamin C[抗坏血酸].2002.3.10.ZJ.GD.CHI.

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程