Board logo

标题: 自由英语XP 1.0.脱壳 [打印本页]

作者: 坏的刚刚好    时间: 2005-8-30 14:40     标题: 自由英语XP 1.0.脱壳

作者:unknown newlaos破解手记 *************************************************** 软件名称:自由英语XP 1.0.0 Buid 778: 加密方式:Aspack 2.12 + Lock98 1.00.28 + 注册码 使用工具:TRW2000 1.22汉化注册版,RegMon,GUW32 1.0 Beta8, PE-scan3.31,ollydbg1.09汉化版 软件说明:本软件不但为学习者提供了一个能够实现英语复读、听力对比、写作练习等功能的完全虚拟的学习平台, 而且还具备电脑录音、电脑复读、英语听写等多种语言处理功能,使学习者通过自由地听、写、读、背等练习,全面 提高听、说、读、写、译的能力,并解决了困扰中国人英语学习中"聋哑英语"的难题,从而使学习者找到一种真正适 合自己的英语学习方法。 破解方法: 1、软件脱壳,用PE-scan3.31侦到加了aspack2.12的壳,随即脱掉,运行一下可正常运行。再用FI2.5r查看发现脱掉ASPACK2.12壳后 的程序还有一个LOCK98 1.00.28的壳,这个壳用GUW32 1.0beta8很快搞定,至此程序完全脱壳,FI2.5r显示为 Borland Delphi程序。 2、用trw2000 1.22动态跟踪,按7下F12(按8下,就出现注册号错误提示),很多就来下面这段地区: ...... ...... 0050E578 . 55 PUSH EBP 0050E579 . 8BEC MOV EBP,ESP 0050E57B . 33C9 XOR ECX,ECX 0050E57D . 51 PUSH ECX 0050E57E . 51 PUSH ECX 0050E57F . 51 PUSH ECX 0050E580 . 51 PUSH ECX 0050E581 . 51 PUSH ECX 0050E582 . 53 PUSH EBX 0050E583 . 56 PUSH ESI 0050E584 . 8BF2 MOV ESI,EDX 0050E586 . 8BD8 MOV EBX,EAX 0050E588 . 33C0 XOR EAX,EAX 0050E58A . 55 PUSH EBP 0050E58B . 68 A2E65000 PUSH ESTUDY.0050E6A2 0050E590 . 64:FF30 PUSH DWORD PTR FS:[EAX] 0050E593 . 64:8920 MOV DWORD PTR FS:[EAX],ESP 0050E596 . 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4] 0050E599 . 8B83 20030000 MOV EAX,DWORD PTR DS:[EBX+320] 0050E59F . E8 6C33F4FF CALL ESTUDY.00451910 0050E5A4 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0050E5A7 . 50 PUSH EAX            <--下D eax可以看见45678 0050E5A8 . 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8] 0050E5AB . 8B83 24030000 MOV EAX,DWORD PTR DS:[EBX+324] 0050E5B1 . E8 5A33F4FF CALL ESTUDY.00451910 0050E5B6 . 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 0050E5B9 . 50 PUSH EAX            <--下D eax可以看见56789 0050E5BA . 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C] 0050E5BD . 8B83 1C030000 MOV EAX,DWORD PTR DS:[EBX+31C] 0050E5C3 . E8 4833F4FF CALL ESTUDY.00451910 0050E5C8 . 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] 0050E5CB . 50 PUSH EAX            <--下D eax可以看见34567 0050E5CC . 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10] 0050E5CF . 8B83 18030000 MOV EAX,DWORD PTR DS:[EBX+318] 0050E5D5 . E8 3633F4FF CALL ESTUDY.00451910 0050E5DA . 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10] 0050E5DD . 50 PUSH EAX            <--下D eax可以看见23456 0050E5DE . 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14] 0050E5E1 . 8B83 14030000 MOV EAX,DWORD PTR DS:[EBX+314] 0050E5E7 . E8 2433F4FF CALL ESTUDY.00451910 0050E5EC . 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14]  <--下D eax可以看见12345 0050E5EF . 5A POP EDX             <--输入的所有数字都出来,说明来到关键地方了 0050E5F0 . 59 POP ECX 0050E5F1 . E8 06820100 CALL ESTUDY.005267FC       <--输入的注册号经过这个CALL一段加密处理,至于 0050E5F6 . 8B15 98245300 MOV EDX,DWORD PTR DS:[532498]   什么原理我也不知道?因为可以不用管! 0050E5FC . 8902 MOV DWORD PTR DS:[EDX],EAX 0050E5FE . A1 98245300 MOV EAX,DWORD PTR DS:[532498] 0050E603 . 8138 611E0000 CMP DWORD PTR DS:[EAX],1E61   <--关键比较1到了,正确则是"60天限时版" 0050E609 . 74 1A JE SHORT ESTUDY.0050E625 0050E60B . A1 98245300 MOV EAX,DWORD PTR DS:[532498] 0050E610 8138 B8220000 CMP DWORD PTR DS:[EAX],22B8   <--关键比较2到了,正确则是"正是版"了 0050E616 74 0D JE SHORT ESTUDY.0050E625 0050E618 A1 98245300 MOV EAX,DWORD PTR DS:[532498] 0050E61D 8138 0F270000 CMP DWORD PTR DS:[EAX],270F   <--关键比较3到了,正确则是"友情注册版" 0050E623 . 75 4A JNZ SHORT ESTUDY.0050E66F 0050E625 > A1 6C2A5300 MOV EAX,DWORD PTR DS:[532A6C] 0050E62A . 8B00 MOV EAX,DWORD PTR DS:[EAX] 0050E62C . 8BD6 MOV EDX,ESI 0050E62E . E8 2D070000 CALL ESTUDY.0050ED60 0050E633 . 6A 00 PUSH 0 0050E635 . B9 B0E65000 MOV ECX,ESTUDY.0050E6B0 0050E63A . BA B8E65000 MOV EDX,ESTUDY.0050E6B8 0050E63F . A1 3C285300 MOV EAX,DWORD PTR DS:[53283C] 0050E644 . 8B00 MOV EAX,DWORD PTR DS:[EAX] 0050E646 . E8 F544F6FF CALL ESTUDY.00472B40  <--过去就出现注册错误提示框! 0050E64B . 8BC3 MOV EAX,EBX 0050E64D . E8 220CF6FF CALL ESTUDY.0046F274 0050E652 . 6A 00 PUSH 0 0050E654 . 6A 00 PUSH 0 0050E656 . 68 E3070000 PUSH 7E3 0050E65B . A1 18275300 MOV EAX,DWORD PTR DS:[532718] 0050E660 . 8B00 MOV EAX,DWORD PTR DS:[EAX] 0050E662 . E8 BD99F4FF CALL ESTUDY.00458024 0050E667 . 50 PUSH EAX 0050E668 . E8 3797EFFF CALL 0050E66D . EB 18 JMP SHORT ESTUDY.0050E687 0050E66F > 6A 00 PUSH 0 0050E671 . B9 B0E65000 MOV ECX,ESTUDY.0050E6B0 0050E676 . BA 10E75000 MOV EDX,ESTUDY.0050E710 0050E67B . A1 3C285300 MOV EAX,DWORD PTR DS:[53283C] 0050E680 . 8B00 MOV EAX,DWORD PTR DS:[EAX] 0050E682 . E8 B944F6FF CALL ESTUDY.00472B40 0050E687 > 33C0 XOR EAX,EAX 0050E689 . 5A POP EDX 0050E68A . 59 POP ECX 0050E68B . 59 POP ECX 0050E68C . 64:8910 MOV DWORD PTR FS:[EAX],EDX 0050E68F . 68 A9E65000 PUSH ESTUDY.0050E6A9 0050E694 > 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14] 0050E697 . BA 05000000 MOV EDX,5 0050E69C . E8 FB64EFFF CALL ESTUDY.00404B9C 0050E6A1 . C3 RETN 3、静态分析,用w32dasm黄金版中文版会出错,只好用ollydbg1.09中文版,载入文件,在0050E603处下按F2下断,三个关键比较,都是将EAX所指内存地址中的2字节数据与后面的数(分别是1E61,22B8,270F)进行比较,正确则注册成功。并把注册表HKEY_LOCALMACHINE\SoftWare\ynxx\EStudy\RegInfo="Unregistered Version"改为相应的注册信息。 4、开始想用最简单的爆破,即将0050E609 JE 0050E625中的74 1A 改为75 1A,程序运行,注册时,可以显示注册成功,但由于EAX所指内存地址中的2字节数据不是对的,所以注册表中仍是"Unregistered Version",等于没有注册。 想来想去,即然是与三个常数(1E61,22B8,270F)比较,那干脆就把它的值传到EAX所指内存地址中去,那么就不正程序所要的吗?所以就把0050E603 8138611E0000 CMP DWORD PTR DS:[EAX],1E61 改为MOV DWORD DS:[EAX],1E61 就可以了。 在ollydbg的命令行输入:a 0050E603,MOV DWORD DS:[EAX],1E61 就程序会帮你改好,得到相应的机器码改为C700611E0000,最后爆破,打开ULTRAEDIT做相应修改,就可以了。这样得出的是60天限时版,所以,直接改为MOV DWORD DS:[EAX],22B8 (机器码为C700B8220000),就可以得到完全注册版了。 5、注册成功后,程序会把注册表HKEY_LOCALMACHINE\SoftWare\ynxx\EStudy\RegInfo="Unregistered Version"改为相应的注册信息,导出就可以做成万能解密了。先安装,再导入这个注册表信息,就成注册版了。




欢迎光临 黑色海岸线论坛 (http://bbs.thysea.com/) Powered by Discuz! 7.2