本帖最后由 longlonglong 于 2023-10-22 13:58 编辑
程序加VMProtect v3.00 - 3.5.0 [ option : packed ] - 2003-2021
[Asm] 纯文本查看 复制代码 1935E350 | 55 | push ebp |
1935E351 | 8BEC | mov ebp,esp |
1935E353 | 51 | push ecx |
1935E354 | C645 FF 00 | mov byte ptr ss:[ebp-1],0 |
1935E358 | 0FB645 FF | movzx eax,byte ptr ss:[ebp-1] |
1935E35C | 85C0 | test eax,eax |
1935E35E | 75 54 | jne nice801tdx.1935E3B4 |
1935E360 | 0FB64D 14 | movzx ecx,byte ptr ss:[ebp+14] |
1935E364 | 85C9 | test ecx,ecx |
1935E366 | 74 1A | je nice801tdx.1935E382 |
1935E368 | 6A 01 | push 1 |
1935E36A | 8B55 10 | mov edx,dword ptr ss:[ebp+10] |
1935E36D | 52 | push edx |
1935E36E | 8B45 0C | mov eax,dword ptr ss:[ebp+C] |
1935E371 | 50 | push eax |
1935E372 | E8 B5950D00 | call nice801tdx.1943792C |
1935E377 | C3 | ret |
1935E378 | 83C4 0C | add esp,C |
1935E37B | 8B4D 08 | mov ecx,dword ptr ss:[ebp+8] |
1935E37E | 8901 | mov dword ptr ds:[ecx],eax |
1935E380 | EB 18 | jmp nice801tdx.1935E39A |
1935E382 | 8B55 10 | mov edx,dword ptr ss:[ebp+10] |
1935E385 | 52 | push edx |
1935E386 | 8B45 0C | mov eax,dword ptr ss:[ebp+C] |
1935E389 | 50 | push eax |
1935E38A | 6A 00 | push 0 |
1935E38C | E8 DF5D2A00 | call nice801tdx.19604170 |
1935E391 | C3 | ret
地址1935E350指令改为1935E350 | C3 | retn
内存中注入代码:
//[edi]="nice801tdx.dll"
mov edi,esi
add edi,0x3CC
push edi
call <kernel32.GetModuleHandleA>
cmp eax,0x0
je @L00000003
mov edi,esi
add edi,0x3BC
push edi
push 0x40
push 0x4
add eax,0xE350
mov edi,eax
push eax
call <kernel32.VirtualProtect>//地址1935E350属性改为PAGE_EXECUTE_READWRITE
mov byte ptr ds:[edi],0xC3
call <kernel32.VirtualProtect>指令通过call GetLastError返回值00000005。
操作失败。通过大白却可以操作成功。
问题一:
请指出上面方法为什么失败
问题二:
是否有更好的方法
|