![](tital.gif) |
杂志宗旨:知识共享 资料共享 资源共享 |
制作成员:程式猎人 |
发行时间:2000-7-8(第二期) |
网站地址:http://programhunter.home.china.com |
编辑寄语:
由于在本周收到了hot bee的来信,以及其他网友的要求,现在开设初学天地这个栏目,它对于初学者是一个简单的教程,对于其他人也是一个学习。如果大家有什么好的建议或是意见的话希望你们向相应的信箱来信,我将努力将这份属于解密人的杂志办好。
|
目 录: |
|
破解心得 |
MagicButton V1.2
程式猎人
简介:MagicButton creates Java applets without requiring any Java or HTML programming.
追踪:serial number:76838112
RN:78787878
这个软件是使用VB来编写的,如果你是一个解密者的话,你一定知道对于VB编写
的软件在追踪时有相当的难度。why?因为它使用W32无法反汇编比较明白的汇编语言,
并且在使用SI来追踪它时,也不同于其它语言编写的软件,它追踪起来相当的困难。
但是我们不要因为有了难度就退却了,在这里作为骇客就要多多的学习。今天我追踪
这个软件,也是花了不少的功夫,但是终有所得,在这里向大家介绍如何追踪它。
在这里我使用TRV1.22和W32dasm来破解它。
:004BFEF0 FF91A0000000 call dword ptr [ecx+000000A0]
:004BFEF6 3BC3 cmp eax, ebx <-出来
:004BFEF8 7D12 jge 004BFF0C
:004BFEFA 68A0000000 push 000000A0
:004BFEFF 68B8E94100 push 0041E9B8
:004BFF04 57 push edi
:004BFF05 50 push eax
* Reference To: MSVBVM50.__vbaHresultCheckObj, Ord:0000h
|
:004BFF06 FF1570B34F00 Call dword ptr [004FB370]
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004BFEF8(C)
|
:004BFF0C 8B45E0 mov eax, dword ptr [ebp-20]
:004BFF0F 895DE0 mov dword ptr [ebp-20], ebx
:004BFF12 8945D0 mov dword ptr [ebp-30], eax
:004BFF15 BE08000000 mov esi, 00000008
:004BFF1A 8975C8 mov dword ptr [ebp-38], esi
:004BFF1D 8D45C8 lea eax, dword ptr [ebp-38]
:004BFF20 50 push eax
:004BFF21 8D4DB8 lea ecx, dword ptr [ebp-48]
:004BFF24 51 push ecx
* Reference To: MSVBVM50.rtcTrimVar, Ord:0208h
|
:004BFF25 FF15D0B34F00 Call dword ptr [004FB3D0]
:004BFF2B 8D55B8 lea edx, dword ptr [ebp-48]
:004BFF2E 52 push edx
* Reference To: MSVBVM50.__vbaStrVarMove, Ord:0000h
|
:004BFF2F FF1524B34F00 Call dword ptr [004FB324]
:004BFF35 8BD0 mov edx, eax
:004BFF37 8D4DDC lea ecx, dword ptr [ebp-24]
* Reference To: MSVBVM50.__vbaStrMove, Ord:0000h
|
:004BFF3A FF1570B54F00 Call dword ptr [004FB570]
:004BFF40 8D45DC lea eax, dword ptr [ebp-24]
:004BFF43 50 push eax
:004BFF44 E8F76BFCFF call 00486B40
:004BFF49 8BF8 mov edi, eax ***
:004BFF4B 8D4DDC lea ecx, dword ptr [ebp-24]
* Reference To: MSVBVM50.__vbaFreeStr, Ord:0000h
|
:004BFF4E FF15B8B54F00 Call dword ptr [004FB5B8]
:004BFF54 8D4DD8 lea ecx, dword ptr [ebp-28]
* Reference To: MSVBVM50.__vbaFreeObj, Ord:0000h
|
:004BFF57 FF15B4B54F00 Call dword ptr [004FB5B4]
:004BFF5D 8D4DB8 lea ecx, dword ptr [ebp-48]
:004BFF60 51 push ecx
:004BFF61 8D55C8 lea edx, dword ptr [ebp-38]
:004BFF64 52 push edx
:004BFF65 6A02 push 00000002
* Reference To: MSVBVM50.__vbaFreeVarList, Ord:0000h
|
:004BFF67 FF1534B34F00 Call dword ptr [004FB334]
:004BFF6D 83C40C add esp, 0000000C
:004BFF70 663BFB cmp di, bx
:004BFF73 0F845E010000 je 004C00D7 **
:004BFF79 66C7055AB04E00FFFF mov word ptr [004EB05A], FFFF
对于VB来说,它有着无法解读的困难,但是它也有它的优点,它的函数都是可视的,
所以在这里你可以轻松的知道每一个函数都是做什么的,这个也是我们能够充分利用
的地方。在这里我想先给出这个软件跳到出错的地方,因为我们如果找到了它,就可
以很轻松的解决掉它的注册问题,它跳到出错的地方就是**地方,在这里它将跳到错
误的地方,那么它从休息出来呢?它从标记的地方出来,那么给大家出一个小问题,
你们知道这个软件关键的地方在那里,我所说的关键的地方是指程序注册成功的地方。
对于上面的程序代码如果你是一个刚刚学习解密的人来说有相当的难度。在这里我还是
告诉大家吧,它的关键地方就在标记的***地方,这里关键是经验,因为程序在下面的
比较的两个值分别为di,bx,我们在这里就要破找到在那里使这两个值或任意一个值改
变的地方,并且因为它是使用VB来编写的,所以在这里我们可以很轻松的知道那个函
数是系统内部的函数,那个是作者编写的函数。(这个很关键,因为系统内部函数无
法计算注册码,它只能比较注册码。)现在找到了关键的地方,那么就进入其中再寻
找比较的地方吧。
:00486C39 FF35B4204000 push dword ptr [004020B4]
:00486C3F FF35B0204000 push dword ptr [004020B0]
* Reference To: MSVBVM50._adj_fdiv_m64, Ord:0000h
|
:00486C45 E86ADCF7FF Call 004048B4
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00486C37(U)
|
:00486C4A DC25B8204000 fsub qword ptr [004020B8]
:00486C50 DB45DC fild dword ptr [ebp-24]
:00486C53 DD9D78FFFFFF fstp qword ptr [ebp+FFFFFF78]
:00486C59 DCA578FFFFFF fsub qword ptr [ebp+FFFFFF78]
:00486C5F DFE0 fstsw ax
:00486C61 A80D test al, 0D
:00486C63 0F8500010000 jne 00486D69
进入后,我将来到这里,因为这里是关键的地方,所以我就将它写了出来。那么这
里那个test是关键的比较地方,如果你能将它比较成功就可以注册成功了。在这里我
没有找到它的注册码,所以只能使用修改来注册了。我在test处设断后,跳到外面的
程序中,在cmp di bx处使用反转后,程序将告诉你注册已经成功了。那么它在重新运
行时依然会告诉你没有注册。这就是我为什么要在test设断了,当你重新运行时,程
序将在:00486C61被拦下来,你就从这向程序外层跳直到下面代码就可以了。
:00486A0D E82E010000 call 00486B40
:00486A12 6685C0 test ax, ax
:00486A15 7466 jne 00486A31
:00486A17 66C7055AB04E00FFFF mov word ptr [004EB05A], FFFF
* Reference To: MSVBVM50.__vbaExitProc, Ord:0000h
|
:00486A20 FF1590B34F00 Call dword ptr [004FB390]
:00486A26 9B wait
:00486A27 68226B4800 push 00486B22
:00486A2C E9E0000000 jmp 00486B11
:00486A31 FF1518B54F00 Call dword ptr [004FB518]
这里有一个比较的地方,就是这个程序在开始时的关键比较地方。我在:00486A15处
反转,程序将进入注册成功的画面了。现在大家该知道该干什么了。
******************************
* 1 查找:0F845E010000 *
* 替换:909090909090 *
* 2 查找:6685C07466 *
* 替换: 6685C09090 *
******************************
|
返回 |
VirTime HTMLock V1.0.2
程式猎人
软件大小:674KB
授权形式:试用软件
运行环境:Win95/98/NT
软件发布:HomePage
软件简介:帮助您创建基于 JavaScript 的密码保护页面。
下载地址:http://202.102.231.158/software/download/internet/htmledit/htl.zip
追踪:name:dahuilang
RN:01234567
今天追踪这个程序时,当破解后被它的加密方式给吓了一跳,这里到不说它如何如何的难
,而是它使用的RN有些让人感到了加密者的心思。这里对于作者来说不应当说其它的话,因
为我们解密者就要面对的是根本不知道的程序思想,我们就是通过自己的努力才能达到破解
的目的。现在就开始介绍如何破解它。
首先当程序启动后,在开始的画面中就有输入注册码的地方,所以在这里通常就是输入注
册码,但是当我输入上面的注册码后,程序中的OK按钮没有可以按,这种通常就是实时的
验证形式,所以就又输入RN:0123456后,再使用SI将它设为bpx hmemcpy后,再输入7后,
被程序拦下来,可惜的是当我拦下后,发现它只是在一个劲的转,始终无法从那里出来。我
一开始以为是程序设计者制作的套,可是等到大家看到我这篇文章后你们就知道是为什么了
。因为无法追踪,我就再使用静态反汇编,使用W32将它反汇编,查找string date这个选项
,在这里真是有一个重大的发现,因为在这里可以看到如下:UserName RegKey这两个字符
串,我想大家一定知道它们是作什么用处的,双击其中一个,发现了一个地址,在这里还要
向大家说明的是,你能够找到三处地址使用上面两个字符串,其中两处大家可能猜到,一个
是程序启动前读取两个值,另一个是当注册成功后写入注册表中的值,我们就要找到程序在
启动时读取这个两个值的地方,那么我们将如何查找呢?就是查找那一个函数调用的这个函
数,再查找又是那一个函数调用找到的函数,依此类推。通常就可以找到了,现在就如下:
:004603D3 8D4DFC lea ecx, dword ptr [ebp-04]
* Possible StringData Ref from Code Obj ->"UserName"
|
:004603D6 BA6C044600 mov edx, 0046046C
:004603DB 8BC3 mov eax, ebx
:004603DD E806F8FFFF call 0045FBE8
:004603E2 8B55FC mov edx, dword ptr [ebp-04]
:004603E5 B874584600 mov eax, 00465874
:004603EA E83136FAFF call 00403A20
:004603EF 8D4DF8 lea ecx, dword ptr [ebp-08]
* Possible StringData Ref from Code Obj ->"RegKey"
|
:004603F2 BA80044600 mov edx, 00460480
:004603F7 8BC3 mov eax, ebx
:004603F9 E8EAF7FFFF call 0045FBE8
现在发现了两个关键的字符,它们分别为UserName and RegKey,并且还发现了软件将它们
储存的注册表中如下位置。
HKEY_LOCAL_MACHINE\Software\VirTime\HTL1.0.2\UserName
HKEY_LOCAL_MACHINE\Software\VirTime\HTL1.0.2\RegKey
我就将它们的值改为dahuilang and 76543210后,就向上查找是什么函数调用了它,是这
个函数调用
* Referenced by a CALL at Address:
|:004605D0
现在就到这个函数中,你在这里可以使用快捷键shift+F12,输入004605D0就可以了,然后你
就将到达下面
:004605C2 C6057058460000 mov byte ptr [00465870], 00
:004605C9 C6058858460000 mov byte ptr [00465888], 00
:004605D0 E87FFDFFFF call 00460354 ***
:004605D5 8B1574584600 mov edx, dword ptr [00465874]
:004605DB A178584600 mov eax, dword ptr [00465878]
:004605E0 E88BF0FFFF call 0045F670
:004605E5 A270584600 mov byte ptr [00465870], al ***
:004605EA C7058058460064000000 mov dword ptr [00465880], 00000064
:004605F4 B884584600 mov eax, 00465884
:004605F9 BA64064600 mov edx, 00460664
:004605FE E81D34FAFF call 00403A20
到达上面了,现在因为我已经将它破解出来了,所以知道它将在什么地方是重要的,现在
大家可以看到在那个函数下面就有一个al赋值的命令,其实这个就是决定你是否是注册作废
的关键值,现在就当我们还不知道这个地方,继续查找调用这个地址的函数,如下:
* Referenced by a CALL at Address:
|:004623AC
再查找就到达下面了,下面可以就是程序开始的地方,
//******************** Program Entry Point ********
:0046239C 55 push ebp
:0046239D 8BEC mov ebp, esp
:0046239F 83C4F4 add esp, FFFFFFF4
:004623A2 B814224600 mov eax, 00462214
:004623A7 E8543CFAFF call 00406000
:004623AC E87FE1FFFF call 00460530
:004623B1 84C0 test al, al
:004623B3 743A je 004623EF
现在我们将要做什么呢?使用SI载入程序,反向追踪它,直到这里
:004605C2 C6057058460000 mov byte ptr [00465870], 00
:004605C9 C6058858460000 mov byte ptr [00465888], 00
:004605D0 E87FFDFFFF call 00460354 ***
:004605D5 8B1574584600 mov edx, dword ptr [00465874] dahuilang
:004605DB A178584600 mov eax, dword ptr [00465878] 76543210
:004605E0 E88BF0FFFF call 0045F670
:004605E5 A270584600 mov byte ptr [00465870], al ***
这个就是我前面的地方,其中call 00460354的从注册表中读取各项值,而call 0045F670则
是验证注册码的正确性,在这里就可以看到我在注册表中输入的信息了,于是就进入call 0
045F670
:0045F693 8BC3 mov eax, ebx
:0045F695 E8B245FAFF call 00403C4C
:0045F69A 83F802 cmp eax, 00000002
:0045F69D 7C55 jl 0045F6F4
:0045F69F 8BC6 mov eax, esi
:0045F6A1 E8A645FAFF call 00403C4C
:0045F6A6 83F824 cmp eax, 00000024
:0045F6A9 7C49 jl 0045F6F4
:0045F6AB 33DB xor ebx, ebx
这里一个是检证name一定要二位以上,而RN一定要24(H)=36位以上,知道它的厉害了吧,
我看到这个时,我想这个程序想必会很难,可是事情不光象我想象的那么复杂,它的比较其
实很简单,如下:
:0045F6DA 8B45F8 mov eax, dword ptr [ebp-08]
:0045F6DD 8A400E mov al, byte ptr [eax+0E]
:0045F6E0 3A4622 cmp al, byte ptr [esi+22]
:0045F6E3 750F jne 0045F6F4
:0045F6E5 8B45F8 mov eax, dword ptr [ebp-08]
:0045F6E8 8A400F mov al, byte ptr [eax+0F]
:0045F6EB 3A4623 cmp al, byte ptr [esi+23]
:0045F6EE 7504 jne 0045F6F4
:0045F6F0 C645FF01 mov [ebp-01], 01
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0045F69D(C), :0045F6A9(C), :0045F6E3(C), :0045F6EE(C)
|
:0045F6F4 33C0 xor eax, eax
这里大家可以先看一下为什么这么多的跳跃都跳到0045F6F4这里呢?对了因为程序就可以
避开mov [ebp-01], 01这个命令,这就是说明只要能使程序走到这里就可以注册成功了。现
在就是上面两个比较的地方,现在就告诉大家上面两个比较的第一是比较第35位是否等于i,
第二个比较是比较第36位是否等于D,如果相等就注册成功了。那么其它34位呢?它们在这
里是计算使用的基本值,再加上你输入的名字才能计算出你的注册码来。好了,我的注册码
如下。
***************************************************
* name:dahuilang *
* RN:0123456789012345678901234567890123iD *
***************************************************
|
返回 |
大富翁4硬盘版
程式猎人
追踪:
昨天在朋友处玩这个大富翁4时,程序总是在说让我使用光盘,可是朋友的光盘已经还回
去了,谁让咱们是解密者了,开始对它进行破解工作,我非要将它破解出来不可。
首先我使用w32dasm来分析一下它,看一看它有什么可以追踪的。
在wm中,发现了几个可以利用的地方,可是经过分析验证,都无法将光盘去掉,所以现在
我再使用SI来追踪它,因为程序先出现一个窗口,说请放入光盘,所以现在我们就可以使用
这个来向它发起攻击。现在我使用bpx lockmytask拦下收窗,点击重试后被拦下来,如下:
* Reference To: USER32.MessageBoxA, Ord:0010h
|
:0044EAFD 2EFF1504034600 Call dword ptr cs:[00460304]
:0044EB04 83F804 cmp eax, 00000004
:0044EB07 0F859AFEFFFF jne 0044E9A7
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0044EAEE(C)
|
:0044EB0D 837C244000 cmp dword ptr [esp+40], 00000000
:0044EB12 0F8452FFFFFF je 0044EA6A
在上面的地方我进入了主程序中,在这里大家可以看到MessageBoxA这个窗体函数,它就
是显示放入光盘的窗体函数,那么程序在点击重试后从函数出来在je处跳跃,它将跳跃到程
序的上面进行检查,如下:
:0044EA5B 50 push eax
:0044EA5C E8C4740000 call 00455F25
:0044EA61 83C404 add esp, 00000004
:0044EA64 31F6 xor esi, esi
:0044EA66 89742440 mov dword ptr [esp+40], esi
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0044EB12(C)
|
:0044EA6A 31DB xor ebx, ebx
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0044EAE6(U)
|
:0044EA6C 39EB cmp ebx, ebp
:0044EA6E 0F8D74000000 jnl 0044EAE8
:0044EA74 8B442440 mov eax, dword ptr [esp+40]
:0044EA78 85C0 test eax, eax
:0044EA7A 756C jne 0044EAE8
:0044EA7C 8A441C20 mov al, byte ptr [esp+ebx+20]
:0044EA80 50 push eax
* Possible StringData Ref from Data Obj ->"%c:\OVER.AVI"
|
:0044EA81 6860414600 push 00464160
:0044EA86 8D442408 lea eax, dword ptr [esp+08]
:0044EA8A 50 push eax
:0044EA8B E8E06C0000 call 00455770
:0044EA90 83C40C add esp, 0000000C
* Possible StringData Ref from Data Obj ->"rb"
|
:0044EA93 6836414600 push 00464136
:0044EA98 8D442404 lea eax, dword ptr [esp+04]
:0044EA9C 50 push eax
:0044EA9D E87D6F0000 call 00455A1F
:0044EAA2 89C6 mov esi, eax
:0044EAA4 83C408 add esp, 00000008
:0044EAA7 85C0 test eax, eax
:0044EAA9 743A je 0044EAE5
:0044EAAB 6A02 push 00000002
:0044EAAD 6A00 push 00000000
:0044EAAF 50 push eax
:0044EAB0 E8E5700000 call 00455B9A
:0044EAB5 83C40C add esp, 0000000C
:0044EAB8 56 push esi
:0044EAB9 E8D4800000 call 00456B92
:0044EABE 89C7 mov edi, eax
:0044EAC0 83C404 add esp, 00000004
:0044EAC3 56 push esi
:0044EAC4 E85C740000 call 00455F25
:0044EAC9 83C404 add esp, 00000004
:0044EACC 81FF005A6202 cmp edi, 02625A00
:0044EAD2 7E11 jle 0044EAE5
:0044EAD4 8A441C20 mov al, byte ptr [esp+ebx+20]
:0044EAD8 A2A4414700 mov byte ptr [004741A4], al
:0044EADD C744244001000000 mov [esp+40], 00000001
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0044EAA9(C), :0044EAD2(C)
|
:0044EAE5 43 inc ebx
:0044EAE6 EB84 jmp 0044EA6C
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0044EA6E(C), :0044EA7A(C)
|
:0044EAE8 8B542440 mov edx, dword ptr [esp+40]
:0044EAEC 85D2 test edx, edx
:0044EAEE 751D jne 0044EB0D
:0044EAF0 6A15 push 00000015
:0044EAF2 6824414600 push 00464124
:0044EAF7 686D414600 push 0046416D
:0044EAFC 52 push edx
* Reference To: USER32.MessageBoxA, Ord:0010h
|
:0044EAFD 2EFF1504034600 Call dword ptr cs:[00460304]
:0044EB04 83F804 cmp eax, 00000004
:0044EB07 0F859AFEFFFF jne 0044E9A7
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0044EAEE(C)
|
:0044EB0D 837C244000 cmp dword ptr [esp+40], 00000000
:0044EB12 0F8452FFFFFF je 0044EA6A
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0044EA56(U)
|
:0044EB18 B801000000 mov eax, 00000001
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0044E9A9(U)
|
:0044EB1D 83C444 add esp, 00000044
:0044EB20 5D pop ebp
:0044EB21 5F pop edi
:0044EB22 5E pop esi
:0044EB23 5B pop ebx
:0044EB24 C3 ret
我在这里将程序的完整过程都写了出来,这样大家可以轻松的看到程序的过程。我现在向
大家解释一下它具体过程。
当我选择重试后,它跳跃0044EA6A处,程序跳跃到后在这里将进行光盘的检验,如果你有
两个光驱的话,它将在这里检查两回,如果有一个则检查一次,现在它将到达下面。
:0044EAE8 8B542440 mov edx, dword ptr [esp+40]
:0044EAEC 85D2 test edx, edx
:0044EAEE 751D jne 0044EB0D
这里将决定程序是否显示放入光盘的信息,如果不让它跳跃,它将显示错误的信息。好了,
我们先在这里进行跳跃,它将又来到出错的下面,
:0044EB0D 837C244000 cmp dword ptr [esp+40], 00000000
:0044EB12 0F8452FFFFFF je 0044EA6A
:0044EB18 B801000000 mov eax, 00000001 ***
现在想提醒大家一下,你们看到没有eax=1,如果看到了这就说明我们可以破解成功了(
在这里只是一种感觉),现在到达je处不让程序跳跃,进入下面的程序中,在这里如果你要
让程序自行执行下去,它将出现游戏画面,经试验,它什么都可以使用,好了现在硬盘版制
作完成了。
********************************
* 1 查找:24 40 85 D2 75 1D *
* 替换:24 40 85 D2 EB 1D *
* *
* 2 查找:0F 84 52 FF FF FF *
* 替换:90 90 90 90 90 90 *
********************************
|
返回 |
破解“Mail Scan”
作者:cflanker
工具:Trw2000 v1.22 其实我很想用s-ice (我喜欢,可是windows me 不让我用。faint )
日期:2000年7月1日
软件简介:这个软件可以从文本文件中过滤出电子邮件地址。这里所指的文本文件不仅仅指
*.txt文件,还包括*.htm文件、*.html文件、*.csv、*.eml、*.mbx等文本格式的文件。她
可以在这些文件中搜寻可能包含邮件地址的文本行,然后对这些内容进行处理,过滤掉重复
的和非法的地址。然后按照服务器地址自动排序,你存盘后就得到了一个E-Mail地址表。然
后,你就可以轻松使用这些地址来进行你的宣传活动了。
Let's go
运行Mail Scan。他会显示未注册窗口,不管他。go on
他是一机一码 所以
1:填写注册码: 22222222
2:ctrl+M
3:bpx hmemcpy
4:g
5:点击 注册
6:被trw2000 拦截
7:按 f12<------好像是61次 faint
8:然后按f 10 一直到
call 00483730
9:按 f8进去
10:按f 10 一直到
call 00403fd8
11:按 f8进去
12:按f 10 一直到
cmp eax,edx
13:d eax; bingo 你已经看到你想要的东西了
end
总结一下:有人可能问 为什么要按61 次 ? A:ok 问的好 你按到62 次 就知道问什么只按61了^_^
那为什么要在这两个call 按f8 呢? A: 你仔细看就发现这两个call 前后有明显的判断 跳转语句
所以这两个call 肯定有问题于是。。。。
好了,搞定,收工!
|
返回 |
初学天地 |
解密基本教程
第一篇 前言
各位学员,你们好,从今天开始我将作为你们这门课的任课教师,将向你们介绍上些关
于解密这门课的基本知识和技巧,希望大家能够喜欢它。
现在我要问各位三个问题:
"你们是否准备好了遇到各种困难的思想?"
"你们是否有一个持之以恒的心?"
"你们是否作好了将要吃苦的准备?"
我在这里不是吓大家,我希望大家能够正确的认识这个问题,如果你们认为解密是一个
较轻松的事情那就错了。解密这个工作,它是一个时间吞食机,如果你喜欢上了它,它将吃
掉你大部分的时间。这个可是真的,因为我就身有体会,所以在大家作出决定之前希望大家
能够认真的考虑好是否真的能够进行这个艰苦的工作。
Are you ready?
如果你们准备好,我将开始解密这门课了。
首先解释一下何为"解密"。从字面不难理解,"密"就是秘密,而"解"就是解决,解掉的
意思,它们合在一起就是解决掉他人的秘密。解密的恋生兄弟就是加密,他们两个是相生相
克,加密就好比是一个小偷,而解密则是一个警察。加密是尽量将自己隐藏在茫茫的代码中
,而解密则是将那些可恨的小偷从无边无际的人海中将他们找出来,并且将他们改造成大大
的良民。
警察同志们,你们是否知道小偷分多少种,我这节课就向大家介绍一种:
register number(RN)
仅有RN的注册形式,这里也分为hard RN和soft RN两种,其中hard RN是解密中最为简
单的一种形式,而其它的注册形式,包括以下的各种各样的注册形式,都将视不同的情况而
定了。soft RN则是通过RN本身来验证注册码的正确性,因为大家可能还不熟悉解密,所以
在这里详细的介绍一下何为通过本身来验证注册码,在这里就向大家举一个例子,如下正确
的注册码为123456-21,首先它的注册码中一定要为这种格式(注册码中一定要有一个"-")
,如何通过自身来验证呢?就是使用"-"前面的数字相加得到的值一定要等于"-"后面的数值
,如果相等则认为是正确的注册码。我想现在大家应当理解的吧。其实这就是这么的简单,
没有什么深奥的东西。
这里就向大家介绍最为简单的注册形式--hard RN,这样可以增加大家对于解密的信心,
从而使大家通过学习它的注册不断的提高自己的破解水平。今天的教学软件是Quick FTP V2
.10。这个软件是一个FTP软件,大家知道什么是FTP吧,如果不知道,我在这里也不能多介
绍它,因为我的任务是向大家介绍如何破解它,不管什么FTP等以后如果大家有这个要求的
话,我可以向大家介绍FTP是什么。现在是费话少说,开始对它进行破解,今天我们使用的
是动态破解方法,其实动态就是使用soft-ice或者是trw来追踪软件。
在破解之前,我先假设大家对破解知道的不多,那么我就简单的向大家介绍如何使用动态
追踪软件,因为SI和TRW的使用方法几乎相同,所以在这里就以TRW为例子,首先介绍如何调
出它们,SI是用ctrl+D调出,TRW有三级调出命令,在这里我们使用ctrl+M调出。调出的目
的是设断,所以在这里先告诉大家一个比较通用的设断方法,bpx hmemcpy这个命令是当进
行内存拷贝时进行中断,就是程序在使用我们输入的注册码时中断,这样我们就可以追踪它
了,好了,现在大家知道这两个命令就能够进行实战了。
现在打开QFTP程序,程序一开始就问你注册码,选中注册,在注册窗口中填入fake RN为
假注册码,你可以任意设,在这里我设RN:76543210。现在就调出TRW来在这里下bpx hmemc
py命令后,回车确认后按F5退出(F5为退出TRW)。现在点击注册选项的OK按钮后,TRW弹出,这里它在系统
的位置当中,在这里大家是只能看,可不能动,按F12向外层跳跃,在这里再解释一下F12是
做什么的,F12在TRW和SI中是使用函数直接运行到RET命令,就是函数返回的地方,也就是
结束函数的地方,所以它能够快速跳出函数。好了,再回到程序中,现在还得教大家知道如
何知道自己已经到达软件所控制的地方,首先你们可以看到在代码窗口的下面有一个地方显
示一些信息,在这里它就是相当重要的,如果显示kernel32和user32或者kernel和user均为
系统的地方,其次你可以看到代码窗口的地址如果为???:004?????时,通常到达了软件控制
的地方。OK,说了这么多,不知道你们都听懂没有,现在我们还得学如何破解它。使用F12
快速跳到软件的地方,现在当大家跳到下面的地址时,就可以了。在这里就不能再使用F12了
,得到使用F10快捷键了,F10是单步执行命令。
:0040BADA 8B86A4000000 mov eax, dword ptr [esi+000000A4] <-你们将从
这出来
:0040BAE0 6870424100 push 00414270
:0040BAE5 50 push eax
:0040BAE6 FF1578F44000 Call dword ptr [0040F478]
:0040BAEC 83C408 add esp, 00000008
:0040BAEF 85C0 test eax, eax
:0040BAF1 7526 jne 0040BB19
:0040BAF3 6A40 push 00000040
:0040BAF5 68704D4100 push 00414D70
:0040BAFA 68504D4100 push 00414D50
:0040BAFF 8BCE mov ecx, esi
:0040BB01 C7466001000000 mov [esi+60], 00000001
现在从0040BADA处出来了,现在大家可以使用TRW的d的命令d 00414270命令(d的命令是
显示相应地址或寄存器值),你可以在数据窗口中看到一串字符,那么这串字符是什么呢?
它就是注册码,大家没有想到吧,破解这个软件是这样的简单,为什么我就知道这里是注册
码呢?我现在要向大家说的是在破解中关键是找到比较的地方。破解过程你们会遇
到几个固定的比较的形式,这里就是一个典型的比较形式之一,因为大家是初学者,所
以就先记住典型的比较形式,我会在以后每讲中都会向大家介绍的,这讲就介绍这个典型的
比较形式,如下:
mov eax [ ] 这里可以是地址,也可以是其它寄存器
mov edx [ ] 同上 通常这两个地址就储存着重要信息
call 00??????
test eax eax
jz(jnz)
上面的比较形式就是注册码比较的比较形式之一,大家一定要记住它,这对以后的破解
有相当的好处。它还有不少变形,这就要靠大家以后自己掌握了。
怎么样,其实破解就是这么简单(说大话,可是你们就得从简单的学起)。现在准备……
,你们是否准备下课了,不行,我还没有布置你们的家庭作业呢?(就是现在高喊给小学生
减负,我也不给你们减负)大家可以在这里下载这个软件,它是WinRescue 9.12 For Win95,
大家回去后,要按时完成这个作业,希望完成的同学将它写出来,给我邮来,我会从中选一篇
在下节课通报表扬,并作解释。
现在,下课。
|
|
返回 |
问题答疑: |
网友linjwei想得到wingate的注册码,请大家帮助查找一下,谢谢了。 |
返回 |
网站介绍: |
今天向大家介绍的网站当然是自己的网站了(我得先推销自己啊),我办这个网站的目的关键在于利用电子杂志的形式向解密爱好者定期发送与解密相关的文章,这样就不必要大家想要看到其他人的文章就要自己上网查找(有时你还查找不到呢?),由于本人也是一个破解人,所以对查找文章是深有体会啊,现在建立这个电子杂志,想通过这个杂志对大家能有所帮助,谢谢大家的支持。
|
返回 |
编辑信箱
|
|
返回 |