能力值:
( LV2,RANK:10 )
|
-
-
2 楼
这个确实很简单。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
VirtualProtect
http://bbs.pediy.com/showthread.php?t=33014
f20K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4y4D9N6i4c8@1k6i4u0&6i4K6u0W2M7%4m8S2j5$3g2K6i4K6u0W2L8r3W2$3k6g2)9J5k6h3y4G2L8g2)9J5c8X3u0D9L8$3N6Q4x3V1k6U0L8Y4y4Q4x3U0p5K6y4e0j5&6c8V1g2m8z5o6m8o6y4K6p5%4c8V1b7@1i4K6t1I4x3K6f1H3x3g2)9J5k6h3g2F1N6s2u0&6
75fK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0S2K9h3E0W2i4K6u0W2j5X3q4A6k6s2g2Q4x3X3g2U0L8$3#2Q4x3V1k6$3K9h3g2%4i4K6u0r3x3e0M7^5y4U0b7J5y4W2)9J5k6h3S2@1L8b7`.`.
b81K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4c8G2M7r3W2U0i4K6u0W2j5%4y4V1L8W2)9J5k6h3&6W2N6q4)9J5c8Y4g2Q4x3V1j5J5x3o6l9^5x3e0l9I4x3W2)9J5c8U0p5&6i4K6u0r3y4r3p5$3x3$3u0S2y4$3k6Q4x3X3b7@1y4U0m8X3i4K6u0V1y4r3t1J5x3W2)9J5k6r3q4T1z5o6q4Q4x3X3c8X3k6e0b7$3k6U0k6V1k6h3p5J5y4U0N6Q4x3X3g2Z5N6r3#2D9
"首先应该 OpenProcess
然后在VirtualProtectEx
再 ReadProcessMemory/WriteProcessMemory
再 VirtualProtectEx"
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
我不太明白楼主为什么说要用到VirtualProtectEx这个函数
这是个修改指定内存为可读写的函数
我现在要做的是
mov edx, dword ptr [esp+1C]
push edx
这两句改成我想要压入的数据比如push 00140000,但00140000处的数据为零,我需要的数据是一个IP地址
如192.168.1.200
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
你不用virtualprotect写不了啊。你要先用此函数把该段代码所在内存页的只读属性去掉。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
if (ul_reason_for_call == DLL_PROCESS_ATTACH) {
MessageBox(NULL,L"XX",L"XXX",MB_OK);
__asm{
mov eax,ChangeMemory
add eax,3
sub eax,0x4133d9
mov ebx,0x4133d3
mov word ptr [ebx], 0xe990
mov dword ptr [ebx+2],eax
mov byte ptr[ebx+6],0x90
}
return TRUE;
}
VOID ChangeMemory()
{
__asm{
push ebx
push lpiwant
mov edi,esi
add edi,0xd4
mov esi,lpiwant
movsb
movsb
movsb
mov eax,0x00404b03
call eax
mov eax,0x004133da
pop esi
pop edi
jmp eax
}
}
额 代码很笨拙多处硬编码...意思大概就是这个了,修改mov edx, dword ptr [esp+1C]附近代码,跳入你自己的DLL代码中然后修改这[esp+1C]里面的值,再跳回去注意堆栈平衡,貌似叫inlinehook ?不知道 楼主加油吧.
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
CreateProcess后挂起, 然后 WriteProcessMemory ,再恢复
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
[QUOTE=gubukelx;867395]已知某程序A,它所用到的参数其种一个如下
mov edx, dword ptr [esp+1C] 由于这个[esp+1C]的值不符合我们的实际需要
现在我想将上面的
mov edx, dword ptr [esp+1C]
修改成push 00140000
用OD是可以直...[/QUOTE]
你贴的不全 ----我无法写
动态修改 那就是 内存PATCH,即补丁
主要用 调试API设断点,捕获异常,修改欲改处,执行,写回被修改地方原来的代码
主要函数:CreateProcess,指定DEBUG_PROCESS or DEBUG_ONLY_THIS_PROCESS
WaitForDebugEvent
GetThreadContext
SetThreadContext
ReadProcessMemory
WriteProcessMemory
|
能力值:
( LV5,RANK:70 )
|
-
-
9 楼
没钱了 ,来骗点钱花花  ,(1)我感觉你要考虑是否有能够容纳代码的空间,(2)可能由于代码段一般都是只读的所以要改变一下节属性用 楼上所说的VirtualProtectEx,然后在指定位置写入你要的代码。 不知帮到你没有,要是感觉可以就给些kx花花 。
|
|
|