Witam na moim Blogu.

Witam 🙂

Aktualnie mimo małej ilości wolnego czasu znalazłem go jednak trochę i postanowiłem założyć bloga. Mimo iż nie podążam za modą i chociaż posiadam konta na FB i NK to zaglądam tam jedynie jeżeli dostanę jakieś powiadomienie na e-mail. Nie widziałem też sensu zakładania własnego bloga, ale stwierdziłem, że czasami mogę mieć jakieś przemyślenia do przekazania i chcą…c się nimi podzielić będę potrzebował jakiegoś osobnego miejsca niż Fora, na których się udzielam. Wkrótce postaram się opublikować dłuższy wpis dotyczący tworzenia Trainera do kultowej i nieco już leciwej pierwszej części gry „Max Payne”. Oczywiście Trainer będzie napisany w WinAPI pod Delphi. Wykorzystam tam wyszukiwanie bajtów instrukcji w pamięci procesu oraz modyfikowanie wartości adresu uzyskanego przez Pointer. Trainer robi to w wątku dla zamrożenia poziomu „uszkodzeń” bohatera na zerowym poziomie. Do modyfikacji Pointera wykorzystamy prosty kod, który nie wymaga użycia techniki iniekcji biblioteki dll w proces gry. Przy okazji wklejając ten krótki kod upewnię™ się czy plugin WordPress’a do podświetlania kodu źródłowego działa tak, jak należy 🙂 A screenshot z wyglądu Trainera umieszczam poniżej, bo również chciałem sprawdzić jak spisze się dodawanie obrazków do treści. Na końcu umieszczam też link do swojego tutoriala na temat podstawowego grzebania w programach przy użyciu technik Reverse Engineeringu, a to w celu aby sprawdzić kolejny plugin pozwalający publikowac video z YouTube.

//...

type
  TValueType = (vtByte, vtWord, vtDword);

//...

function ReadPointer(DestPid : DWORD; PointerAddress, PointerOffset : DWORD; ValueType : TValueType) : DWORD;
const
  TypeArr : array[TValueType] of Byte = (1, 2, 4);
var
  BytesRead, HProcess, PtrVar : Cardinal;
begin
  HProcess := OpenProcess(PROCESS_ALL_ACCESS, False, DestPid);
  ReadProcessMemory(HProcess, Ptr(PointerAddress), @PtrVar, SizeOf(PtrVar), BytesRead);
  ReadProcessMemory(HProcess, Ptr(PtrVar + PointerOffset), @Result, TypeArr[ValueType], BytesRead);
  CloseHandle(HProcess);
end;

procedure WritePointer(DestPid : DWORD; PointerAddress, PointerOffset : DWORD; NewValue : DWORD; ValueType : TValueType);
const
  TypeArr : array[TValueType] of Byte = (1, 2, 4);
var
  BytesRead, BytesWrite, HProcess, PtrVar : Cardinal;
begin
  HProcess := OpenProcess(PROCESS_ALL_ACCESS, False, DestPid);
  ReadProcessMemory(HProcess, Ptr(PointerAddress), @PtrVar, SizeOf(PtrVar), BytesRead);
  WriteProcessMemory(HProcess, Ptr(PtrVar + PointerOffset), @NewValue, TypeArr[ValueType], BytesWrite);
  CloseHandle(HProcess);
end;


Pozdrawiam.

Comments (3)

  1. 14:09, 27.07.2012Stefan  / Odpowiedz

    Blog kozak! Może zrobiłbyś tutorial jak złamać Lotki z http://www.mbnet.com.pl/?
    Apka jest robiona w Borlandzie i częściowo udało mi się złamać ten program (zniknął nag screen) mimo to nadal część opcji jest nieaktywna.
    Dobra robota!

    • 12:08, 28.07.2012olesio  / Odpowiedz

      @Stefan: dziękuję. Co do łamania komercyjnego softu to tego się raczej nie podajmę i tego tutaj nie opiszę. Poza tym nie znam się na programach do totka, ale ten może być zrobiony tak, że kod niedostępnych funkcji zawarty jest tylko w pełnej wersji programu, którą otrzymasz dopiero po jego zakupie ;/

  2. 22:38, 05.08.2012-123oho  / Odpowiedz

    Fajny blog, będę obserwować, obyś tylko miał czas na zrobienie jakichś artów, bo to podstawa.

Dodaj komentarz

Allowed Tags - You may use these HTML tags and attributes in your comment.

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Pingbacks (0)

› No pingbacks yet.