您的位置:首页 > 其它

常见程序入口点(OEP)特征

2012-11-12 18:20 399 查看
转自:http://www.21arm.com/forum.php?mod=viewthread&tid=691&extra=page%3D1

============================我是转载的分割线===================================

delphi:

  55            PUSH EBP

  8BEC          MOV EBP,ESP

  83C4 F0       ADD ESP,-10

  B8 A86F4B00   MOV EAX,PE.004B6FA8

vc++

   55            PUSH EBP

   8BEC          MOV EBP,ESP

   83EC 44       SUB ESP,44

   56            PUSH ESI

vc6.0

  55                 push ebp

  8BEC               mov ebp,esp

  6A FF              push -1

vc7.0

  6A 70              push 70

  68 50110001        push hh.01001150

  E8 1D020000        call hh.010017B0

  33DB               xor ebx,ebx

vb:

00401166  - FF25 6C104000   JMP DWORD PTR DS:[<&MSVBVM60.#100>]      ; MSVBVM60.ThunRTMain

0040116C >  68 147C4000     PUSH PACKME.00407C14

00401171    E8 F0FFFFFF     CALL <JMP.&MSVBVM60.#100>

00401176    0000            ADD BYTE PTR DS:[EAX],AL

00401178    0000            ADD BYTE PTR DS:[EAX],AL

0040117A    0000            ADD BYTE PTR DS:[EAX],AL

0040117C    3000            XOR BYTE PTR DS:[EAX],AL

bc++

0040163C > $ /EB 10         JMP SHORT BCLOCK.0040164E

0040163E     |66            DB 66                                    ;  CHAR 'f'

0040163F     |62            DB 62                                    ;  CHAR 'b'

00401640     |3A            DB 3A                                    ;  CHAR ':'

00401641     |43            DB 43                                    ;  CHAR 'C'

00401642     |2B            DB 2B                                    ;  CHAR '+'

00401643     |2B            DB 2B                                    ;  CHAR '+'

00401644     |48            DB 48                                    ;  CHAR 'H'

00401645     |4F            DB 4F                                    ;  CHAR 'O'

00401646     |4F            DB 4F                                    ;  CHAR 'O'

00401647     |4B            DB 4B                                    ;  CHAR 'K'

00401648     |90            NOP

00401649     |E9            DB E9

0040164A   . |98E04E00      DD OFFSET BCLOCK.___CPPdebugHook

0040164E   > \A1 8BE04E00   MOV EAX,DWORD PTR DS:[4EE08B]

00401653   .  C1E0 02       SHL EAX,2

00401656   .  A3 8FE04E00   MOV DWORD PTR DS:[4EE08F],EAX

0040165B   .  52            PUSH EDX

0040165C   .  6A 00         PUSH 0                                   ; /pModule = NULL

0040165E   .  E8 DFBC0E00   CALL <JMP.&KERNEL32.GetModuleHandleA>    ; \GetModuleHandleA

00401663   .  8BD0          MOV EDX,EAX

dasm:

00401000 >/$  6A 00         PUSH 0                                   ; /pModule = NULL

00401002  |.  E8 C50A0000   CALL <JMP.&KERNEL32.GetModuleHandleA>    ; \GetModuleHandleA

00401007  |.  A3 0C354000   MOV DWORD PTR DS:[40350C],EAX

0040100C  |.  E8 B50A0000   CALL <JMP.&KERNEL32.GetCommandLineA>     ; [GetCommandLineA

00401011  |.  A3 10354000   MOV DWORD PTR DS:[403510],EAX

00401016  |.  6A 0A         PUSH 0A                                  ; /Arg4 = 0000000A

00401018  |.  FF35 10354000 PUSH DWORD PTR DS:[403510]               ; |Arg3 = 00000000

0040101E  |.  6A 00         PUSH 0                                   ; |Arg2 = 00000000

00401020  |.  FF35 0C354000 PUSH DWORD PTR DS:[40350C]               ; |Arg1 = 00000000 

++++++++++++++++++++++++++++++++

看到这里,你应该会问:那么要如何为装?下面我们简单的介绍一下:

1、用ToPo增加大约128字节的空间[注:个人爱好而定],

2、进入LordPE的PE Editor,打开Target.exe, 

把.topo0段名改为.text,装的更像一点[注:也可以个性一点改成自己的大名,不影响结果]

    记下VOffset:13000,把入口点改为这个值.OllyDbg载入Target.exe,轰~我们来到了一个异常,

向上拉动滚动条,来到413000处改写代码: 

++++++++++++++++++++++++++++++++

伪造VC++入口代码特征 

++++++++++++++++++++++++++++++++

push ebp 

mov ebp,esp 

push -1 

push 666666 

push 888888 

mov eax,fs:[0] 

push eax 

mov fs:[0],esp 

+++++++++++++++下边再恢复 +++++++++++++++

pop eax 

mov fs:[0],eax 

pop eax 

pop eax 

pop eax 

pop eax 

mov ebp,eax 

++++++++++++++++++++++++++++++++

    别忘了jmp 405000,也就是壳的入口点.选中修改过的代码按右键,把它保存为newTarget.exe.

PEiD侦测一下:Microsoft Visual C++,并且运行正常,任务完成
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: