能力值:
(RANK:210 )
2 楼
前提你得有权限修改
BOOL WriteProcessMemory(
HANDLE hProcess, // handle to process whose memory is written to
LPVOID lpBaseAddress,
// address to start writing to
LPVOID lpBuffer, // pointer to buffer to write data to
DWORD nSize, // number of bytes to write
LPDWORD lpNumberOfBytesWritten
// actual number of bytes written
);
能力值:
( LV12,RANK:530 )
3 楼
修改器的例子,其中第二篇是修改代码的.
BLOG地址:
http://blog.csdn.net/prince_vegeta/archive/2005/03/02/308025.aspx
http://blog.csdn.net/prince_vegeta/archive/2005/03/02/308047.aspx
或:
http://vegeta.blog.enorth.com.cn/article/865.shtml
http://vegeta.blog.enorth.com.cn/article/875.shtml
能力值:
( LV8,RANK:130 )
4 楼
先ZwOpenProcess,然后得到ProcessHandle再ZwWriteVirtualMemory/ZwReadVirtualMemory
搞定后记得ZwClose
能力值:
( LV6,RANK:90 )
5 楼
内存默认只读,修改内存之前需要先用VirtualProtect 把要修改的内存块改成可写
能力值:
( LV2,RANK:10 )
6 楼
但是我无法获得正在运行的程序的可写权限。我要改的是可执行的内存段
能力值:
(RANK:210 )
7 楼
你都没试,怎么能获得正在运行程序的可写权限啊
.
一般的应用程序是可以获得的.
这是个简单的例子
先打开计算器
.386
.model flat ,stdcall
option casemap:none
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
.data?
hProcess dd ?
dwProcessID dd ?
.const
szName db '计算器',0
szBuffer db 50h
.code
start:
invoke FindWindow,NULL,addr szName
invoke GetWindowThreadProcessId,eax,offset dwProcessID
invoke OpenProcess,PROCESS_ALL_ACCESS,FALSE,dwProcessID
mov hProcess,eax
mov ecx,010021ACh
invoke WriteProcessMemory,hProcess,ecx,addr szBuffer,1h,NULL
end start
能力值:
( LV9,RANK:850 )
8 楼
bithaha的就可以了吧!
能力值:
( LV8,RANK:130 )
9 楼
ZwProtectVirtualMemory?
能力值:
( LV2,RANK:10 )
10 楼
我不是没试,你的那几句我早试过了根本不行
能力值:
( LV2,RANK:10 )
11 楼
我试了根本不行。
能力值:
( LV2,RANK:10 )
12 楼
你看一下几篇HOOK API的文章就可以了
这里面有很多,如:
汇编ring3下实现HOOK API【原创】
它里面用的是修改内存的方法来HOOK API的,你可以参考下
;============================下面是核心部分=========================
WriteApi proc Process:DWORD ,Papi:DWORD,Ptype:DWORD,Psize:DWORD
LOCAL mbi:MEMORY_BASIC_INFORMATION
LOCAL msize:DWORD
;返回页面虚拟信息
invoke VirtualQueryEx,Process, Papi,addr mbi,SIZEOF MEMORY_BASIC_INFORMATION
;修改为可读写模式
invoke VirtualProtectEx,Process, mbi.BaseAddress,8h,PAGE_EXECUTE_READWRITE,addr
mbi.Protect
;开始写内存
invoke WriteProcessMemory,Process, Papi, Ptype,Psize ,NULL
PUSH eax
;改回只读模式
invoke VirtualProtectEx,Process,mbi.BaseAddress,8h,PAGE_EXECUTE_READ,addr mbi.Protect
pop eax
ret
WriteApi endp
=======================
你可以直接引用
WriteApi proc
Process:DWORD , //进程句柄
Papi:DWORD, //写入起点
Ptype:DWORD //写入内容
,Psize:DWORD //写入大小