Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Dowolna Gra-Wyciągnie Wartości


Rekomendowane odpowiedzi

Opublikowano

Cześć Planuję napisać haxa do gry cod4 albo innej FPS lub MMO

 

Mniejwięcej wiem czym to się je w Delphi co i jak ale jak wyciągnąć wartości np wartość która odpowiada z rozrzut broni w grze ? wiem chyba że jak się wydobędzie to wartość to trzeba użyc writeprocessmemory .... zablkować tą wartość jako stałą a potem obejsc progrma antycziterski :P

www.ect.y0.pl

A'jm Hardkorowy Kokzu

Opublikowano

Jeśli gra ma tryb single player wraz z możliwą konfiguracją, lub jakoś podgląd aktualnych wartości (np, jeśli jakiś inny hack by na to pozwalał to też możesz go użyć), to zmieniasz wartości w konfigu i szukasz ich w Cheat Engine. Jeśli nie znasz podstaw, poszukaj na youtube (np.

) i spróbuj rozwiązać tutorial dołączony do CE. Rozrzut broni, hmm, możesz znaleźć szukając np. wartości która zmienia się jeśli jest naciśnięty przycisk strzału, sprawdzać co z niego czyta (patrz co się doda na listę gdy strzelisz), i sprawdzać w disassemblerze czy w pobliżu wartości nie ma "je xxxxxxxx", "jne xxxxxxxx", "jze xxxxxxxx", lub "xor xxx,xxx", jeśli tak, to próbujesz znopować tą wartość (prawym myszki > Replace with code that does nothing), lub w przypadku je i jne i jze zamienić je na skok bezwarunkowy "jmp" (zapewne będzie zajmował o bajta więcej, i zmodyfikuje ci wartości poniżej, ale może zadziałać). Jeśli to zadziała to dodajesz ten kod na liste adresów w głownej aplikacji jako 4 lub 8 Bytes, kopiujesz jej zawartość gdy jest zmieniona, i orginalna. Potem tylko wpisujesz do adresu wartość zmienioną gdy ktoś zaznaczy opcję w haku, i orginalną gdy odznaczy. I jeśli chcesz dokładam moje funkcje, ułatwiające wpisywanie do pamięci:

 

Potrzebne zmienne: (wpisz ten tekst zaraz pod "uses")

var
     h : THandle;
     ProcessHandle, PID: longword;

 

Znajdywanie okna, do którego potem będziesz wpisywał: (funkcja zwraca true jeśli okno zostało znalezione, więc w łatwy sposób możesz sprawdzić czy program jest uruchomiony)

function znajdz(okno:PAnsiChar) : boolean;
begin

  GetWindowThreadProcessId(FindWindow(nil, okno), @PID);
  h := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
  if (PID = 0) then begin
     result := false;
  end else result := true;

end;

 

Pisanie i czytanie z adresu danych typu float (liczba zmiennoprzecinkowa):

function czytajfloat(adres:pointer) : single;
var wroc,czyttu: single;
   ily: dword;
   czek: boolean;
begin

   czek:=readprocessmemory(h,pointer(adres),addr(czyttu),4,ily);
   if (not czek) or (ily=0) then wroc:=0 else wroc:=czyttu;
   result:=wroc;

end;

procedure piszfloat(adres:pointer;co:single);
var ily: dword;
begin

   writeprocessmemory(h,pointer(adres),addr(co),4,ily);

end;

 

Pisanie i czytanie danych typu 4Bytes, 2Bytes i byte:

function czytaj4bytes(adres:pointer) : integer;
var wroc,czyttu: integer;
   ily: dword;
   czek: boolean;
begin

   czek:=readprocessmemory(h,pointer(adres),addr(czyttu),4,ily);
   if (not czek) or (ily=0) then wroc:=0 else wroc:=czyttu;
   result:=wroc;

end;

procedure pisz4bytes(adres:pointer;co:integer);
var ily: dword;
begin

   writeprocessmemory(h,pointer(adres),addr(co),4,ily);

end;

function czytaj2bytes(adres:pointer) : integer;
var wroc,czyttu: integer;
   ily: dword;
   czek: boolean;
