某保护壳测试版LOADER分析 猥琐乱跳流:
call后跟如下任意平衡堆栈,互斥判断,直接JMP,牛多
lea esp, dword ptr [esp+4]
sub esp, -4
add esp, 4
pop dword ptr [esp-4] 11BC000 LOADER入口
011BC000 50 push eax
011BC001 60 pushad
011BC002 E8 04000000 call 011BC00B
011BC007 09A0 FBE258B9 or dword ptr [eax+B958E2FB], esp
011BC00D 0000 add byte ptr [eax], al
011BC00F 0000 add byte ptr [eax], al
011BC011 03C9 add ecx, ecx
011BC013 61 popad
011BC014 59 pop ecx
011BC015 79 0E jns short 011BC025
011BC017 DB2D 1DC01B01 fld tbyte ptr [11BC01D]
011BC01D FFFF ??? ; 未知命令
011BC01F FFFF ??? ; 未知命令
011BC021 FFFF ??? ; 未知命令
011BC023 FFFF ??? ; 未知命令
011BC025 EB 0A jmp short 011BC031 11BDCB8 RDTSC
011BDCB8 50 push eax
011BDCB9 57 push edi
011BDCBA 53 push ebx
011BDCBB 9C pushfd
011BDCBC E8 02000000 call 011BDCC3
011BDCC1 ^ 70 E0 jo short 011BDCA3
011BDCC3 5F pop edi
011BDCC4 81C7 41000000 add edi, 41
011BDCCA C7C1 0F000000 mov ecx, 0F
011BDCD0 C6C3 06 mov bl, 6
011BDCD3 8A07 mov al, byte ptr [edi]
011BDCD5 80F0 5E xor al, 5E
011BDCD8 F6D8 neg al
011BDCDA FEC8 dec al
011BDCDC F6D0 not al
011BDCDE FEC0 inc al
011BDCE0 80F0 5B xor al, 5B
011BDCE3 80C0 56 add al, 56
011BDCE6 80E8 6F sub al, 6F
011BDCE9 C0C8 38 ror al, 38
011BDCEC 80C0 78 add al, 78
011BDCEF 8807 mov byte ptr [edi], al
011BDCF1 4F dec edi
011BDCF2 ^ E2 DF loopd short 011BDCD3
011BDCF4 3AF8 cmp bh, al
011BDCF6 04 FF add al, 0FF
011BDCF8 F7B4D6 2687ABA7 div dword ptr [esi+edx*8+A7AB8726]
011BDCFF A7 cmps dword ptr [esi], dword ptr es:[e>
011BDD00 A7 cmps dword ptr [esi], dword ptr es:[e>
011BDD01 C8 875057 enter 5087, 57
011BDD05 53 push ebx
011BDD06 9C pushfd
011BDD07 E8 02000000 call 011BDD0E
011BDD0C 4C dec esp
011BDD0D 335F 81 xor ebx, dword ptr [edi-7F]
011BDD10 C7 ??? ; 未知命令
011BDD11 F6FF idiv bh
011BDD13 FFFF ??? ; 未知命令
011BDD15 C7C1 0F000000 mov ecx, 0F
011BDD1B C6C3 06 mov bl, 6
011BDD1E 8A07 mov al, byte ptr [edi]
011BDD20 80E8 78 sub al, 78
011BDD23 C0C0 38 rol al, 38
011BDD26 80C0 6F add al, 6F
011BDD29 80E8 56 sub al, 56
011BDD2C 80F0 5B xor al, 5B
011BDD2F FEC8 dec al
011BDD31 F6D0 not al
011BDD33 FEC0 inc al
011BDD35 F6D8 neg al
011BDD37 80F0 5E xor al, 5E
011BDD3A 8807 mov byte ptr [edi], al
011BDD3C 4F dec edi
011BDD3D ^ E2 DF loopd short 011BDD1E
011BDD3F 9D popfd
011BDD40 5B pop ebx
011BDD41 5F pop edi
011BDD42 58 pop eax
011BDD43 E9 720A0000 jmp 011BE7BA
11C18AC SMC解码
011C18AC 5F pop edi
011C18AD 81C7 5A120000 add edi, 125A
011C18B3 C7C1 29120000 mov ecx, 1229
011C18B9 C6C3 37 mov bl, 37
011C18BC 8A07 mov al, byte ptr [edi]
011C18BE FEC8 dec al
011C18C0 F6D8 neg al
011C18C2 FEC8 dec al
011C18C4 F6D0 not al
011C18C6 F6D8 neg al
011C18C8 C0C0 94 rol al, 94
011C18CB C0C8 4D ror al, 4D
011C18CE 80E8 72 sub al, 72
011C18D1 80F0 5C xor al, 5C
011C18D4 F6D0 not al
011C18D6 8807 mov byte ptr [edi], al
011C18D8 4F dec edi
011C18D9 ^ E2 E1 loopd short 011C18BC 11C25CB 导入几个API
011C25CB 81EC 20000000 sub esp, 20
011C25D1 53 push ebx
011C25D2 57 push edi
011C25D3 8B3D 35B01B01 mov edi, dword ptr [11BB035] ; kernel32.LoadLibraryA
011C25D9 55 push ebp
011C25DA 8B2D 391A1C01 mov ebp, dword ptr [11C1A39]
011C25E0 33DB xor ebx, ebx
011C25E2 33C0 xor eax, eax
011C25E4 3BEB cmp ebp, ebx
011C25E6 56 push esi
011C25E7 8B35 39B01B01 mov esi, dword ptr [11BB039] ; kernel32.GetProcAddress
011C25ED C6C2 C7 mov dl, 0C7
011C25F0 0F8E 20000000 jle 011C2616
011C25F6 8A0C05 3D1A1C01 mov cl, byte ptr [eax+11C1A3D]
011C25FD 32CA xor cl, dl
011C25FF 888C04 10000000 mov byte ptr [esp+eax+10], cl
011C2606 81C0 01000000 add eax, 1
011C260C 32D1 xor dl, cl
011C260E 3BC5 cmp eax, ebp
011C2610 ^ 0F8C E0FFFFFF jl 011C25F6
011C2616 8D8424 10000000 lea eax, dword ptr [esp+10]
011C261D 50 push eax
011C261E 889C2C 14000000 mov byte ptr [esp+ebp+14], bl
011C2625 FFD7 call edi
011C2627 8B3D 78241C01 mov edi, dword ptr [11C2478]
011C262D 8BE8 mov ebp, eax
011C262F 33C0 xor eax, eax
011C2631 3BFB cmp edi, ebx
011C2633 C6C2 C7 mov dl, 0C7
011C2636 0F8E 20000000 jle 011C265C
011C263C 8A0C05 7C241C01 mov cl, byte ptr [eax+11C247C]
011C2643 32CA xor cl, dl
011C2645 888C04 10000000 mov byte ptr [esp+eax+10], cl
011C264C 81C0 01000000 add eax, 1
011C2652 32D1 xor dl, cl
011C2654 3BC7 cmp eax, edi
011C2656 ^ 0F8C E0FFFFFF jl 011C263C
011C265C 8D8C24 10000000 lea ecx, dword ptr [esp+10]
011C2663 51 push ecx
011C2664 55 push ebp
011C2665 889C3C 18000000 mov byte ptr [esp+edi+18], bl
011C266C FFD6 call esi
011C266E 8B3D 601E1C01 mov edi, dword ptr [11C1E60]
011C2674 8905 A6DC1B01 mov dword ptr [11BDCA6], eax
011C267A 33C0 xor eax, eax
011C267C 3BFB cmp edi, ebx
011C267E C6C2 C7 mov dl, 0C7
011C2681 0F8E 2C000000 jle 011C26B3
011C2687 E9 07000000 jmp 011C2693
011C268C 8DA424 00000000 lea esp, dword ptr [esp]
011C2693 8A0C05 641E1C01 mov cl, byte ptr [eax+11C1E64]
011C269A 32CA xor cl, dl
011C269C 888C04 10000000 mov byte ptr [esp+eax+10], cl
011C26A3 81C0 01000000 add eax, 1
011C26A9 32D1 xor dl, cl
011C26AB 3BC7 cmp eax, edi
011C26AD ^ 0F8C E0FFFFFF jl 011C2693
011C26B3 8D9424 10000000 lea edx, dword ptr [esp+10]
011C26BA 52 push edx
011C26BB 55 push ebp
011C26BC 889C3C 18000000 mov byte ptr [esp+edi+18], bl
011C26C3 FFD6 call esi
011C26C5 8B3D C91F1C01 mov edi, dword ptr [11C1FC9]
011C26CB 8905 85D51B01 mov dword ptr [11BD585], eax
011C26D1 33C0 xor eax, eax
011C26D3 3BFB cmp edi, ebx
011C26D5 C6C2 C7 mov dl, 0C7
011C26D8 0F8E 20000000 jle 011C26FE
011C26DE 8A0C05 CD1F1C01 mov cl, byte ptr [eax+11C1FCD]
011C26E5 32CA xor cl, dl
011C26E7 888C04 10000000 mov byte ptr [esp+eax+10], cl
011C26EE 81C0 01000000 add eax, 1
011C26F4 32D1 xor dl, cl
011C26F6 3BC7 cmp eax, edi
011C26F8 ^ 0F8C E0FFFFFF jl 011C26DE
011C26FE 8D8424 10000000 lea eax, dword ptr [esp+10]
011C2705 50 push eax
011C2706 55 push ebp
011C2707 889C3C 18000000 mov byte ptr [esp+edi+18], bl
011C270E FFD6 call esi
011C2710 8B3D 0A1E1C01 mov edi, dword ptr [11C1E0A]
011C2716 8905 90D11B01 mov dword ptr [11BD190], eax
011C271C 33C0 xor eax, eax
011C271E 3BFB cmp edi, ebx
011C2720 C6C2 C7 mov dl, 0C7
011C2723 0F8E 2C000000 jle 011C2755
011C2729 E9 07000000 jmp 011C2735
011C272E 8D1C1D 00000000 lea ebx, dword ptr [ebx]
011C2735 8A0C05 0E1E1C01 mov cl, byte ptr [eax+11C1E0E]
011C273C 32CA xor cl, dl
011C273E 888C04 10000000 mov byte ptr [esp+eax+10], cl
011C2745 81C0 01000000 add eax, 1
011C274B 32D1 xor dl, cl
011C274D 3BC7 cmp eax, edi
011C274F ^ 0F8C E0FFFFFF jl 011C2735
011C2755 8D8C24 10000000 lea ecx, dword ptr [esp+10]
011C275C 51 push ecx
011C275D 55 push ebp
011C275E 889C3C 18000000 mov byte ptr [esp+edi+18], bl
011C2765 FFD6 call esi
011C2767 8B3D 39191C01 mov edi, dword ptr [11C1939]
011C276D 8905 8CC41B01 mov dword ptr [11BC48C], eax
011C2773 33C0 xor eax, eax
011C2775 3BFB cmp edi, ebx
011C2777 C6C2 C7 mov dl, 0C7
011C277A 0F8E 20000000 jle 011C27A0
011C2780 8A0C05 3D191C01 mov cl, byte ptr [eax+11C193D]
011C2787 32CA xor cl, dl
011C2789 888C04 10000000 mov byte ptr [esp+eax+10], cl
011C2790 81C0 01000000 add eax, 1
011C2796 32D1 xor dl, cl
011C2798 3BC7 cmp eax, edi
011C279A ^ 0F8C E0FFFFFF jl 011C2780
011C27A0 8D9424 10000000 lea edx, dword ptr [esp+10]
011C27A7 52 push edx
011C27A8 55 push ebp
011C27A9 889C3C 18000000 mov byte ptr [esp+edi+18], bl
011C27B0 FFD6 call esi
011C27B2 8B3D 2A1C1C01 mov edi, dword ptr [11C1C2A]
011C27B8 8905 F8D31B01 mov dword ptr [11BD3F8], eax
011C27BE 33C0 xor eax, eax
011C27C0 3BFB cmp edi, ebx
011C27C2 C6C2 C7 mov dl, 0C7
011C27C5 0F8E 2C000000 jle 011C27F7
011C27CB E9 07000000 jmp 011C27D7
011C27D0 8D1C1D 00000000 lea ebx, dword ptr [ebx]
011C27D7 8A0C05 2E1C1C01 mov cl, byte ptr [eax+11C1C2E]
011C27DE 32CA xor cl, dl
011C27E0 888C04 10000000 mov byte ptr [esp+eax+10], cl
011C27E7 81C0 01000000 add eax, 1
011C27ED 32D1 xor dl, cl
011C27EF 3BC7 cmp eax, edi
011C27F1 ^ 0F8C E0FFFFFF jl 011C27D7
011C27F7 8D8424 10000000 lea eax, dword ptr [esp+10]
011C27FE 50 push eax
011C27FF 55 push ebp
011C2800 889C3C 18000000 mov byte ptr [esp+edi+18], bl
011C2807 FFD6 call esi
011C2809 8B3D C2211C01 mov edi, dword ptr [11C21C2]
011C280F 8905 B0C81B01 mov dword ptr [11BC8B0], eax
011C2815 33C0 xor eax, eax
011C2817 3BFB cmp edi, ebx
011C2819 C6C2 C7 mov dl, 0C7
011C281C 0F8E 20000000 jle 011C2842
011C2822 8A0C05 C6211C01 mov cl, byte ptr [eax+11C21C6]
011C2829 32CA xor cl, dl
011C282B 888C04 10000000 mov byte ptr [esp+eax+10], cl
011C2832 81C0 01000000 add eax, 1
011C2838 32D1 xor dl, cl
011C283A 3BC7 cmp eax, edi
011C283C ^ 0F8C E0FFFFFF jl 011C2822
011C2842 8D8C24 10000000 lea ecx, dword ptr [esp+10]
011C2849 51 push ecx
011C284A 55 push ebp
011C284B 889C3C 18000000 mov byte ptr [esp+edi+18], bl
011C2852 FFD6 call esi
011C2854 8B3D 51201C01 mov edi, dword ptr [11C2051]
011C285A 8905 C4D41B01 mov dword ptr [11BD4C4], eax
011C2860 33C0 xor eax, eax
011C2862 3BFB cmp edi, ebx
011C2864 C6C2 C7 mov dl, 0C7
011C2867 0F8E 2C000000 jle 011C2899
011C286D E9 07000000 jmp 011C2879
011C2872 8D1C1D 00000000 lea ebx, dword ptr [ebx]
011C2879 8A0C05 55201C01 mov cl, byte ptr [eax+11C2055]
011C2880 32CA xor cl, dl
011C2882 888C04 10000000 mov byte ptr [esp+eax+10], cl
011C2889 81C0 01000000 add eax, 1
011C288F 32D1 xor dl, cl
011C2891 3BC7 cmp eax, edi
011C2893 ^ 0F8C E0FFFFFF jl 011C2879
011C2899 8D9424 10000000 lea edx, dword ptr [esp+10]
011C28A0 52 push edx
011C28A1 55 push ebp
011C28A2 889C3C 18000000 mov byte ptr [esp+edi+18], bl
011C28A9 FFD6 call esi
011C28AB 8B3D BA231C01 mov edi, dword ptr [11C23BA]
011C28B1 8905 7DC61B01 mov dword ptr [11BC67D], eax
011C28B7 33C0 xor eax, eax
011C28B9 3BFB cmp edi, ebx
011C28BB C6C2 C7 mov dl, 0C7
011C28BE 0F8E 20000000 jle 011C28E4
011C28C4 8A0C05 BE231C01 mov cl, byte ptr [eax+11C23BE]
011C28CB 32CA xor cl, dl
011C28CD 888C04 10000000 mov byte ptr [esp+eax+10], cl
011C28D4 81C0 01000000 add eax, 1
011C28DA 32D1 xor dl, cl
011C28DC 3BC7 cmp eax, edi
011C28DE ^ 0F8C E0FFFFFF jl 011C28C4
011C28E4 8D8424 10000000 lea eax, dword ptr [esp+10]
011C28EB 50 push eax
011C28EC 55 push ebp
011C28ED 889C3C 18000000 mov byte ptr [esp+edi+18], bl
011C28F4 FFD6 call esi
011C28F6 8B3D 8E221C01 mov edi, dword ptr [11C228E]
011C28FC 8905 7AC41B01 mov dword ptr [11BC47A], eax
011C2902 33C0 xor eax, eax
011C2904 3BFB cmp edi, ebx
011C2906 C6C2 C7 mov dl, 0C7
011C2909 0F8E 2C000000 jle 011C293B
011C290F E9 07000000 jmp 011C291B
011C2914 8D1C1D 00000000 lea ebx, dword ptr [ebx]
011C291B 8A0C05 92221C01 mov cl, byte ptr [eax+11C2292]
011C2922 32CA xor cl, dl
011C2924 888C04 10000000 mov byte ptr [esp+eax+10], cl
011C292B 81C0 01000000 add eax, 1
011C2931 32D1 xor dl, cl
011C2933 3BC7 cmp eax, edi
011C2935 ^ 0F8C E0FFFFFF jl 011C291B
011C293B 8D8C24 10000000 lea ecx, dword ptr [esp+10]
011C2942 51 push ecx
011C2943 55 push ebp
011C2944 889C3C 18000000 mov byte ptr [esp+edi+18], bl
011C294B FFD6 call esi
011C294D 8B3D 95251C01 mov edi, dword ptr [11C2595]
011C2953 8905 25CE1B01 mov dword ptr [11BCE25], eax
011C2959 33C0 xor eax, eax
011C295B 3BFB cmp edi, ebx
011C295D C6C2 C7 mov dl, 0C7
011C2960 0F8E 20000000 jle 011C2986
011C2966 8A0C05 99251C01 mov cl, byte ptr [eax+11C2599]
011C296D 32CA xor cl, dl
011C296F 888C04 10000000 mov byte ptr [esp+eax+10], cl
011C2976 81C0 01000000 add eax, 1
011C297C 32D1 xor dl, cl
011C297E 3BC7 cmp eax, edi
011C2980 ^ 0F8C E0FFFFFF jl 011C2966
011C2986 8D9424 10000000 lea edx, dword ptr [esp+10]
011C298D 52 push edx
011C298E 55 push ebp
011C298F 889C3C 18000000 mov byte ptr [esp+edi+18], bl
011C2996 FFD6 call esi
011C2998 8B3D E2211C01 mov edi, dword ptr [11C21E2]
011C299E 8905 3FC51B01 mov dword ptr [11BC53F], eax
011C29A4 33C0 xor eax, eax
011C29A6 3BFB cmp edi, ebx
011C29A8 C6C2 C7 mov dl, 0C7
011C29AB 0F8E 2C000000 jle 011C29DD
011C29B1 E9 07000000 jmp 011C29BD
011C29B6 8D1C1D 00000000 lea ebx, dword ptr [ebx]
011C29BD 8A0C05 E6211C01 mov cl, byte ptr [eax+11C21E6]
011C29C4 32CA xor cl, dl
011C29C6 888C04 10000000 mov byte ptr [esp+eax+10], cl
011C29CD 81C0 01000000 add eax, 1
011C29D3 32D1 xor dl, cl
011C29D5 3BC7 cmp eax, edi
011C29D7 ^ 0F8C E0FFFFFF jl 011C29BD
011C29DD 8D8424 10000000 lea eax, dword ptr [esp+10]
011C29E4 50 push eax
011C29E5 55 push ebp
011C29E6 889C3C 18000000 mov byte ptr [esp+edi+18], bl
011C29ED FFD6 call esi
011C29EF 8B3D A11A1C01 mov edi, dword ptr [11C1AA1]
011C29F5 8905 FFC91B01 mov dword ptr [11BC9FF], eax
011C29FB 33C0 xor eax, eax
011C29FD 3BFB cmp edi, ebx
011C29FF C6C2 C7 mov dl, 0C7
011C2A02 0F8E 20000000 jle 011C2A28
011C2A08 8A0C05 A51A1C01 mov cl, byte ptr [eax+11C1AA5]
011C2A0F 32CA xor cl, dl
011C2A11 888C04 10000000 mov byte ptr [esp+eax+10], cl
011C2A18 81C0 01000000 add eax, 1
011C2A1E 32D1 xor dl, cl
011C2A20 3BC7 cmp eax, edi
011C2A22 ^ 0F8C E0FFFFFF jl 011C2A08
011C2A28 8D8C24 10000000 lea ecx, dword ptr [esp+10]
011C2A2F 51 push ecx
011C2A30 55 push ebp
011C2A31 889C3C 18000000 mov byte ptr [esp+edi+18], bl
011C2A38 FFD6 call esi
011C2A3A 8B3D 541B1C01 mov edi, dword ptr [11C1B54]
011C2A40 8905 48C71B01 mov dword ptr [11BC748], eax
011C2A46 33C0 xor eax, eax
011C2A48 3BFB cmp edi, ebx
011C2A4A C6C2 C7 mov dl, 0C7
011C2A4D 0F8E 2C000000 jle 011C2A7F
011C2A53 E9 07000000 jmp 011C2A5F
011C2A58 8D1C1D 00000000 lea ebx, dword ptr [ebx]
011C2A5F 8A0C05 581B1C01 mov cl, byte ptr [eax+11C1B58]
011C2A66 32CA xor cl, dl
011C2A68 888C04 10000000 mov byte ptr [esp+eax+10], cl
011C2A6F 81C0 01000000 add eax, 1
011C2A75 32D1 xor dl, cl
011C2A77 3BC7 cmp eax, edi
011C2A79 ^ 0F8C E0FFFFFF jl 011C2A5F
011C2A7F 8D9424 10000000 lea edx, dword ptr [esp+10]
011C2A86 52 push edx
011C2A87 55 push ebp
011C2A88 889C3C 18000000 mov byte ptr [esp+edi+18], bl
011C2A8F FFD6 call esi
011C2A91 8B3D 101D1C01 mov edi, dword ptr [11C1D10]
011C2A97 8905 A4CF1B01 mov dword ptr [11BCFA4], eax
011C2A9D 33C0 xor eax, eax
011C2A9F 3BFB cmp edi, ebx
011C2AA1 C6C2 C7 mov dl, 0C7
011C2AA4 0F8E 20000000 jle 011C2ACA
011C2AAA 8A0C05 141D1C01 mov cl, byte ptr [eax+11C1D14]
011C2AB1 32CA xor cl, dl
011C2AB3 888C04 10000000 mov byte ptr [esp+eax+10], cl
011C2ABA 81C0 01000000 add eax, 1
011C2AC0 32D1 xor dl, cl
011C2AC2 3BC7 cmp eax, edi
011C2AC4 ^ 0F8C E0FFFFFF jl 011C2AAA
011C2ACA 8D8424 10000000 lea eax, dword ptr [esp+10]
011C2AD1 50 push eax
011C2AD2 55 push ebp
011C2AD3 889C3C 18000000 mov byte ptr [esp+edi+18], bl
011C2ADA FFD6 call esi
011C2ADC 8B0D 35B01B01 mov ecx, dword ptr [11BB035] ; kernel32.LoadLibraryA
011C2AE2 8B15 39B01B01 mov edx, dword ptr [11BB039] ; kernel32.GetProcAddress
011C2AE8 5E pop esi
011C2AE9 5D pop ebp
011C2AEA 5F pop edi
011C2AEB 8905 1BCD1B01 mov dword ptr [11BCD1B], eax
011C2AF1 890D 39D31B01 mov dword ptr [11BD339], ecx
011C2AF7 8915 ADCB1B01 mov dword ptr [11BCBAD], edx
011C2AFD 5B pop ebx
011C2AFE 81C4 20000000 add esp, 20
011C2B04 50 push eax
011C2B05 57 push edi
011C2B06 53 push ebx
011C2B07 9C pushfd
011C2B08 E8 03000000 call 011C2B10 11C2B80 RDTSC
011C2B4E 5F pop edi
011C2B4F 81C7 42000000 add edi, 42
011C2B55 C7C1 0F000000 mov ecx, 0F
011C2B5B C6C3 DB mov bl, 0DB
011C2B5E 8A07 mov al, byte ptr [edi]
011C2B60 F6D0 not al
011C2B62 FEC0 inc al
011C2B64 80C0 C7 add al, 0C7
011C2B67 80F0 8A xor al, 8A
011C2B6A FEC0 inc al
011C2B6C 80C0 FF add al, 0FF
011C2B6F 80E8 0F sub al, 0F
011C2B72 C0C8 BC ror al, 0BC
011C2B75 80E8 E2 sub al, 0E2
011C2B78 C0C8 DB ror al, 0DB
011C2B7B 8807 mov byte ptr [edi], al
011C2B7D 4F dec edi
011C2B7E ^ E2 DE loopd short 011C2B5E
011C2B80 9D popfd
011C2B81 5B pop ebx
011C2B82 5F pop edi
011C2B83 58 pop eax
011C2B84 50 push eax
011C2B85 0F31 rdtsc
011C2B87 81E0 0C000000 and eax, 0C
011C2B8D 2BE0 sub esp, eax
011C2B8F 50 push eax
011C2B90 57 push edi
011C2B91 53 push ebx
011C2B92 9C pushfd
011C2B93 E8 02000000 call 011C2B9A 11C2BDB SMC解码
011C2BDB 5F pop edi ; TTProtec.011C2BD8
011C2BDC 81C7 28D4E3FE add edi, FEE3D428
011C2BE2 57 push edi
011C2BE3 818424 00000000>add dword ptr [esp], 011BD244
011C2BEE 8BF7 mov esi, edi
011C2BF0 81C6 00004000 add esi, 00400000
011C2BF6 5F pop edi
011C2BF7 8937 mov dword ptr [edi], esi
011C2BF9 9D popfd
011C2BFA 5E pop esi
011C2BFB 5F pop edi
011C2BFC 50 push eax
011C2BFD 57 push edi
011C2BFE 53 push ebx
011C2BFF 9C pushfd
011C2C00 E8 01000000 call 011C2C06
011C2C05 C7 ??? ; 未知命令
011C2C06 5F pop edi
011C2C07 81C7 D3010000 add edi, 1D3
011C2C0D C7C1 A6010000 mov ecx, 1A6
011C2C13 C6C3 9E mov bl, 9E
011C2C16 8A07 mov al, byte ptr [edi]
011C2C18 F6D8 neg al
011C2C1A C0C0 1C rol al, 1C
011C2C1D FEC8 dec al
011C2C1F F6D8 neg al
011C2C21 FEC8 dec al
011C2C23 FEC0 inc al
011C2C25 80F0 E1 xor al, 0E1
011C2C28 F6D8 neg al
011C2C2A FEC8 dec al
011C2C2C F6D8 neg al
011C2C2E 8807 mov byte ptr [edi], al
011C2C30 4F dec edi
011C2C31 ^ E2 E3 loopd short 011C2C16 11C2CD2 LPK.DLL
011C2CD2 81EC 44010000 sub esp, 144
011C2CD8 55 push ebp
011C2CD9 8B2D 39D31B01 mov ebp, dword ptr [11BD339] ; kernel32.LoadLibraryA
011C2CDF 57 push edi
011C2CE0 8B3D B92C1C01 mov edi, dword ptr [11C2CB9]
011C2CE6 33C0 xor eax, eax
011C2CE8 85FF test edi, edi
011C2CEA 53 push ebx
011C2CEB 8B1D 8CC41B01 mov ebx, dword ptr [11BC48C] ; kernel32.GetSystemDirectoryA
011C2CF1 C6C2 C7 mov dl, 0C7
011C2CF4 0F8E 20000000 jle 011C2D1A
011C2CFA 8A0C05 BD2C1C01 mov cl, byte ptr [eax+11C2CBD]
011C2D01 32CA xor cl, dl
011C2D03 888C04 0C000000 mov byte ptr [esp+eax+C], cl
011C2D0A 81C0 01000000 add eax, 1
011C2D10 32D1 xor dl, cl
011C2D12 3BC7 cmp eax, edi
011C2D14 ^ 0F8C E0FFFFFF jl 011C2CFA
011C2D1A 68 04010000 push 104
011C2D1F 8D8424 50000000 lea eax, dword ptr [esp+50]
011C2D26 50 push eax
011C2D27 C6843C 14000000>mov byte ptr [esp+edi+14], 0
011C2D2F FFD3 call ebx
011C2D31 33C0 xor eax, eax
011C2D33 388424 4C000000 cmp byte ptr [esp+4C], al
011C2D3A 0F84 14000000 je 011C2D54
011C2D40 81C0 01000000 add eax, 1
011C2D46 80BC04 4C000000>cmp byte ptr [esp+eax+4C], 0
011C2D4E ^ 0F85 ECFFFFFF jnz 011C2D40
011C2D54 8A8C24 0C000000 mov cl, byte ptr [esp+C]
011C2D5B C68404 4C000000>mov byte ptr [esp+eax+4C], 5C
011C2D63 81C0 01000000 add eax, 1
011C2D69 84C9 test cl, cl
011C2D6B 0F84 4D000000 je 011C2DBE
011C2D71 8D9424 0C000000 lea edx, dword ptr [esp+C]
011C2D78 9C pushfd
011C2D79 53 push ebx
011C2D7A 85F3 test ebx, esi
011C2D7C 5B pop ebx
011C2D7D 57 push edi
011C2D7E 56 push esi
011C2D7F 81CE F6B380BA or esi, BA80B3F6
011C2D85 5E pop esi
011C2D86 E8 01000000 call 011C2D8C
11C2E20 USER32.DLL
011C2EE7 81EC 44010000 sub esp, 144
011C2EED 56 push esi
011C2EEE 8B35 39D31B01 mov esi, dword ptr [11BD339] ; kernel32.LoadLibraryA
011C2EF4 53 push ebx
011C2EF5 8B1D 732E1C01 mov ebx, dword ptr [11C2E73]
011C2EFB 33C0 xor eax, eax
011C2EFD 85DB test ebx, ebx
011C2EFF 57 push edi
011C2F00 8B3D 8CC41B01 mov edi, dword ptr [11BC48C] ; kernel32.GetSystemDirectoryA
011C2F06 C6C2 C7 mov dl, 0C7
011C2F09 0F8E 20000000 jle 011C2F2F
011C2F0F 8A0C05 772E1C01 mov cl, byte ptr [eax+11C2E77]
011C2F16 32CA xor cl, dl
011C2F18 888C04 0C000000 mov byte ptr [esp+eax+C], cl
011C2F1F 81C0 01000000 add eax, 1
011C2F25 32D1 xor dl, cl
011C2F27 3BC3 cmp eax, ebx
011C2F29 ^ 0F8C E0FFFFFF jl 011C2F0F
011C2F2F 68 04010000 push 104
011C2F34 8D8424 50000000 lea eax, dword ptr [esp+50]
011C2F3B 50 push eax
011C2F3C C6841C 14000000>mov byte ptr [esp+ebx+14], 0
011C2F44 FFD7 call edi
011C2F46 33C0 xor eax, eax
011C2F48 388424 4C000000 cmp byte ptr [esp+4C], al
011C2F4F 0F84 14000000 je 011C2F69
011C2F55 81C0 01000000 add eax, 1
011C2F5B 80BC04 4C000000>cmp byte ptr [esp+eax+4C], 0
011C2F63 ^ 0F85 ECFFFFFF jnz 011C2F55
011C2F69 8A8C24 0C000000 mov cl, byte ptr [esp+C]
011C2F70 C68404 4C000000>mov byte ptr [esp+eax+4C], 5C
011C2F78 81C0 01000000 add eax, 1
011C2F7E 84C9 test cl, cl
011C2F80 0F84 4A000000 je 011C2FD0
011C2F86 8D9424 0C000000 lea edx, dword ptr [esp+C]
011C2F8D 9C pushfd
011C2F8E 57 push edi
011C2F8F 81FF A40A1781 cmp edi, 81170AA4
011C2F95 5F pop edi
011C2F96 52 push edx
011C2F97 53 push ebx
011C2F98 C1D3 1F rcl ebx, 1F
011C2F9B 5B pop ebx
011C2F9C 85C2 test edx, eax
011C2F9E 51 push ecx
011C2F9F E8 01000000 call 011C2FA5
011C2FA4 BA 81C40400 mov edx, 4C481
011C2FA9 0000 add byte ptr [eax], al
011C2FAB 59 pop ecx
011C2FAC 5A pop edx
011C2FAD 9D popfd
011C2FAE 81C2 01000000 add edx, 1
011C2FB4 888C04 4C000000 mov byte ptr [esp+eax+4C], cl
011C2FBB 8A0C15 00000000 mov cl, byte ptr [edx]
011C2FC2 81C0 01000000 add eax, 1
011C2FC8 84C9 test cl, cl
011C2FCA ^ 0F85 DEFFFFFF jnz 011C2FAE
011C2FD0 8D8C24 4C000000 lea ecx, dword ptr [esp+4C]
011C2FD7 51 push ecx
011C2FD8 C68404 50000000>mov byte ptr [esp+eax+50], 0
011C2FE0 FFD6 call esi
011C2FE2 5F pop edi
011C2FE3 5B pop ebx
011C2FE4 5E pop esi
011C2FE5 81C4 44010000 add esp, 144
011C2FEB 50 push eax
011C2FEC 57 push edi
011C2FED 53 push ebx
011C2FEE 9C pushfd
011C2FEF E8 03000000 call 011C2FF7 11C303A RDTSC
011C303A 5F pop edi
011C303B 81C7 40000000 add edi, 40
011C3041 C7C1 0F000000 mov ecx, 0F
011C3047 C6C3 A2 mov bl, 0A2
011C304A 8A07 mov al, byte ptr [edi]
011C304C FEC8 dec al
011C304E F6D0 not al
011C3050 FEC0 inc al
011C3052 80E8 42 sub al, 42
011C3055 80F0 EC xor al, 0EC
011C3058 F6D0 not al
011C305A FEC0 inc al
011C305C 80C0 D5 add al, 0D5
011C305F 80F0 F8 xor al, 0F8
011C3062 80C0 A1 add al, 0A1
011C3065 8807 mov byte ptr [edi], al
011C3067 4F dec edi
011C3068 ^ E2 E0 loopd short 011C304A
011C306A 8240 5C 55 add byte ptr [eax+5C], 55
011C306E 2D EC3E6EDD sub eax, DD6E3EEC
011C3073 11FD adc ebp, edi
011C3075 FD std
011C3076 FD std
011C3077 30DD xor ch, bl
011C3079 50 push eax
011C307A 57 push edi
011C307B 53 push ebx
011C307C 9C pushfd
011C307D E8 02000000 call 011C3084
011C3082 2B9A 5F81C7F6 sub ebx, dword ptr [edx+F6C7815F]
011C3088 FFFF ??? ; 未知命令
011C308A FFC7 inc edi
011C308C C10F 00 ror dword ptr [edi], 0
011C308F 0000 add byte ptr [eax], al
011C3091 C6C3 A2 mov bl, 0A2
011C3094 8A07 mov al, byte ptr [edi]
011C3096 80E8 A1 sub al, 0A1
011C3099 80F0 F8 xor al, 0F8
011C309C 80E8 D5 sub al, 0D5
011C309F FEC8 dec al
011C30A1 F6D0 not al
011C30A3 80F0 EC xor al, 0EC
011C30A6 80C0 42 add al, 42
011C30A9 FEC8 dec al
011C30AB F6D0 not al
011C30AD FEC0 inc al
011C30AF 8807 mov byte ptr [edi], al
011C30B1 4F dec edi
011C30B2 ^ E2 E0 loopd short 011C3094
011C30B4 9D popfd
011C30B5 5B pop ebx
011C30B6 5F pop edi
011C30B7 58 pop eax
011C30B8 50 push eax
011C30B9 57 push edi
011C30BA 53 push ebx
011C30BB 9C pushfd
011C30BC E8 03000000 call 011C30C4 011C303A 5F pop edi
011C303B 81C7 40000000 add edi, 40
011C3041 C7C1 0F000000 mov ecx, 0F
011C3047 C6C3 A2 mov bl, 0A2
011C304A 8A07 mov al, byte ptr [edi]
011C304C FEC8 dec al
011C304E F6D0 not al
011C3050 FEC0 inc al
011C3052 80E8 42 sub al, 42
011C3055 80F0 EC xor al, 0EC
011C3058 F6D0 not al
011C305A FEC0 inc al
011C305C 80C0 D5 add al, 0D5
011C305F 80F0 F8 xor al, 0F8
011C3062 80C0 A1 add al, 0A1
011C3065 8807 mov byte ptr [edi], al
011C3067 4F dec edi
011C3068 ^ E2 E0 loopd short 011C304A
011C306A 9D popfd
011C306B 5B pop ebx
011C306C 5F pop edi
011C306D 58 pop eax
011C306E 50 push eax
011C306F 0F31 rdtsc
011C3071 81E0 0C000000 and eax, 0C
011C3077 2BE0 sub esp, eax
011C3079 50 push eax
011C307A 57 push edi
011C307B 53 push ebx
011C307C 9C pushfd
011C307D E8 02000000 call 011C3084 11C30C4 VirtialProtect(PAGE_GUARD搞OD?)
011C30C4 5F pop edi
011C30C5 81C7 D8000000 add edi, 0D8
011C30CB C7C1 A6000000 mov ecx, 0A6
011C30D1 C6C3 82 mov bl, 82
011C30D4 8A07 mov al, byte ptr [edi]
011C30D6 C0C8 55 ror al, 55
011C30D9 80E8 E0 sub al, 0E0
011C30DC C0C0 33 rol al, 33
011C30DF FEC8 dec al
011C30E1 FEC0 inc al
011C30E3 80E8 51 sub al, 51
011C30E6 FEC8 dec al
011C30E8 F6D8 neg al
011C30EA C0C0 86 rol al, 86
011C30ED FEC8 dec al
011C30EF 8807 mov byte ptr [edi], al
011C30F1 4F dec edi
011C30F2 ^ E2 E0 loopd short 011C30D4
011C30F4 9D popfd
011C30F5 5B pop ebx
011C30F6 5F pop edi
011C30F7 58 pop eax
011C30F8 81EC 10000000 sub esp, 10
011C30FE 8B0D 44D21B01 mov ecx, dword ptr [11BD244] ; TTProtec.00400000
011C3104 57 push edi
011C3105 8B3D 90D11B01 mov edi, dword ptr [11BD190] ; kernel32.VirtualProtect
011C310B 8D8424 08000000 lea eax, dword ptr [esp+8]
011C3112 50 push eax
011C3113 68 40000000 push 40
011C3118 68 38010000 push 138
011C311D 51 push ecx
011C311E FFD7 call edi
011C3120 33C0 xor eax, eax
011C3122 898424 0C000000 mov dword ptr [esp+C], eax
011C3129 898424 10000000 mov dword ptr [esp+10], eax
011C3130 898424 04000000 mov dword ptr [esp+4], eax
011C3137 64:8B05 0400000>mov eax, dword ptr fs:[4]
011C313E 898424 0C000000 mov dword ptr [esp+C], eax
011C3145 64:8B05 0800000>mov eax, dword ptr fs:[8]
011C314C 898424 10000000 mov dword ptr [esp+10], eax
011C3153 64:8B05 3000000>mov eax, dword ptr fs:[30]
011C315A 898424 04000000 mov dword ptr [esp+4], eax
011C3161 F78424 04000000>test dword ptr [esp+4], 80000000
011C316C 0F85 21000000 jnz 011C3193
011C3172 8B8424 10000000 mov eax, dword ptr [esp+10]
011C3179 8B8C24 0C000000 mov ecx, dword ptr [esp+C]
011C3180 8D9424 08000000 lea edx, dword ptr [esp+8]
011C3187 52 push edx
011C3188 68 40000000 push 40
011C318D 2BC8 sub ecx, eax
011C318F 51 push ecx
011C3190 50 push eax
011C3191 FFD7 call edi
011C3193 5F pop edi
011C3194 81C4 10000000 add esp, 10
011C319A 50 push eax
011C319B 57 push edi
011C319C 53 push ebx
011C319D 9C pushfd
011C319E E8 03000000 call 011C31A6
011C31A3 6E outs dx, byte ptr es:[edi]
011C31A4 74 12 je short 011C31B8
011C31A6 5F pop edi
011C31A7 81C7 F6FFFFFF add edi, -0A
011C31AD C7C1 A6000000 mov ecx, 0A6
011C31B3 C6C3 82 mov bl, 82
011C31B6 8A07 mov al, byte ptr [edi]
011C31B8 FEC0 inc al
011C31BA C0C8 86 ror al, 86
011C31BD F6D8 neg al
011C31BF FEC0 inc al
011C31C1 80C0 51 add al, 51
011C31C4 FEC8 dec al
011C31C6 FEC0 inc al
011C31C8 C0C8 33 ror al, 33
011C31CB 80C0 E0 add al, 0E0
011C31CE C0C0 55 rol al, 55
011C31D1 8807 mov byte ptr [edi], al
011C31D3 4F dec edi
011C31D4 ^ E2 E0 loopd short 011C31B6
011C31D6 9D popfd
011C31D7 5B pop ebx
011C31D8 5F pop edi
011C31D9 58 pop eax
011C31DA 50 push eax
011C31DB 57 push edi
011C31DC 53 push ebx
011C31DD 9C pushfd
011C31DE E8 01000000 call 011C31E4 11C31E4 SetThreadAffinityMask
011C31E4 5F pop edi
011C31E5 81C7 57000000 add edi, 57
011C31EB C7C1 24000000 mov ecx, 24
011C31F1 C6C3 5B mov bl, 5B
011C31F4 8A07 mov al, byte ptr [edi]
011C31F6 80E8 EA sub al, 0EA
011C31F9 C0C8 2E ror al, 2E
011C31FC 80F0 5F xor al, 5F
011C31FF 80C0 D2 add al, 0D2
011C3202 80E8 8E sub al, 8E
011C3205 80F0 29 xor al, 29
011C3208 F6D0 not al
011C320A F6D8 neg al
011C320C 80F0 F5 xor al, 0F5
011C320F C0C0 88 rol al, 88
011C3212 8807 mov byte ptr [edi], al
011C3214 4F dec edi
011C3215 ^ E2 DD loopd short 011C31F4
011C3217 9D popfd
011C3218 5B pop ebx
011C3219 5F pop edi
011C321A 58 pop eax
011C321B 8B05 A4CF1B01 mov eax, dword ptr [11BCFA4] ; kernel32.GetCurrentThread
011C3221 55 push ebp
011C3222 8B2D 3FC51B01 mov ebp, dword ptr [11BC53F] ; kernel32.SetThreadAffinityMask
011C3228 FFD0 call eax
011C322A 85ED test ebp, ebp
011C322C 0F84 08000000 je 011C323A
011C3232 68 01000000 push 1
011C3237 50 push eax
011C3238 FFD5 call ebp
011C323A 5D pop ebp
011C323B 50 push eax
011C323C 57 push edi
011C323D 53 push ebx
011C323E 9C pushfd
011C323F E8 01000000 call 011C3245
011C3244 43 inc ebx
011C3245 5F pop edi
011C3246 81C7 F6FFFFFF add edi, -0A
011C324C C7C1 24000000 mov ecx, 24
011C3252 C6C3 5B mov bl, 5B
011C3255 8A07 mov al, byte ptr [edi]
011C3257 C0C8 88 ror al, 88
011C325A 80F0 F5 xor al, 0F5
011C325D F6D8 neg al
011C325F F6D0 not al
011C3261 80F0 29 xor al, 29
011C3264 80C0 8E add al, 8E
011C3267 80E8 D2 sub al, 0D2
011C326A 80F0 5F xor al, 5F
011C326D C0C0 2E rol al, 2E
011C3270 80C0 EA add al, 0EA
011C3273 8807 mov byte ptr [edi], al
011C3275 4F dec edi
011C3276 ^ E2 DD loopd short 011C3255
011C3278 9D popfd
011C3279 5B pop ebx
011C327A 5F pop edi
011C327B 58 pop eax
011C327C 50 push eax
011C327D 57 push edi
011C327E 53 push ebx
011C327F 9C pushfd
011C3280 E8 03000000 call 011C3288 11CB850 解码各段,11CD189用了个PUSH/JMP的API call
(过长省略)
11CD31E 大量SMC解码,LOADER结束进入应用程序部分
(过长省略)
(以上大部分程序段都是分段解码,有pushfd/popfd防断点,执行完后毁尸灭迹。)
直接断新分配的内存,可以跳过疯狂的猥琐乱跳流。 然后是疯狂的INT3,利用DR解码数据,多线程。
由于过于猥琐,分析到此结束。
(据说白字可以隐藏内容)
猥琐乱跳流里没暗桩。
LPK.DLL的处理方法会被HOOK。
感谢CCTV,奥林匹克,CHANNEL-V,UNPACKCN, PEDIY
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!