自动加密代码编写
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
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
转载于:https://blog.51cto.com/hackerwang/1251307