本帖最後由 boy330077 於 2013-12-9 14:04 編輯
- procedure TForm1.Button1Click(Sender: TObject);
- var
- 程序ID :DWORD;
- 遊戲 :DWORD;
- 動態基址,人物基址,血量 : dword;
- UnName:dword ; //unicode名
- ASname: array [0..35] of WideChar; //9個國字=18Byte=36bytes所以0..35一共36這個字符
- TT: Size_T;
- begin
- 視窗程序 := Findwindow(nil,'完美世界');
- GetWindowThreadProcessId(視窗程序,程序ID);
- 遊戲 := OpenProcess (PROCESS_ALL_ACCESS,false,程序ID);
- if 遊戲>0 then
- begin
- ReadProcessMemory( 遊戲, Pointer($18EF90),@動態基址,4,TT );
- ReadProcessMemory( 遊戲, Pointer(動態基址+$34),@人物基址,4,TT );
- ReadProcessMemory( 遊戲,pointer(人物基址+Strtoint("$"+Edit1.Text)), @UnName, 4, tt);
- ReadProcessMemory( 遊戲,pointer(UnName), @ASName, SizeOf(ASName), tt);
- WideCharToString(ASName); //把變數中的unicod碼資料轉換為ASCII碼
- label1.Caption:='人物名稱:'+ASName;
- end;
- end;
複製代碼 問題1 :
ReadProcessMemory( 遊戲, Pointer($18EF90),@動態基址,4,TT );
這行網路上大家都說要+1C 但是 如果 我用 18EF74+1C 反而找不到 血量
問題2:
人物名稱我找了好久一直都是亂碼,不知道是位址錯了,還是轉換編碼方式有錯,請高人指點 |