begin

   czek:=readprocessmemory(h,pointer(adres),addr(czyttu),2,ily);
   if (not czek) or (ily=0) then wroc:=0 else wroc:=czyttu;
   result:=wroc;

end;

procedure pisz2bytes(adres:pointer;co:integer);
var ily: dword;
begin

   writeprocessmemory(h,pointer(adres),addr(co),2,ily);

end;

function czytajbyte(adres:pointer) : byte;
var wroc,czyttu: byte;
   ily: dword;
   czek: boolean;
begin

   czek:=readprocessmemory(h,pointer(adres),addr(czyttu),1,ily);
   if (not czek) or (ily=0) then wroc:=0 else wroc:=czyttu;
   result:=wroc;

end;

procedure piszbyte(adres:pointer;co:byte);
var ily: dword;
begin

   writeprocessmemory(h,pointer(adres),addr(co),1,ily);

end;

 

1 Znaku (czyttext1, pisztext1), i tekstu Unicode (czytajtextu i pisztextu, dołączone od razu czytanie adresu z pointera):

function czyttext1(adres:pointer):char;
var ily: dword;
   towroc: char;
begin

   readprocessmemory(h,pointer(adres),addr(towroc),2,ily);
   result:=towroc;

end;

procedure pisztext1(adres:pointer;co:char);
var ily: dword;
begin

   writeprocessmemory(h,pointer(adres),addr(co),2,ily);

end;

//czytamy tekst unicode
function czytajtextu(adres:pointer):string;
var
a  :    integer;
ble:    char;
adr:    integer;
bajt:   integer;
tek:    string;
kon:    boolean;

begin

//a ustawiamy na 0
a:=0;

//odczytujemy chary po kolei
repeat

//adr ustawiamy na miejsce tekstu z kolei
adr := czytaj4bytes(pointer(adres));
adr := adr + a*2;

//zczytujemy kolejny znak do zmiennej ble
ble:=czyttext1(pointer(adr));

//i dodajemy go do tek
tek:=tek+ble;

//powiekszamy a
a:=a+1;

//zczytujemy kolejny znak w formie bajtu
bajt:=czytaj4bytes(pointer(adr+2));

//i sprawdzamy czy wynosi on 0, badz czy petla powtarza sie juz 50 razy aby nie dzialala w nieskonczonosc
if (bajt = 0) or (a > 50) then begin

//jesli tak, to ustawiamy kon na true
kon:=true;

end;

//jesli kon wynosi true, petla zostaje zakonczona
until (kon=true);

//zwracamy tek
result := tek;

end;

procedure pisztextu(adres:pointer;textu:string);
var
a  :  integer;
ble:  char;
adr:  integer;
bajt: integer;
begin

//petla przechodzaca przez dlugosc tekstu do wpisania
for a:=1 to length(textu) do begin

//ble ustawiamy na kolejny znak z tekstu
ble := textu[a];

//zczytujemy adres zawarty w pointerze
adr := czytaj4bytes(pointer(adres));

//i ustawiamy adr na adres kolejnego znaku
adr := adr + ((a-1)*2);

//wpisujemy ble (kolejny znak tekstu), do adr
pisztext1(pointer(adr),ble);

end;

//czytamy adres zawarty w pointerze
bajt:=czytaj4bytes(pointer(adres));

//dodajemy do niego dlugosc testu*2 (tak by wyszedl adres kolejnej litery od ostatniej)
bajt:=bajt+length(textu)*2;

//i wpisujemy do niego 0, ktore ma pokazac ze w tym miejscu tekst sie konczy
pisz4bytes(pointer(bajt),0);

end;

 

Przykładzik użycia:

// Np, dodawanie 50 do pozycji gracza, gdy trzyma D (adres musisz dać swój, znaleziony w grze)

if (key='d') then begin
piszfloat(pointer($0000FF99),czytajfloat(pointer($0000FF99))+50);
end;

// I taki do opcji w cheacie (na formie checkbox)

procedure TForm1.FormCreate(Sender: TObject);
begin

 znajdz('Soldat');

