在网上找到johnroot的文章。有些问题不明白,请前辈指点下。
1、文中第二步说“找个注册版”,这个注册版哪里有下载呢?
2、最后有“使自己的机器号为:1F0C93ACFFFA71C200058E3D”,怎么操作改自己的机器ID呢?
=====================================
EncryptPE V2.2007.4.11主程序破解分析
EncryptPE V2.2007.4.11主程序破解分析
文章标题】: EncryptPE V2.2007.4.11主程序破解分析
【文章作者】: johnroot
【软件名称】: EncryptPE V2.2007.4.11主程序
【下载地址】: 自己搜索下载
【保护方式】: EncryptPE V2.2007.4.11
【编写语言】: DELPHI
【使用工具】: OLLYDBG
【操作平台】: WIN32
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】[code] 1。脱壳我就不在这多罗嗦了,详细请参考DarkBull大侠的文章。
2。修补被KEY文件偷走的3段代码:
找个注册版 ,DUMP就可以找到
004C4F6D 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
004C4F70 BA F4B44C00 MOV EDX,EncryptP.004CB4F4
004C4F75 E8 3EF9F3FF CALL EncryptP.004048B8
004C4F7A 8D95 48FFFFFF LEA EDX,DWORD PTR SS:[EBP-B8]
004C5CFE 8D85 48FFFFFF LEA EAX,DWORD PTR SS:[EBP-B8]
004C5D04 E8 1FF0F3FF CALL EncryptP.00404D28
004C5D09 C600 06 MOV BYTE PTR DS:[EAX],6
004C832E 66:A1 605D4D00 MOV AX,WORD PTR DS:[4D5D60]
004C8334 66:83C0 1C ADD AX,1C
004C8338 66:0305 405D4D0>ADD AX,WORD PTR DS:[4D5D40]
004C833F 66:0305 445D4D0>ADD AX,WORD PTR DS:[4D5D44]
004C8346 66:83E8 02 SUB AX,2
004C834A 66:BA 0400 MOV DX,4
004C834E E8 418BFAFF CALL EncryptP.00470E94
004C8353 8BD0 MOV EDX,EAX
004C8355 8D85 68FFFFFF LEA EAX,DWORD PTR SS:[EBP-98]
004C835B B9 04000000 MOV ECX,4
004C8360 E8 13F6F3FF CALL EncryptP.00407978
004C8365 8D85 44FFFFFF LEA EAX,DWORD PTR SS:[EBP-BC]
004C836B 8B95 68FFFFFF MOV EDX,DWORD PTR SS:[EBP-98]
004C8371 E8 E6CAF3FF CALL EncryptP.00404E5C
004C8376 66:A1 605D4D00 MOV AX,WORD PTR DS:[4D5D60]
004C837C 66:83C0 1C ADD AX,1C
004C8380 66:0305 405D4D0>ADD AX,WORD PTR DS:[4D5D40]
004C8387 66:0305 445D4D0>ADD AX,WORD PTR DS:[4D5D44]
004C838E 66:83C0 02 ADD AX,2
004C8392 66:8B95 68FFFFF>MOV DX,WORD PTR SS:[EBP-98]
004C8399 E8 F68AFAFF CALL EncryptP.00470E94
004C839E 50 PUSH EAX
004C839F 8D85 44FFFFFF LEA EAX,DWORD PTR SS:[EBP-BC]
004C83A5 E8 7EC9F3FF CALL EncryptP.00404D28
004C83AA 8B8D 68FFFFFF MOV ECX,DWORD PTR SS:[EBP-98]
004C83B0 5A POP EDX
004C83B1 E8 C2F5F3FF CALL EncryptP.00407978
004C83B6 8B95 44FFFFFF MOV EDX,DWORD PTR SS:[EBP-BC]
004C83BC 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20]
004C83BF 8B08 MOV ECX,DWORD PTR DS:[EAX]
004C83C1 FF51 2C CALL DWORD PTR DS:[ECX+2C]
3。找出壳的数据文件:
004D045C > 55 PUSH EBP OEP
004D045D 8BEC MOV EBP,ESP
004D045F 83C4 F0 ADD ESP,-10
004D0462 B8 4C024D00 MOV EAX,EncryptP.004D024C
004D0467 E8 B868F3FF CALL EncryptP.00406D24
004D046C E8 3FE5FEFF CALL EncryptP.004BE9B0 跟进
004BE9C2 66:BA 1C00 MOV DX,1C 数据大小
004BE9C6 66:B8 0100 MOV AX,1 数据起始位置
004BE9CA E8 C524FBFF CALL EncryptP.00470E94 获取壳数据
004BE9CF 8B10 MOV EDX,DWORD PTR DS:[EAX]
004BE9C2 66:BA 1C00 MOV DX,1C
修改此处命令为 mov DX,F0000,来获取全部数据
004BE9CF 8B10 MOV EDX,DWORD PTR DS:[EAX] F4我们停在着查看 EAX的数据就是壳的数据
用WINHEX获取EAX处数据长度为F000,另存为文件 EPE.DAT
看看壳的数据:
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000000 38 A8 CB EE 7C 69 CC EE D8 0B CC EE FC FE CC EE 8ㄋ顋i填?填填
00000010 FC BB CC EE 40 E2 0B 00 D5 06 00 00 CB CE CC E5 填@?.?..宋体
00000020 00 00 00 00 FF FF FF FF 04 00 00 00 BE AF B8 E6 ....
呵呵!是我们想要的,数据前面5个地址(每个地址4字节),是壳加密了的子程序地址。
Address是函数真实地址与保护密码的HASH值前八位(不足八位则前补0)转换过来的数以及特征整数两次异或过的,
自己处理下就可以用了。
4。找出壳的特征数值和原加壳机器的机器号:
用WINHEX搜索“EncryptPE(未注册)”可以找到
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00EF4790 4E 0D 0A 44 31 38 44 46 45 45 36 30 38 31 45 36 N..D18DFEE6081E6
00EF47A0 33 34 32 46 37 45 31 39 43 42 44 0D 0A 6A 6F 68 342F7E19CBD..joh
00EF47B0 6E 72 6F 6F 74 0D 0A 36 36 36 36 36 36 36 36 36 nroot..666666666
00EF47C0 36 36 36 36 36 36 0D 0A 45 6E 63 72 79 70 74 50 666666..EncryptP
00EF47D0 45 28 CE B4 D7 A2 B2 E1 29 0D 0A 31 0D 0A 30 0D E(未注册)..1..0.
00EF47E0 0A 30 0D 0A 32 30 30 37 31 30 31 37 0D 0A 32 30 .0..20071017..20
00EF47F0 30 38 30 36 33 30 0D 0A 33 30 30 0D 0A 33 35 0D 080630..300..35.
00EF4800 0A 33 30 30 0D 0A 31 30 32 30 0D 0A 30 44 35 43 .300..1020..0D5C
00EF4810 30 31 35 45 34 42 31 30 45 41 45 42 35 45 44 43 015E4B10EAEB5EDC
00EF4820 32 31 42 33 37 46 30 43 34 42 36 41 44 30 30 46 21B37F0C4B6AD00F
00EF4830 37 38 44 41 45 43 31 44 38 46 31 42 44 33 46 44 78DAEC1D8F1BD3FD
00EF4840 43 43 42 38 30 42 38 46 36 31 30 34 37 46 33 30 CCB80B8F61047F30
00EF4850 32 46 37 39 36 35 31 31 46 30 45 41 45 39 0D 0A 2F796511F0EAE9..
00EF4860 31 46 30 43 39 33 41 43 46 46 46 41 37 31 43 32 1F0C93ACFFFA71C2
00EF4870 30 30 30 35 38 45 33 44 0D 00058E3D.
由上数据可得知 :
特征整数为:1020
保密码的Hash值:0D5C015E4B10EAEB5EDC21B37F0C4B6AD00F78DAEC1D8F1BD3FDCCB80B8F61047F302F796511F0EAE9
原加壳机器的机器号:1F0C93ACFFFA71C200058E3D
限制试用天数、次数为:300
过期日期为:20080630
5。EncryptPE V2.2007.4.11的效验:
主程序里:
::004C431C:: A1 60444D00 MOV EAX,[4D4460]
::004C4321:: 8B00 MOV EAX,[EAX]
::004C4323:: BA 0F000000 MOV EDX,F
::004C4328:: 8B18 MOV EBX,[EAX]
::004C432A:: FF53 0C CALL [EBX+C] 获取原加壳机器的机器码
::004C432D:: 8B45 E4 MOV EAX,[EBP-1C]
::004C4330:: B9 04000000 MOV ECX,4 取4位
::004C4335:: BA 09000000 MOV EDX,9 第9位起
::004C433A:: E8 F109F4FF CALL 00404D30 \:JMPUP
::004C433F:: 8B45 E8 MOV EAX,[EBP-18]
::004C4342:: BA 50444C00 MOV EDX,4C4450 \->: FFFA 比较是不是“FFFA”
::004C4347:: E8 D008F4FF CALL 00404C1C \:JMPUP
::004C434C:: 74 07 JE SHORT 004C4355 \:JMPDOWN
这样的效验有4处,还有效验特征整数
DLL里:
::71201035:: 80B8 6E030000 07 CMP BYTE PTR [EAX+36E], 7
::7120103C:: 73 6B JNB SHORT 712010A9 \:JMPDOWN //判断是不是EncryptPE主程序
::7120108B:: BA FC112071 MOV EDX, 712011FC \->: TEncryptPEForm //如果不是主程序,就判断主窗体
::71201090:: E8 7F3EF2FF CALL 71124F14 \:JMPUP
::71201095:: 75 12 JNZ SHORT 712010A9 \:JMPDOWN
::71201097:: 8B45 F8 MOV EAX, [EBP-8]
::7120109A:: 05 58030000 ADD EAX, 358
::7120109F:: BA E8112071 MOV EDX, 712011E8 \->: EncryptPE 如果不是主程序,而主窗体 是 “TEncryptPEForm”就使加解密字符串结果为“EncryptPE”
::712010A4:: E8 C33AF2FF CALL 71124B6C \:JMPUP
由上面可知,我们只要把DUMP下的程序还原成原程序一样,它的效验就失效了
特征整数为:1020,
使自己的机器号为:1F0C93ACFFFA71C200058E3D ,选上开始获取的处理好的壳数据,自己再加
EncryptPE壳,到此EncryptPE V2.2007.4.11的注册权就由自己控制了。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课