自动加密代码编写

1、平衡  pushad    代替花

2、获取基础地址;
3、获取code段起始位置
4、获取code段加密大小
5、获取data段起始位置
6、获取data段加密大小
7、平衡  popad
图片
00000100+基础地址  ==pe地址

pe地址+0x14        中存放的是pe大小

pe地址+0x18+0xe0   ===区段表的起始地址

图片
图片
CODE
区段表起始位置+0x0c==加密的起始位置rva+基础地址==加密的起始位置

区段的起始位置+0x10==加密大小

--0x600  加密的大小控制

===============================

DATA 

区段表的起始位置+0x28+0x0c  获取加密起始位置的rva+基础地址==加密起始位置

区段表的起始位置+0x28+0x10  获取大小

---0x200  作为加密大小

004754C1    55              push    ebp
004754C2    89E5            mov     ebp, esp
004754C4    B9 08000000     mov     ecx, 0x8
004754C9    6A 00           push    0x0
004754CB    49              dec     ecx
004754CC  ^ 75 FB           jnz     short 004754C9
004754CE    8944E4 1C       mov     dword ptr [esp+0x1C], eax
004754D2    895CE4 18       mov     dword ptr [esp+0x18], ebx
004754D6    894CE4 14       mov     dword ptr [esp+0x14], ecx
004754DA    8954E4 10       mov     dword ptr [esp+0x10], edx
004754DE    8964E4 0C       mov     dword ptr [esp+0xC], esp
004754E2    896CE4 08       mov     dword ptr [esp+0x8], ebp
004754E6    8974E4 04       mov     dword ptr [esp+0x4], esi
004754EA    893CE4          mov     dword ptr [esp], edi
004754ED    E8 00000000     call    004754F2                         ; 找基础地址
004754F2    58              pop     eax
004754F3    25 00F0FFFF     and     eax, -0x1000
004754F8    66:8138 4D5A    cmp     word ptr [eax], 0x5A4D
004754FD    74 07           je      short 00475506
004754FF    2D 00100000     sub     eax, 0x1000
00475504  ^ EB F2           jmp     short 004754F8
00475506    50              push    eax             
执行到这个位置的时候 ,基础地址就出来了。放在eax
00475507    8BD8            mov     ebx, eax                         ; 
push    基础地址
00475509    83C3 3C         add     ebx, 0x3C
0047550C    8B1B            mov     ebx, dword ptr [ebx]
0047550E    03D8            add     ebx, eax
00475510    53              push    ebx                              ;
 push    pe 地址
00475511    83C3 14         add     ebx, 0x14
00475514    33D2            xor     edx, edx
00475516    66:8B13         mov     dx, word ptr [ebx]
00475519    52              push    edx                              ; 
push  pe头部大小
0047551A    8B5424 04       mov     edx, dword ptr [esp+0x4]
0047551E    83C2 18         add     edx, 0x18
00475521    031424          add     edx, dword ptr [esp]             ; 
指向  区段表的起始位置
00475524    52              push    edx                              ; 
push  区段表的起始位置
00475525    83C2 0C         add     edx, 0xC
00475528    8B1A            mov     ebx, dword ptr [edx]        
ebx中存放的是code的rva+基础地址
0047552A    035C24 0C       add     ebx, dword ptr [esp+0xC]     
现在的ebx是加密code的起始位置
0047552E    53              push    ebx                              ;
 push  code  起始位置
0047552F    8B5424 04       mov     edx, dword ptr [esp+0x4]         ; 
取得区段表的起始位置
00475533    83C2 10         add     edx, 0x10
00475536    8B1A            mov     ebx, dword ptr [edx]             ; 
获取code的大小
00475538    53              push    ebx                              ; 
push  code  的大小
00475539    8B5424 08       mov     edx, dword ptr [esp+0x8]
0047553D    83C2 28         add     edx, 0x28
00475540    83C2 0C         add     edx, 0xC
00475543    8B1A            mov     ebx, dword ptr [edx]             ; 
获取data的  rva
00475545    035C24 14       add     ebx, dword ptr [esp+0x14]        ; 
data  起始位置
00475549    53              push    ebx                              ; 
push   data   va
0047554A    83C2 04         add     edx, 0x4
0047554D    8B1A            mov     ebx, dword ptr [edx]
0047554F    53              push    ebx                              ; 
psuh   data size
00475550    90              nop
00475551    90              nop
00475552    59              pop     ecx                            
从这个地方开始就要开始加密了
00475553    81E9 00020000   sub     ecx, 0x200                       ;
 
