自动加密代码编写
1、平衡 pushad 代替花2、获取基础地址;3、获取code段起始位置4、获取code段加密大小5、获取data段起始位置6、获取data段加密大小7、平衡 popad00000100+基础地址 ==pe地址
pe地址+0x14 中存放的是pe大小
pe地址+0x18+0xe0 ===区段表的起始地址CODE区段表起始位置+0x0c==加密的起始位置rva+基础地址==加密的起始位置
区段的起始位置+0x10==加密大小
--0x600 加密的大小控制
===============================DATA
区段表的起始位置+0x28+0x0c 获取加密起始位置的rva+基础地址==加密起始位置
区段表的起始位置+0x28+0x10 获取大小---0x200 作为加密大小
004754C1 55 push ebp004754C2 89E5 mov ebp, esp004754C4 B9 08000000 mov ecx, 0x8004754C9 6A 00 push 0x0004754CB 49 dec ecx004754CC ^ 75 FB jnz short 004754C9004754CE 8944E4 1C mov dword ptr [esp+0x1C], eax004754D2 895CE4 18 mov dword ptr [esp+0x18], ebx004754D6 894CE4 14 mov dword ptr [esp+0x14], ecx004754DA 8954E4 10 mov dword ptr [esp+0x10], edx004754DE 8964E4 0C mov dword ptr [esp+0xC], esp004754E2 896CE4 08 mov dword ptr [esp+0x8], ebp004754E6 8974E4 04 mov dword ptr [esp+0x4], esi004754EA 893CE4 mov dword ptr [esp], edi004754ED E8 00000000 call 004754F2 ; 找基础地址004754F2 58 pop eax004754F3 25 00F0FFFF and eax, -0x1000004754F8 66:8138 4D5A cmp word ptr [eax], 0x5A4D004754FD 74 07 je short 00475506004754FF 2D 00100000 sub eax, 0x100000475504 ^ EB F2 jmp short 004754F800475506 50 push eax 执行到这个位置的时候 ,基础地址就出来了。放在eax 00475507 8BD8 mov ebx, eax ; push 基础地址 00475509 83C3 3C add ebx, 0x3C0047550C 8B1B mov ebx, dword ptr [ebx]0047550E 03D8 add ebx, eax00475510 53 push ebx ; push pe 地址 00475511 83C3 14 add ebx, 0x1400475514 33D2 xor edx, edx00475516 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, 0x1800475521 031424 add edx, dword ptr [esp] ; 指向 区段表的起始位置 00475524 52 push edx ; push 区段表的起始位置 00475525 83C2 0C add edx, 0xC00475528 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, 0x2800475540 83C2 0C add edx, 0xC00475543 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, 0x40047554D 8B1A mov ebx, dword ptr [edx]0047554F 53 push ebx ; psuh data size 00475550 90 nop00475551 90 nop00475552 59 pop ecx 从这个地方开始就要开始加密了 00475553 81E9 00020000 sub ecx, 0x200 ; pop 00475559 5B pop ebx ; pop 0047555A 8033 34 xor byte ptr [ebx], 0x340047555D 43 inc ebx0047555E 49 dec ecx0047555F ^ 75 F9 jnz short 0047555A ; 到此 data加密完成 00475561 90 nop00475562 59 pop ecx ; pop 00475563 81E9 00060000 sub ecx, 0x60000475569 5B pop ebx ; pop 0047556A 8033 45 xor byte ptr [ebx], 0x450047556D 43 inc ebx0047556E 49 dec ecx0047556F ^ 75 F9 jnz short 0047556A00475571 58 pop eax00475572 58 pop eax00475573 58 pop eax00475574 58 pop eax00475575 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, 0x20000475599 C1E1 06 shl ecx, 0x60047559C C1E9 0C shr ecx, 0xC0047559F 83EC FC sub esp, -0x4004755A2 49 dec ecx004755A3 ^ 75 FA jnz short 0047559F004755A5 8B2CE4 mov ebp, dword ptr [esp]004755A8 B9 00020000 mov ecx, 0x200004755AD C1E1 06 shl ecx, 0x6004755B0 C1E9 0C shr ecx, 0xC004755B3 83E9 04 sub ecx, 0x4004755B6 44 inc esp004755B7 49 dec ecx004755B8 ^ 75 FC jnz short 004755B6004755BA E8 00000000 call 004755BF004755BF 812C24 53050000 sub dword ptr [esp], 0x553004755C6 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