Albo nie dodałeś adresów lub nie dodałeś funkcji Read
Wersja do druku
Albo nie dodałeś adresów lub nie dodałeś funkcji Read
Moze ktos sprawdzic.. i powiedziec gdzie jest blad:
unit BOT;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
const
//adresy wartosci postaci
layer_ClubPerc = $613B00;
Player_SwordPerc = $613B04;
Player_AxePerc = $613B08;
Player_DistnacePerc = $613B0C;
Player_ShieldingPerc = $613B10;
Player_FishingPerc = $613B14;
Player_Fist = $613B18;
Player_Club = $613B1C;
Player_Sword = $613B20;
Player_Axe = $613B24;
Player_Distance = $613B28;
Player_Shielding = $613B2C;
Player_Fishing = $613B30;
Player_Cap = $613B40;
Player_Stamina = $613B48;
Player_Soul = $613B48;
Player_ManaMax = $613B4C;
Player_Mana = $613B50;
Player_MagicLevelPerc = $613B54;
Player_LevelPerc = $613B58;
Player_MagicLevel = $613B5C;
Player_Level = $613B60;
Player_Experience = $613B64;
Player_HpMax = $613B68;
Player_Hp = $613B6C;
Player_ID = $613B70;
//koniec - adresy wartosci postaci
implementation
{$R *.dfm}
// Funkcje czytające
function ReadMemInteger(Address: Cardinal): Cardinal; //Read adress:value
var
ProcId: Cardinal;
tProc: THandle;
NBR: Cardinal;
value:integer;
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;
function MemReadString(Address: Integer): String;
var
NB : LongWord;
Temp : ARRAY [1..255] OF Byte;
I : Byte;
IDProcess, proc_ID : Cardinal;
begin
GetWindowThreadProcessID(FindWindow('TibiaClient', nil), @proc_ID);
IDProcess := OpenProcess(PROCESS_ALL_ACCESS, false, proc_ID);
Result := '';
ReadProcessMemory(IDProcess, Ptr(Address), @Temp[1], 255, NB);
for I := 1 to 255 do
begin
if ((Temp[i] = 0) or (Temp[i] = $0F)) then
Break;
Result := Result + Chr(Temp[i]);
end;
end;
// Koniec - Funkcje czytające
end.
Witam
Ja mam takie pytanko odnosnie tych pakietow, uruchomilem sobie programik do ich odczytywania, stanalem w miejscu gdzie nie bylo ruchu, nowych wiadomosci, potworkow itp itd ale mimo wszystko ilosc informacji w jedna i druga strone jest ogromna, da sie jakos rozsadnie to odfiltrowac? proba zatrzymania okienka z informacjami o tych pakietach jest zupelnie bez sensu, probowalem zrobic loga ale tez bez wiekszych sukcesow... jak sobie z tym radzicie?
I jeszcze jedno, wszystkie te boty strasznie zra procka, czy mozna jakos to obejsc?
Mógł bym prosić o rehosta źródła i packet.dll na sendspace?
Szczególnie proszę o packet.dll bo mam inny i przy wywoływaniu funkcji say sypie się :P
//2 Jak używać cheat engine? Nie potrafię odczytywać nim za bardzo.
Sendspace
Speedyshare
Rapidshare
O to proszony rehost packet.dll
Mam pytanie na przyszłość. Jak czytać z pamięci dane? Gdy zmieni się klient będę potrzebował tej informacji. Chodzi mi o sposób użycia cheat engine, jak w przyszłości z klienta gry wyciągnę położenie zmiennej np: skilla?
Drugie pytanie. Jak zainicjować atak. Kombinowałem z pakietami.
Trzy ataki na trolla o to pakiety wychodzące z klienta:
05 00 A1 E0 2A 02 40
05 00 A1 08 1F 02 40
05 00 A1 85 58 03 40
Więc pierwsze trzy parametry są wartością stałą, następne dwa się zmieniają w trzecim przypadku zmienia się i trzeci parametr. Więc wywnioskowałem że te 3 części pakietu są odpowiedzialne za dane potwora. Na początku myślałem że to może jego położenie lecz nie jest to możliwe ponieważ po dokonaniu ataku w innym miejscu tego samego trolla pakiet jest identyczny. Jest to chyba coś w rodzaju ID który każdy potwór ma. Poza tym litera+ liczba wskazują że jest to system szesnastkowy.
I tu jest problem nie moge wysłać pełnego pakietu ponieważ nie potrafię wyciągnąć z battlelist czy w inny sposób ID/POZYCJI czy tego czegoś by dopełnić PAKIET.
05 00 A1 X X X 40
Jak to znaleźć?
Nie znam potwora != prawie jak atak... :P
//Nie analizowałem jeszcze danych pochodzących od serwera w czasie pojawienia się trolla, może z pakietów wychodzących wyciągnąć?
SKAD WZIASC TEN ADRESS!?
#edit
GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), #ProcId); to mi sie jakos na czerwono swieci a czemu jasna cholera _._
#down
Dzienx, po troszku i to zrobie :p. Zagladaj Tu Ar`buz bede miec bankowo jeszcze pytanka xP[/QUOTE]
GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), #ProcId);
U mnie tak samo było wymień NIL na "Tibia" to w VB
hTibia -> zmienna Long
hTibia = FindWindow("TibiaClient", "Tibia")
i usun nawiasy
GetWindowThreadProcessId hTibia, proc_ID
@up:
GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), #ProcId);
samo wyrażenie jest poprawne. Mam tylko pytanie, czy zamieniłeś "#" na "małpę"?
@edit,down:
Jakby się uprzeć, to cavebota można napisać na podstawie tego co już przekazał nam Yaboo. Jedyną rzeczą jaką trzeba by jeszcze zdobyć, to ID potwora, który aktualnie cię atakuje (tego chyba nie zawarł w poradniku).
nareszcie jakis przydatny poradnik ;d
wg mnie brakuje podstaw pisania cavebota, i dzialajacego linka do packet.dll(rehost plis)
Rehost był. Poszukaj kilka postów wcześniej
Ktoś pytał jak szukać adresów zmiennych. Ja już do tego doszyłem. Najlepszym sposobem są programy crackerskie typu Tsearch (ewentualnie Cheat Engine).
Patrzymy na hp swoje, szukamy w tych programach wartości (ilości hp) jeżeli wyszuka dużą ilość adresów idziemy na potwory by zmniejszyć ilość hp, wśród poprzednich wyszukanych wyników szukamy naszą nową ilość hp. TADA mamy adres do zmiennej ;)Cytuj:
Tsearch (similar to ArtMoney and the open source Cheat Engine) is a memory scanner/debugger utility developed by Corsica Productions. Tsearch’s primary function is to scan open processes for byte addresses; restricting searches to either "Exact Value", "Range" or "Unknown Values". The searches can be refined by using a "Search Next" (or sieve) option: this re-searches already found results to
display results suiting a further refined criterion. Tsearch also features a hex editor and "auto hack" option, and is commonly used within the game hacking community to develop third-party game "trainers" and "hacks".
Tsearch’s features can be enhanced when using the "Trainer Maker Toolkit" (TMK) – a highly developed form .exe maker which takes tsearch’s "poke" addresses and adapts them into a third-party program.
sendspace.com/file/ctctzs
Hasło: www_darkwarez_pl
A moze teraz cos o odczytywaniu co jest na poziomie nizej/wyzej ?
Czy ten temat juz dawno podupadl? jesli sie pytac o cos konkretnego to od razu mozna sie spodziewac ze nie otrzyma sie odpowiedzi?
Te wartości możesz wyciągnąć z battlelisty. Znajdują się one 4 bajty przed nazwą potwora. Cyferka (hex) 40 oznacza że jest to npc\monster.
GetWindowThreadProcessId jest funkcją w której podajemy 2 parametry. Muszą one być oddzielone przecinkiem. I "Małpa" zamiast # też musi być. Powinno to wyglądać tak:
Nacisnij 2 razy w puste miejsce na formularzu. Pojawi się miejsce na wpisanie kodu. Uzupełnij je tak:Kod:GetWindowThreadProcessId(FindWindow('TibiaClient',nil), "Małpa"ProcId);
Zamiast ShowMessage można wstawić:Kod:Procedure TForm1.FormCreate(Sender: TObject);
begin
if FindWindow('TibiaClient',nil) = 0 then
begin
ShowMessage('Run Tibia First');
Application.Terminate;
end;
end;
Kod:MessageBox(Form1.Handle,'Run Tibia First','Error',MB_ICONERROR);
Witam. Mam problem. Otóż chcę zrobić anti-afk i tak wygląda przykładowa procedura:
I tu jest problem, że gdy chcę wykonać obrót, wyskakuje error z opcjami: Nie wysyłaj/wyślij raport o błędach i tibia się zamyka. To samo jest ze spell casterem. Any ideas?Cytuj:
procedure turndown;
var
PacketBuffer: array [0..200] of byte;
ProcessID: Cardinal;
begin
GetWindowThreadProcessId(FindWindow('TibiaClient', Nil), #ProcessID);
PacketBuffer[0] := $01;
PacketBuffer[1] := $00;
PacketBuffer[2] := $71;
SendPacket(ProcessID, #PacketBuffer, TRUE, FALSE);
sleep(500);
end;