- UID
 - 14878
 
 注册时间2006-6-4
阅读权限30
最后登录1970-1-1
龙战于野 
  
 
 
 
该用户从未签到  
 | 
 
为了使你的程序不那么容易被破解,可以为装成其它语言开发的。 
 
下面我们贴一些常见语言编写的程序的入口点代码 
 
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++,并且运行正常,任务完成.  
 
感谢您耐心阅读到这里。写的不好勿丢砖头.... /:D |   
 
 
 
 |