各位大大., 我都是初學而已 看過了很多文章 而且都跟足偏移值,還是解不出想要的值, 是我有跟錯偏移值嗎?
W2I_BASE_ADDR:=$A5BFB0; //全局基址
W2I_DYNAMIC_BASE_ADDR:=read_addr(W2I_BASE_ADDR+$1c); //動態基址
W2I_ENVIRON_BASE_ADDR:=read_addr(W2I_DYNAMIC_BASE_ADDR+$08); //周圍環境基址
W2I_PLAYER_BASE_ADDR := read_addr(W2I_ENVIRON_BASE_ADDR+$20); //周圍玩家基址
jnnum := read_addr(W2I_PLAYER_BASE_ADDR + $14); //24=周圍玩家總數量 14=現數量
jnfirst := read_addr(W2I_PLAYER_BASE_ADDR + $18); //周圍玩家列表基址
label8.caption := IntToStr(jnnum); //這個我用作測試上面的偏移值沒有錯
If jnnum > 0 Then
For i:= 0 to jnnum - 1 do
begin
ReadProcessMemory(hCurrentHandle, Pointer(jnfirst + I * 4), @jnbase , 4, ByteRead);//相應周圍玩家地址
ReadProcessMemory(hCurrentHandle, Pointer(jnbase+$04), @ujnname1, 4, tt); //相應位置玩家指針
//ReadProcessMemory(hCurrentHandle, Pointer(ujnname1+$448), @jnID, 4, tt); //玩家SN
ReadProcessMemory(hCurrentHandle, Pointer(ujnname1+$450), @jnLV, 4, tt); //玩家等級
//ReadProcessMemory(hCurrentHandle, Pointer(ujnname1+$5D8),@AjnnameII,36,tt); //'玩家名稱
combobox3.Items.Add(IntToStr(jnLV));
不管怎樣, 我還是列不出 jnLV,jnID 之類的
是我ujnname1 那邊指針有錯了嗎?
還是jnbase 那邊程序有錯?
列出來的, 不是0就是一部份相同的數值
如果列得出來,, 應該是每個都不同的說
請各位大大指點一下啊.. 謝謝
感恩萬分,我邊找資料 邊試差不多2天都沒結果
PS.因為源碼我都靠改某同志的技能列表, 所以比那些代號較亂 但功能是一樣吧 |