全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1410
推到 Plurk!
推到 Facebook!

Delphi 無法寫入記憶體

答題得分者是:rick060
n4chen
一般會員


發表:9
回覆:7
積分:3
註冊:2011-05-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-11-14 21:59:15 IP:59.104.xxx.xxx 訂閱
我想寫入自己程式的記憶體,但都無法寫入,好像受保護的樣子


type
PJmpCode = ^TJmpCode;
TJmpCode = packed record
JmpCode:BYTE;
Address:Pointer;
MovEAX: Array [0..2] of BYTE;
end;


function MsgBox(Window:HWND;Text,Caption:PChar;uType:UINT):Integer;WINAPI;stdcall;assembler;
begin
Result:=0;
end;
procedure TForm2.Button1Click(Sender: TObject);
var
NULL:Cardinal;
Addr:PJmpCode;
begin
Addr.JmpCode:=$B8;
Addr.MovEAX[0]:=$FF;
Addr.MovEAX[1]:=$E0;
Addr.MovEAX[2]:=0;
Addr.Address:=@MsgBox;
VirtualProtectEx(GetCurrentProcess,@MessageBoxW,SizeOf(Pointer),PAGE_EXECUTE_READWRITE,NULL);
WriteProcessMemory(GetCUrrentProcess,@MessageBoxW,@Addr,SizeOf(Pointer),NULL);
end;


請問大大,要如何強制寫入記憶體

編輯記錄
n4chen 重新編輯於 2011-11-14 06:59:32, 註解 無‧
n4chen 重新編輯於 2011-11-14 07:01:06, 註解 無‧
rick060
高階會員


發表:2
回覆:112
積分:217
註冊:2009-11-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-11-15 11:22:59 IP:60.250.xxx.xxx 未訂閱
強制??

直接操作 Pointer 但沒有先配置記憶體?

GetMem(Addr,sizeof(TJmpCode));
n4chen
一般會員


發表:9
回覆:7
積分:3
註冊:2011-05-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-11-15 23:58:23 IP:221.169.xxx.xxx 訂閱
 喔 ~ 又要感謝你了 可以寫入了
不過你應該之到這是Hook API 的程式碼
littlestone08
一般會員


發表:0
回覆:2
積分:5
註冊:2009-05-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-12-01 09:45:18 IP:121.28.xxx.xxx 訂閱
写入代码的时候需要特权,看代码你好像没有提升你的执行权限,下面给出提升权限的代码,你可以在WriteProcessMemory前调用它
试试吧

[code cpp]
int EnableDebugPriv(const char * name)
{
HANDLE hToken;
TOKEN_PRIVILEGES tp;
LUID luid;
//打开进程令牌环
OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,
&hToken);
//获得进程本地唯一ID
LookupPrivilegeValue(NULL,name,&luid) ;

tp.PrivilegeCount = 1;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
tp.Privileges[0].Luid = luid;
//调整权限
AdjustTokenPrivileges(hToken,0,&tp,sizeof(TOKEN_PRIVILEGES),NULL,NULL);
return 0;
}
[/code]


又看了看,不是这个的原因,应该是就是因为没有GetMem而产生的错误


編輯記錄
littlestone08 重新編輯於 2011-11-30 20:03:57, 註解 無‧
系統時間:2024-05-02 6:08:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!