吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 13865|回复: 48
收起左侧

[分享] EncryptPE V2.2008.6.18 主程序学习笔记

  [复制链接]
Hmily 发表于 2008-12-18 12:05
标 题: 【分享】EncryptPE V2.2008.6.18 主程序学习笔记
作 者: DarkBull
时 间: 2008-12-17,22:33
链 接: http://bbs.pediy.com/showthread.php?t=78889

一、学习目标:EncryptPE V2.2008.6.18 主程序
二、使用工具:OllyDbg v1.10,ImportREC 1.6 Final,LordPE
三、联系作者:DarkBull#126.com
四、具体过程:
1.寻找OEP
    简单的观察了一下,EPE主程序运行时创建了4个进程:
    第一个创建第二个,带参数“-EPEDEBUGFLAG”,调试模式。
    第二个创建第三个,带参数“-EPEDEBUGFLAG”,调试模式。
    第三个创建第四个,无参数,非调试模式。
    第一个进程创建第二个进程后发送选定的消息,然后第一个进程终止。所以程序运行时系统里只能看见三个进程。
    出现主程序的界面后,DUMP第四个进程。通过查找DELPHI的特征码能找到OEP为:004E6830。
    Encryptp.<> $  55       PUSH EBP
    004E6831    .  8BEC     MOV EBP,ESP
    004E6833    .  83C4 F0  ADD ESP,-10
    004E6836    .  B8 F8654>MOV EAX,Encryptp.004E65F8
    004E683B    .  E8 5005F>CALL Encryptp.00406D90
    004E6840    .  EB 04    JMP SHORT Encryptp.004E6846
    004E6842       45       DB 45                                 ;  CHAR 'E'
    004E6843       50       DB 50                                 ;  CHAR 'P'
    004E6844       45       DB 45                                 ;  CHAR 'E'
    004E6845       25       DB 25                                 ;  CHAR '%'
    004E6846    >  E8 9574F>CALL Encryptp.004CDCE0
    004E684B    .  E8 40DFF>CALL Encryptp.00404790
    004E6850    .  0000     ADD BYTE PTR DS:[EAX],AL
    004E6852    .  0000     ADD BYTE PTR DS:[EAX],AL
    004E6854    .  0000     ADD BYTE PTR DS:[EAX],AL
    004E6840处的嵌入代码居然没有被替换。
2.修复IAT
    经观察发现IAT处的函数地址被Hook到01130000段里(这个地址是不固定的),大小为10000H个字节。
    01130000     E8 1F550C7>CALL V2200806.711F5524
    01130005   - FF25 0B001>JMP NEAR DWORD PTR DS:[113000B]
    0113000B     05 0013010>ADD EAX,11300
    01130010     0080 7C1AC>ADD BYTE PTR DS:[EAX+4EC91A7C],AL
    01130016     0058 81    ADD BYTE PTR DS:[EAX-7F],BL
    01130019     41         INC ECX
    0113001A     010432     ADD DWORD PTR DS:[EDX+ESI],EAX
    0113001D     D200       ROL BYTE PTR DS:[EAX],CL
    0113001F     011A       ADD DWORD PTR DS:[EDX],EBX
    01130021     C9         LEAVE
    01130022     0E         PUSH CS
    01130023     00CF       ADD BH,CL
    01130025     97         XCHG EAX,EDI
    01130026     B1 FF      MOV CL,0FF
    01130028     F1         INT1
    01130029     0000       ADD BYTE PTR DS:[EAX],AL
    进入711F5524这个过程,返回时就可以得到函数地址,将它写回IAT即可。IATRVA: 000EC17C IATSize: 00000774。
3.修复Code Replace
    被替换的代码有以下几种形式:
    (1)JMP NEARPROC被替换成JMP EPE1段,JMP NEARPROC。修复方法:进入EPE1段把替换的地址写回原处。
    (2)CALL NEARPROC被替换成CALL EPE1段,JMP NEARPROC。修复方法:进入EPE1段把替换的地址写回原处。
    (3)有很多6、7、10个字节的指令被替换成JMP 01130000段。修复方法:
    跟进JMP,来到以下过程:
    011347FC     E8 87110C7>CALL V2200806.711F5988
    01134801     0052 1F    ADD BYTE PTR DS:[EDX+1F],DL
    01134804     40         INC EAX
    01134805     0000       ADD BYTE PTR DS:[EAX],AL
    01134807     0000       ADD BYTE PTR DS:[EAX],AL
    01134809     006D 72    ADD BYTE PTR SS:[EBP+72],CH
    0113480C     59         POP ECX
    0113480D     005462 D2  ADD BYTE PTR DS:[EDX-2E],DL
    01134811     0006       ADD BYTE PTR DS:[ESI],AL
    01134813     32D2       XOR DL,DL
    01134815     0000       ADD BYTE PTR DS:[EAX],AL
    01134817     0018       ADD BYTE PTR DS:[EAX],BL
    01134819     B6 4E      MOV DH,4E
    0113481B     0000       ADD BYTE PTR DS:[EAX],AL
    0113481D     0000       ADD BYTE PTR DS:[EAX],AL
    0113481F     0000       ADD BYTE PTR DS:[EAX],AL
    01134821     000432     ADD BYTE PTR DS:[EDX+ESI],AL
    01134824     D200       ROL BYTE PTR DS:[EAX],CL
    01134826     0157 3D    ADD DWORD PTR DS:[EDI+3D],EDX
    01134829     18B6 4E00C>SBB BYTE PTR DS:[ESI+97CF004E],DH
    0113482F     B1 FF      MOV CL,0FF
    在HEX DUMP里是这样的:
    011347FC  E8 87 11 0C 70 00 52 1F 40 00 00 00 00 00 6D 72  鑷.p.R@.....mr
    0113480C  59 00 54 62 D2 00 06 32 D2 00 00 00 18 B6 4E 00  Y.Tb?2?..禢.
    0113481C  00 00 00 00 00 00 04 32 D2 00 01 57 3D 18 B6 4E  ......2?W=禢
    0113482C  00 CF 97 B1 FF                                   .蠗?鑂
    注意最后4个数字,0FFB197CF XOR 0FFFFFFFF = 004E6830(OEP)。继续进入,如下代码:
    711F5988     9C         PUSHFD
    711F5989     60         PUSHAD
    711F598A     E8 0500000>CALL V2200806.711F5994
    711F598F     61         POPAD
    711F5990     9D         POPFD
    711F5991     C3         RET
    执行完后,见到HEX DUMP如下:
    011347FC  E8 87 11 0C 70 FF 52 1F 40 00 00 00 00 00 6D 72  鑷.p

Encryptpe1.rar

403.17 KB, 下载次数: 103, 下载积分: 吾爱币 -1 CB

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

maokecheng 该用户已被删除
maokecheng 发表于 2008-12-18 12:12
提示: 作者被禁止或删除 内容自动屏蔽
wgz001 发表于 2008-12-18 12:13
鬼手 发表于 2008-12-18 12:14
zyfljy 发表于 2008-12-18 13:34
厉害 我是看不懂:'(
babaloveyou 发表于 2008-12-18 15:53
这种水平的人 只能表示 膜拜了
estelle 发表于 2008-12-18 16:47
hehe同志们好好学习学习吧
亚尔迪 发表于 2008-12-18 19:28
不错,真的很好的帖子
aiCR 发表于 2008-12-19 16:22
好东西,收下了,谢谢楼主
柯梦南 发表于 2008-12-22 09:55
真有点高深啊,下载试着练习吧
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 07:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表