end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin

 if (CheckBox1.Checked=true) then begin

   piszbyte(pointer($00ABCDEF),1);

 end else begin

   piszbyte(pointer($00ABCDEF),0);

 end;

end;

 

A jeśli chcesz zamrozić adres, to wstawiasz na forme komponent Timer (zakładka System (w Delphi 7)), klikasz na nim 2 razy, program automatycznie tworzy ci zdarzenie w kodzie programu. Wpisujesz do niego np. piszbyte(pointer($00ABCDEF),1), i ustawieniach Timera wskazujesz co ile milisekund program ma wpisywać do pamięci, najlepiej ustawić 10/15. Lecz lepszą metodą jest wyszukanie co wpisuje do danego adresu, znopowanie tego i tylko 1 raz wpisanie do adresu danych.

Moi drodzy, bo najważniejsze w kochaniu zwłok jest to, że nie marudzą.

Opublikowano

Dzięki za wyczeprującą wypowiedź a jak ktoś może zna te wartości od reicola do cod4/codwaw to będę wdzięczny.

A jak ominąć Program AntyCziterski?

www.ect.y0.pl

A'jm Hardkorowy Kokzu

Opublikowano

A jak ominąć Program AntyCziterski?

 

Musisz dowiedzieć się jak działa, i krótko mówiąc pozmieniać mu pamięć. Tylko taka zabawa wymaga pewnych umiejętności, jeśli masz oryginalne gry i jesteś początkujący to radzę wziąć się za inną grę, w której nie dostaniesz od razu global bana za nieudaną próbę zbypassowania AC..

 

Nigdzie nie znajdziesz kodu, który możesz po prostu skopiować, jak już to małe kawałeczki, które pokazują jak działa np. Skanowanie funkcji systemowych w danym AC, taki kod najczęściej po kolejnym updacie AC przestaje działać i zaczynają się bany bez endu.. :P

Opublikowano

Uhm tzn. co masz dokładniej na myśli, rozrzut broni czyli skręcanie kuli w czasie lotu? jedynym wyjściem to chyba zmiana kąta widzenia żeby wyrównać rorzut

Chcesz zarobić na własnym cheacie/bocie? Pisz na PM

Cracking, analiza programu/strony, boty (także web), cheaty

kwoh2cmd.png

Opublikowano

Posiedziałem pare minut i udało mi się zrobić że coś takiego

 

61205820281785228452.png

 

Ta duża dziura wyżej to z przycelowaniem ppm ( w obu przypadkach ciężki karabin )

 

 

CoD 4 1.7

BYTE bFix = 0xEB; // Standardowy bajt w tym miejscu to 0x74
WriteProcessMemory( GetCurrentProcess(), (void*)0x457D12, &bFix, 1, 0 );

 

Załaduj se cod4 do debuggera, przejdź do adresu, który podałem porozglądaj się a na pewno uda się zrobić port do WaW B)

  • 2 tygodnie później...
Opublikowano

Dobra zrobiłem, działa

Teraz tylko jak obejść punkbustera bo na serverach z PB kicka za Coruppted file memory

hmm i co oznacza bajt EB? pusty? bo nie mogłem tego wygoglowac

www.ect.y0.pl

A'jm Hardkorowy Kokzu

Opublikowano

EB to po prostu wartość w hexach tak jak np. 65535 to bFix[2] = { FF, FF } w bajtach

I kto się uparł na ludzi i wszędzie wlepia minusy?

Chcesz zarobić na własnym cheacie/bocie? Pisz na PM

Cracking, analiza programu/strony, boty (także web), cheaty

kwoh2cmd.png

Opublikowano

ok, tak też myślałem a Jak Znaleść wydobyć

Wartości odpowiadające za;

1.Obrażenia danej broni

2.Zmiana mocy obrażeń zależnie od odległości ( tu chciałbym tak ustawić ze na dalekie dystanse obrażenia są takie jak na bliskich dystansach.

3.Prędkość strzelania broni

nie ma chyba punktu zaczepienia

www.ect.y0.pl

A'jm Hardkorowy Kokzu

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...