能力值:
(RANK:860 )
|
-
-
2 楼
首先
0040DD33 mov ecx,dword ptr [ebp-12Ch]
0040DD39 push ecx
其中ECX为进程句柄,这个如果在汇编下需要用函数得到。。
|
能力值:
(RANK:860 )
|
-
-
3 楼
除了函数的最后两个参数,其余的参数好像都需要用别的函数得到
MS是这样的,
我也不是很明白。。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
用VC搞的吧? 内联汇编吧? call xxxx 的时候F11看跑到哪里去了不就解决问题了吗..... 看编译器的编译方式问题,
call xxxx 可能不会像你预期的那样;
原因就是, 好像VC把 call xxxx搞成了 call 指针本身的地址, 这样肯定是错的;
你这样吧
call dword ptr [xxxxx]
这样就call 了指针指向的地址
无聊, 说多点, 如 call MessageBox, 事实上, MessageBox是一个变量(VC就是这样组织的), 它本身的地址可能是0x0050789, 如同其它所有指针一样, 这个指针填入的地址可能是 0x00B01234, 而0x00B01234里就是 jmp 真正的MessagBox地址;
call MessageBox vc可能会把它搞成 call 0x0050789这里;
call dword ptr [MEssageBox], vc 应该会把它搞成 call 0x00B01234这里
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
又忘了告诉你, 这样自己手动写汇编调用WriteProcessMemory, 和vc里C++调用WriteProcessMemory,
根本没有任何的区别!!!! 所以你想都不要想这样就能过绕过拦截, 劝你还是别费心机了, 还不如花时间好好想一下人家是在哪里用什么方法拦截了你吧...
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
事实是过了
|
能力值:
( LV3,RANK:30 )
|
-
-
7 楼
_asm{
push 0
push 30h
push offset MyFunc
mov eax,pCodeRemote
push eax
mov ecx,hProcess
push ecx
call WriteProcessMemory
}
进栈顺序不都一样。等于没改。。
|
能力值:
( LV9,RANK:320 )
|
-
-
8 楼
你这基本就不行!先不说你要修改什么,或许你想要做的是 hook下WritepRrocessMemory函数!这个看你的目的了,单说这个语法!看看我写的这个示例:
HANDLE hMod=GetModuleHandle("KERNEL32.DLL");
PVOID pWriteMem=GetProcAddress(hMod,"WriteProcessMemory");
LONG ret;
__asm{
push 0
push 30h
mov eax,offset MyFunc
push eax
lea eax, pCodeRemote
push eax
lea eax,hProcess
push eax
call pWriteMem
mov ret,eax
}
|
|
|