- 注册时间
- 2011-3-10
- 最后登录
- 1970-1-1
该用户从未签到
|
发表于 2011-5-26 13:51:51
|
显示全部楼层
function ReadWithOffset(add: Integer;
Offsets: array of Integer): Integer;
var
i: DWORD;
begin
for i := Low(Offsets) to High(Offsets) do
begin
ReadProcessMemory(hProcess, Pointer(add + Offsets), @add, 4, lpNumberOfBytes);
end;
Result := add;
end;
function ReadInt(add: Integer; size: DWORD=4): Int64;
begin
ReadProcessMemory(hProcess, Pointer(add), @Result, size, lpNumberOfBytes);
end;
procedure sq(const p:sss):Stdcall;
var
Address: Pointer;
dw1,dw2:dword;
begin
Address:= Pointer($00573790); //6.19更新
dw1:=p^.d1;
dw2:=p^.d2;
asm
pushad
mov ecx, dword ptr [$8F1DC4]
mov edx, dw1
push edx
mov ecx, dword ptr [ecx+$20]
mov eax, dw2
push eax
add ecx, $D4
call address
popad
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
dd:sss;
wnd,pid:hwnd;
i:word;
base:DWord;
tmp1,tmp2,baseitem:DWORD;
begin
Wnd:=FindWindow(nil,'Element Client');
GetWindowThreadProcessId(WND, @PID);
hProcess := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
base:=ReadWithOffset($0012F824,[0,$8,$24,$18]);
for i := 0 to 768 do
begin
tmp1:=mem.ReadInt(base+i*4);
if tmp1 <> 0 then
begin
baseitem:=ReadInt(tmp1+$4);
if {放上可以捡取条件}true then
begin
new(dd);
dd.d1:=ReadInt(baseitem+$110);
dd.d2:=ReadInt(baseitem+$10c);
InjectFunc(wnd,@sq,dd,SizeOf((dd)^));
end;
end;
end;
end; |
|