-
-
[求助]请问一下关于VirtualProtectEx小问题。
-
发表于:
2005-9-17 17:27
7076
-
[求助]请问一下关于VirtualProtectEx小问题。
本人在DIY程序的时候,准备用SMC的方法注入自己的代码。但原来的内存地址是不可写的。找了很多资料,找到了VirtualProtectEx这个函数能改变内存的区段属性。本人不会编程,而网上大都是用编程,在这里也看到有好几篇逆向分析程序的,偶尔提到这个函数,我读了一个通宵还是没能弄懂。于是斗胆请教一下各位老大。希望能帮的就帮我一下。如这段是取自本论坛的一个帖子,
0040111E PUSH AsprDbgr.004046E4 ; /pOldProtect = AsprDbgr.004046E4 这里好像只有这一个地址,是否就是进程句柄存放的地址。
00401123 PUSH DWORD PTR DS:[4046E4] ; |NewProtect = 0
00401129 PUSH 1 ; |Size = 1
0040112B PUSH DWORD PTR DS:[404664] ; |Address = NULL
00401131 PUSH DWORD PTR DS:[404217] ; |hProcess = NULL
00401137 CALL <JMP.&kernel32.VirtualProtectEx> ; \VirtualProtectEx
以下是在网上找着关于这个函数的说明。
BOOL VirtualProtectEx(
HANDLE hProcess, // 要修改内存的进程句柄
LPVOID lpAddress, // 要修改内存的起始地址
DWORD dwSize, // 修改内存的字节
DWORD flNewProtect, // 修改后的内存属性
PDWORD lpflOldProtect // 修改前的内存属性的地址
);
HANDLE hProcess, // 要修改内存的进程句柄 **这里不太明白,或许大家觉得很简单。请大家给点思路,或者是不是spy++等工具查找,或者给个修改区段属性的小程序给我逆向分析一下,跟一下也许就能学会。我今天用了个猛壳是有这个函数的调用,可惜不能断下来,一断程序就出错。
我要注入的地址是一个DLL文件,已知DLL的内存地址,确定自己要修改地址的大小,我还要了解哪些才能调用这个VirtualProtectEx函数。如果手上有使用这个函数的小程序,可能分享一份,让我自己慢慢分析,
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课