pop
00475559    5B              pop     ebx                              ;
 pop
0047555A    8033 34         xor     byte ptr [ebx], 0x34
0047555D    43              inc     ebx
0047555E    49              dec     ecx
0047555F  ^ 75 F9           jnz     short 0047555A                   ; 
到此   data加密完成
00475561    90              nop
00475562    59              pop     ecx                              ; 
pop
00475563    81E9 00060000   sub     ecx, 0x600
00475569    5B              pop     ebx                              ; 
pop
0047556A    8033 45         xor     byte ptr [ebx], 0x45
0047556D    43              inc     ebx
0047556E    49              dec     ecx
0047556F  ^ 75 F9           jnz     short 0047556A
00475571    58              pop     eax
00475572    58              pop     eax
00475573    58              pop     eax
00475574    58              pop     eax
00475575    8B44E4 1C       mov     eax, dword ptr [esp+0x1C]
00475579    8B5CE4 18       mov     ebx, dword ptr [esp+0x18]
0047557D    8B4CE4 14       mov     ecx, dword ptr [esp+0x14]
00475581    8B54E4 10       mov     edx, dword ptr [esp+0x10]
00475585    8B64E4 0C       mov     esp, dword ptr [esp+0xC]
00475589    8B6CE4 08       mov     ebp, dword ptr [esp+0x8]
0047558D    8B74E4 04       mov     esi, dword ptr [esp+0x4]
00475591    8B3CE4          mov     edi, dword ptr [esp]
00475594    B9 00020000     mov     ecx, 0x200
00475599    C1E1 06         shl     ecx, 0x6
0047559C    C1E9 0C         shr     ecx, 0xC
0047559F    83EC FC         sub     esp, -0x4
004755A2    49              dec     ecx
004755A3  ^ 75 FA           jnz     short 0047559F
004755A5    8B2CE4          mov     ebp, dword ptr [esp]
004755A8    B9 00020000     mov     ecx, 0x200
004755AD    C1E1 06         shl     ecx, 0x6
004755B0    C1E9 0C         shr     ecx, 0xC
004755B3    83E9 04         sub     ecx, 0x4
004755B6    44              inc     esp
004755B7    49              dec     ecx
004755B8  ^ 75 FC           jnz     short 004755B6
004755BA    E8 00000000     call    004755BF
004755BF    812C24 53050000 sub     dword ptr [esp], 0x553
004755C6    C3              retn
二进制:55 89 E5 B9 08 00 00 00 6A 00 49 75 FB 89 44 E4 1C 89 5C E4 18 89 4C E4 14 89 54 E4 10 89 64 E4 0C 89 6C E4 08 89 74 E4 04 89 3C E4 E8 00 00 00 00 58 25 00 F0 FF FF 66 81 38 4D 5A 74 07 2D 00 10 00 00 EB F2 50 8B D8 83 C3 3C 8B 1B 03 D8 53 83 C3 14 33 D2 66 8B 13 52 8B 54 24 04 83 C2 18 03 14 24 52 83 C2 0C 8B 1A 03 5C 24 0C 53 8B 54 24 04 83 C2 10 8B 1A 53 8B 54 24 08 83 C2 28 83 C2 0C 8B 1A 03 5C 24 14 53 83 C2 04 8B 1A 53 90 90 59 81 E9 00 02 00 00 5B 80 33 34 43 49 75 F9 90 59 81 E9 00 06 00 00 5B 80 33 45 43 49 75 F9 58 58 58 58 8B 44 E4 1C 8B 5C E4 18 8B 4C E4 14 8B 54 E4 10 8B 64 E4 0C 8B 6C E4 08 8B 74 E4 04 8B 3C E4 B9 00 02 00 00 C1 E1 06 C1 E9 0C 83 EC FC 49 75 FA 8B 2C E4 B9 00 02 00 00 C1 E1 06 C1 E9 0C 83 E9 04 44 49 75 FC E8 00 00 00 00 81 2C 24 53 05 00 00 C3