unit AutoGunUnit;
interface
uses
Windows;
procedure AutoGunSet;
procedure AutoGun(AutoGunToggle: Boolean);
var
AutoSpeedGunHook, AutoSpeedGunAddr, BackUp: DWORD;
CopyValue: Array [0 .. 181] of Byte;
GunValue: Array [0 .. 9] of Byte = ($C7, $86, $E0, $00, $00, $00, $FF, $FF, $FF, $FF);
implementation
uses
Unit1, CallFunc ,ShellCopy, AddressClass;
Procedure JmpHookEx(hProcess: Cardinal; DestAddress: DWORD; FuncAdr: DWORD; NopCount: Integer);
var
i: Integer;
bBuffer: byte;
dBuffer: DWORD;
NOW: NativeUint;
old: Cardinal;
begin
bBuffer := $E9;
VirtualProtectEx(hProcess, Pointer(DestAddress), 16,
PAGE_EXECUTE_READWRITE, old);
WriteProcessMemory(hProcess, Pointer(DestAddress), @bBuffer, 1, NOW);
dBuffer := FuncAdr - DestAddress - 5;
WriteProcessMemory(hProcess, Pointer(DestAddress + 1), @dBuffer, 4, NOW);
bBuffer := $90;
if NopCount <> 0 then
begin
for i := 0 to NopCount - 1 do
begin
WriteProcessMemory(hProcess, Pointer(DestAddress + 5 + i), @bBuffer, 1, NOW);
end;
end;
VirtualProtectEx(hProcess, Pointer(DestAddress), 4, old, old);
end;
procedure AutoGunSet;
begin
AutoSpeedGunAddr := DWORD(VirtualAllocEx(hProcess, nil, 16, MEM_COMMIT, PAGE_EXECUTE_READWRITE));
AutoSpeedGunHook := RPM4Byte(RPM4Byte(RPM4Byte(RPM4Byte(cshell + English + $76C) + $14)) + $178);
ReadProcessMemory(hProcess, Pointer(AutoSpeedGunHook), @CopyValue, Sizeof(CopyValue), Pnativeuint(nil)^);
WriteProcessMemory(hProcess, Pointer(AutoSpeedGunAddr), @CopyValue, Sizeof(CopyValue), Pnativeuint(nil)^);
WriteProcessMemory(hProcess, Pointer(AutoSpeedGunAddr + $90), @GunValue, Sizeof(GunValue), Pnativeuint(nil)^);
JmpHookEx(hProcess, AutoSpeedGunAddr + $9A, AutoSpeedGunHook + $94, 0);
WPM4Byte(AutoSpeedGunAddr + $41, (AutoSpeedGunHook + $40 + RPM4Byte(AutoSpeedGunHook + $41) + $5) - (AutoSpeedGunAddr + $40) - 5);
RPM4Byte(RPM4Byte(RPM4Byte(RPM4Byte(cshell + English + $76C) + $14)) + $178);
end;
procedure AutoGun(AutoGunToggle: Boolean);
var
I: integer;
AutoGunSlotNum: DWORD;
begin
if Form1.AutoGunC.Checked then Begin
WPM4Byte(WeaponDump + $178, AutoSpeedGunAddr);
end else begin
WPM4Byte(WeaponDump + $178, RPM4Byte(cshell + PointerResult + $178));
end;
end;
end.
댓글10
삭제된 댓글입니다.
168>178
삭제된 댓글입니다.
또그러노
ㄷㄷㄷ
?
고수 ㄷㄷ
고수