id="5">word ptr ds:[ecx-1b] 00426d37 0000 add byte ptr ds:[eax],al 00426d39 0000 add byte ptr ds:[eax],al 00426d3b 0000 add byte ptr ds:[eax],al 00426d3d 0000 add byte ptr ds:[eax],al 00426d3f 0000 add byte ptr ds:[eax],al 00426d41 0000 add byte ptr ds:[eax],al 00426d43 0000 add byte ptr ds:[eax],al 00426d45 0000 add byte ptr ds:[eax],al 00426d47 61 popad ; 下面又是程序代码了,... 00426d48 68 84164c00 push 004c1684 ; ascii "skin" 00426d4d 68 7c164c00 push 004c167c ; ascii "skin1" 00426d52 6a 00 push 0 00426d54 e8 fe130600 call 00488157 00426d59 60 pushad 00426d5a 6a 04 push 4 00426d5c 6a 00 push 0 00426d5e 6a 00 push 0 00426d60 6a ff push -1 00426d62 ff15 c8784b00 call dword ptr ds:[4b78c8] ; <maincon.sub_sdk_disposal> 00426d68 eb 1e jmp short 00426d88 ; 这里跳去就结束这个sdk 的处理、执行了 00426d6a 52 push edx 00426d6b ee out dx,al ; i/o command 00426d6c b3 68 mov bl,68 00426d6e b9 20ac0b71 mov ecx,710bac20 00426d73 cf iretd 00426d74 d019 rcr byte ptr ds:[ecx],1 00426d76 8add mov bl,ch 00426d78 0000 add byte ptr ds:[eax],al 00426d7a 0000 add byte ptr ds:[eax],al 00426d7c 0000 add byte ptr ds:[eax],al 00426d7e 0000 add byte ptr ds:[eax],al 00426d80 0000 add byte ptr ds:[eax],al 00426d82 0000 add byte ptr ds:[eax],al 00426d84 0000 add byte ptr ds:[eax],al 00426d86 0000 add byte ptr ds:[eax],al 00426d88 61 popad 00426d89 6a 00 push 0 ; 又正常执行程序代码了 00426d8b 8d8d 9497ffff lea ecx,dword ptr ss:[ebp+ffff9794] 00426d91 e8 9aa50000 call 00431330 ...... ok,关于embedd protect的分析就结束了,再分析几个地方就可以得到一定的规律。找回正常的代码也就是件很简单的事了,只需要一定的时间就可以了。 这里的正确代码就应该为: 00420889 8b4d f0 mov ecx,dword ptr ss:[ebp-10] 0042088c 68 01010100 push 10101 00420891 68 ebebeb00 push 0ebebeb 00420896 e8 c9230900 call <jmp.&mfc42.#5943> 0042089b e8 be230900 call <jmp.&mfc42.#1168> 004208a0 8b40 08 mov eax,dword ptr ds:[eax+8] 004208a3