-
-
[原创]第四题分析
-
发表于:
2016-11-9 18:26
5985
-
这题有一个vm
查找字符串很容易就能定位到关键点,0x401000带有vm保护,
004010A3 . 8B07 mov eax, dword ptr [edi] ; 取出注册码前七位
004010A5 . 8945 90 mov dword ptr [ebp-0x70], eax
004010A8 . 0FB747 04 movzx eax, word ptr [edi+0x4]
004010AC . 66:8945 94 mov word ptr [ebp-0x6C], ax
004010B0 . 0FB647 06 movzx eax, byte ptr [edi+0x6]
004010B4 . 8845 96 mov byte ptr [ebp-0x6A], al
004010B7 .- E9 7CDF0200 jmp 0042F038 ; 进入虚拟机
0042F038 50 push eax ;保存环境
0042F039 57 push edi
0042F03A 9C pushfd
0042F03B 55 push ebp
0042F03C 56 push esi
0042F03D 68 40E20100 push 0x1E240
0042F042 51 push ecx
0042F043 52 push edx
0042F044 53 push ebx
0042F045 BB 78563412 mov ebx, 0x12345678 ; ebx是解码opcode的key
0042F04A 8BEC mov ebp, esp
0042F04C 81EC C8000000 sub esp, 0xC8
0042F052 8BFC mov edi, esp
0042F054 BE 0E544300 mov esi, 0043540E ; esi是opcode的列表的,自后往前执行
0042F059 E9 7B0C0000 jmp 0042FCD9
0042FCD9 F7D3 not ebx
0042FCDB 4B dec ebx
0042FCDC 66:F7D3 not bx
0042FCDF 66:81EB D165 sub bx, 0x65D1 ; ebx=解码虚拟机指令索引的key
0042FCE4 0FB646 FF movzx eax, byte ptr [esi-0x1] ; esi=虚拟机指令列表
0042FCE8 4E dec esi ; 往前执行的
0042FCE9 2AC3 sub al, bl
0042FCEB F6D0 not al
0042FCED 04 57 add al, 0x57
0042FCEF FEC8 dec al
0042FCF1 2C 3E sub al, 0x3E ; 根据key解码出指令索引,
0042FCF3 FF3485 DDF84200 push dword ptr [eax*4+0x42F8DD] ; 跳转到指令分支
0042FCFA C3 retn
[培训]科锐逆向工程师培训第53期2025年7月8日开班!