Bardzo ładny artykuł. Właśnie biorę się za pisanie bota ;] Jak tego nie przeniosą to nie wiem co im zrobie :D !! 10/10 ziąąąąą
@Edit
Mam pytanie.. Czym i jak skanujecie tą pamięć Tibii ? tibiatech.tk nie działa ..
Ostatnio zmieniony przez #Dreeda : 30-05-2007, 23:45
Sprzedam CS:GO w formie giftu na steam za 4 kluczyki.
unit BotMForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
HookID: HHOOK;
type
PKbdDllHookStruct = ^TKbdDllHookStruct;
TKbdDllHookStruct = record
vkCode,
ScanCode,
Flags,
Time,
dwExtraInfo: Integer;
end;
const
WH_KEYBOARD_LL = 13;
BATTLELIST_START = $005F7994;
BATTLELIST_END = $005FD460;
PLAYER_X = $00602B08;
PLAYER_Y = $00602B04;
PLAYER_Z = $00602B00;
PLAYER_LEVEL = $00602D30;
PLAYER_EXP = $006059C4;
STATUS_TEXT = $0074F1D0;
STATUS_TIMER = $0074F1CC;
SPEED_USE = $0074DBD0;
PLAYER_SOUL = $006059A8;
PLAYER_MANA = $006059B0;
implementation
{$R *.dfm}
function MemoryReadInt(Address: Cardinal): Longword;
var
ProcId: Cardinal;
tProc: THandle;
NBR: Cardinal;
value: Longword;
begin
GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), @ProcId);
tProc:= OpenProcess(PROCESS_ALL_ACCESS, False, ProcId);
ReadProcessMemory(tProc, Ptr(Address), @value, 4, NBR);
CloseHandle(tProc);
Result := Value;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Tibia: Cardinal;
begin
Tibia := FindWindow('TibiaClient',nil);
SetWindowText(Tibia,PChar('Yaboobot'));
end;
function CalculateLeftExp: string;
var
Tibia: Cardinal;
AExp, ALevel, ASoul, AMana: Cardinal;begin
{Obliczamy zawartość zmiennych}
Tibia := FindWindow('TibiaClient',nil);
AExp := MemoryReadInt(PLAYER_EXP);
ALevel := MemoryReadInt(PLAYER_LEVEL);
ASoul := MemoryReadInt (PLAYER_SOUL);
AMana := MemoryReadInt (PLAYER_MANA);
Result := Format('Level: %d. Ilość exp.: %d. Ilość souli.: %d. Ilość many.: %d.',[ALevel,AExp,ASoul,AMana]);
end;
function LLKeyHookFunc(HookCode: Integer; KeyCode: wParam; KStrokeInfo: lParam): LResult; stdcall;
var
Struct: PKbdDllHookStruct;
Tibia: Cardinal;
begin
Struct := Ptr(KStrokeInfo);
if (HookCode >= 0) then
begin
{Pojedyncza funkcja}
if (Struct.vkCode = VK_F7) and(GetAsyncKeyState(VK_CONTROL)<-32766) then begin
Tibia := FindWindow('TibiaClient',nil);
SetWindowText(Tibia,PChar(CalculateLeftExp));
end;
end;
{Uwaga! POPRAWIONE}
Result := CallNextHookEx(HookID, HookCode, KeyCode, KStrokeInfo);
end;
procedure LockSystem;
begin
HookID := SetWindowsHookEx (WH_KEYBOARD_LL, @LLKeyHookFunc, hInstance, 0);
end;
procedure UnLockSystem;
begin
UnHookWindowsHookEx (HookID);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Tibia: Cardinal;
begin
Tibia := FindWindow('TibiaClient',nil);
SetWindowText(Tibia,PChar(CalculateLeftExp));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
LockSystem;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnlockSystem;
end;
procedure SendPacket(ProcessID: Cardinal; Packet: Pointer; Encrypt: Boolean; SafeArray: Boolean); stdcall; external 'packet.dll';
//Wysylanie pakietow na sciagniecie dragon shielda, zalozenie runy, wypowiedzenie adori gran, sciagniecie runy, zalozenie d-shielda//
GetWindowThreadProcessId(FindWindow('TibiaClient', nil), @ProcessID);
//Wyslanie pakietu ktory sciagnie tarcze
packetBuffer[0]:= $0F;
packetBuffer[1]:= $00;
packetBuffer[2] := $78;
packetBuffer[3] := $FF;
packetBuffer[4] := $FF;
packetBuffer[5] := $05;
packetBuffer[6] := $00;
packetBuffer[7] := $00;
packetBuffer[8] := $58;
packetBuffer[9] := $0D;
packetBuffer[10] := $00;
packetBuffer[11] := $FF;
packetBuffer[12] := $FF;
packetBuffer[13] := $0A;
packetBuffer[14] := $00;
packetBuffer[15] := $00;
packetBuffer[16] := $01;
SendPacket(ProcessID, @PacketBuffer, TRUE, FALSE);
//Wyslanie pakietu ktory zalozy rune
sleep(100);
packetBuffer[0]:= $0F;
packetBuffer[1]:= $00;
packetBuffer[2] := $78;
packetBuffer[3] := $FF;
packetBuffer[4] := $FF;
packetBuffer[5] := $41;
packetBuffer[6] := $00;
packetBuffer[7] := $13;
packetBuffer[8] := $4B;
packetBuffer[9] := $0C;
packetBuffer[10] := $13;
packetBuffer[11] := $FF;
packetBuffer[12] := $FF;
packetBuffer[13] := $05;
packetBuffer[14] := $00;
packetBuffer[15] := $00;
packetBuffer[16] := $01;
SendPacket(ProcessID, @PacketBuffer, TRUE, FALSE);
//wyslanie pakietu ktory powie adori gran
sleep(100);
packetBuffer[0]:= $0E;
packetBuffer[1]:= $00;
packetBuffer[2] := $96;
packetBuffer[3] := $01;
packetBuffer[4] := $0A;
packetBuffer[5] := $00;
packetBuffer[6] := $61;
packetBuffer[7] := $64;
packetBuffer[8] := $6F;
packetBuffer[9] := $72;
packetBuffer[10] := $69;
packetBuffer[11] := $20;
packetBuffer[12] := $67;
packetBuffer[13] := $72;
packetBuffer[14] := $61;
packetBuffer[15] := $6E;
SendPacket(ProcessID, @PacketBuffer, TRUE, FALSE);
//wyslanie pakietu ktory sciagnie rune
sleep(100);
packetBuffer[0]:= $0F;
packetBuffer[1]:= $00;
packetBuffer[2] := $78;
packetBuffer[3] := $FF;
packetBuffer[4] := $FF;
packetBuffer[5] := $05;
packetBuffer[6] := $00;
packetBuffer[7] := $00;
packetBuffer[8] := $7E;
packetBuffer[9] := $0C;
packetBuffer[10] := $00;
packetBuffer[11] := $FF;
packetBuffer[12] := $FF;
packetBuffer[13] := $41;
packetBuffer[14] := $00;
packetBuffer[15] := $0F;
packetBuffer[16] := $01;
SendPacket(ProcessID, @PacketBuffer, TRUE, FALSE);
//wyslanie pakietu ktory zalozy tarcze
sleep(100);
packetBuffer[0]:= $0F;
packetBuffer[1]:= $00;
packetBuffer[2] := $78;
packetBuffer[3] := $FF;
packetBuffer[4] := $FF;
packetBuffer[5] := $0A;
packetBuffer[6] := $00;
packetBuffer[7] := $00;
packetBuffer[8] := $58;
packetBuffer[9] := $0D;
packetBuffer[10] := $00;
packetBuffer[11] := $FF;
packetBuffer[12] := $FF;
packetBuffer[13] := $05;
packetBuffer[14] := $00;
packetBuffer[15] := $00;
packetBuffer[16] := $01;
SendPacket(ProcessID, @PacketBuffer, TRUE, FALSE);
Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)
Zakładki