Skocz do zawartości
  • Dołącz do społecznoś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

[TUT][VB.NET] Jak stworzyć trainer do WarRock


Rekomendowane odpowiedzi

Opublikowano

Moglby mi ktos powiedziec na czym polega ten orginalny bypass, tzn. jaka jest jego zas. dzialania.

Bo te Kile i cleany to podobno nie jest bypass

 

@edit

I przy okazji

czy da sie jakos "otworzyc" hacka, zeby zobaczyc zrodlo np. w VB8

dawidqc8.gif

 

  • Odpowiedzi 365
  • Dodano
  • Ostatniej odpowiedzi
Opublikowano
Moglby mi ktos powiedziec na czym polega ten orginalny bypass, tzn. jaka jest jego zas. dzialania.

Bo te Kile i cleany to podobno nie jest bypass

 

Nigdy nie twierdziłem, że to bajpas. A co do prawdziwego, to ilu programistów, tyle metod. W 4ym punkcie podałem przykład metody nazywanej Code Cave. W dużym uproszczeniu przenosi ona adresy z instrukcjami Assemblera do obszaru pamięci, który nie jest skanowany przez PB. Z tego, co wyłowiłem w sieci ludzie korzystają przy tym też z takich rozwiązań jak Inline Patching, API Hooking, Dll injection, czy String Patching. Szukajcie, uczcie się i próbujcie wcielić któreś w życie ;-)

Opublikowano

A jak to przeksztalcic na vb8 z vb6?

If getkeypress(vbKeyX)Then

Dim Shotgun As Long

Dim Shotgun1 As Long

Call readalong("Warrock", &H139A190, Shotgun)

Shotgun1 = Shotgun + &H4C

Call writealong("Warrock", Shotgun1, 42)

End If

Hmmm...

Ladowanie sygnaturki zakonczone w 50 %...........Errorrrr.....Sygnaturka sie nie załaduje.....

 

Sprzedam/Wymienie mojego Vip hacka wiecej na gg 2383934

Wymienie na konto na plemionach lub ogame....

Opublikowano
A jak to przeksztalcic na vb8 z vb6?

If getkeypress(vbKeyX)Then

Dim Shotgun As Long

Dim Shotgun1 As Long

Call readalong("Warrock", &H139A190, Shotgun)

Shotgun1 = Shotgun + &H4C

Call writealong("Warrock", Shotgun1, 42)

End If

 

Np tak:

 

To jest ukryta treść, proszę

 

Skoro już robisz weapon hack, to możesz też to nieco udoskonalić. Niech np pobiera numer broni z TextBoxa. Działające to 30 (Skorpiony) i 42 + jakieś jeszcze granaty i medicboxy (numerów nie pamiętam).

 

To jest ukryta treść, proszę

 

Motywu z SendKeys nie sprawdzałem w grze, ale powinien być poprawny. W razie czego usuń.

Edit: Poprawiłem +W na W+, bo przy robieniu przewrotu najpierw jest "W" a potem Shift (+).

Opublikowano

Ej medic Boxy dzialaja?!

bo zawsze nie dzialaly

 

@edit

Moze mi ktos powiedziec jak zrobic aby weapon ID wyswietlalo sie w nowym oknie w hacku(Button Weapon ID-Nowe okienko z numerami broni

 

@edit2

Probowal ktos juz tym Code Cavem. Ja utknalem na samym poczatku:

W prezentacji jest mowa o jakims JNZ BtVietnam. Otworzylem Ollym warrocka(Jadro warrocka, a nie launchera ani updatera) i nijak nie moge szczajic jakiego kodu szukac. Ktos rozwiazal ten problem?

 

@edit

szczalilem sie jakiej linijki mialem szukac

0049B6A0

Ale tam zamiast wyczekiwanego parametru ze slowkiem Warrock ujrzalem jakies PUSH EAX

I tutaj pytanie: Co zle zrobilem. Czy mam szukac wg. linijek czy jakis parametrow

dawidqc8.gif

 

Opublikowano
Ej medic Boxy dzialaja?!

bo zawsze nie dzialaly

 

@edit

Moze mi ktos powiedziec jak zrobic aby weapon ID wyswietlalo sie w nowym oknie w hacku(Button Weapon ID-Nowe okienko z numerami broni

 

Zobacz, jak wcześniej się robiło Superjump. Wszystko analogicznie, tylko kod w timerze inny i wartość w TextBox.

Opublikowano

Mi chodzi o to ze w niektorych hackach wyswietlalo sie okienko z lista broni(od 1 do 70 czy wiecej). I wlasnie takie cos chce zrobic(aby uzytkownik wiedzal jaki ID wpisac)

dawidqc8.gif

 

Opublikowano
Mi chodzi o to ze w niektorych hackach wyswietlalo sie okienko z lista broni(od 1 do 70 czy wiecej). I wlasnie takie cos chce zrobic(aby uzytkownik wiedzal jaki ID wpisac)

 

Chyba wiem o co Ci chodzi. Możesz spróbować w ten sposób:

 

- stwórz ComboBox

- kliknij prawym przyciskiem myszy na ComboBox i wybierz "Edit Items"

- do listy dodajesz numer broni, kropkę i po kropce nazwę broni np: 42.Shotgun, i tak każdą broń w nowej linijce

- w panelu Properties przy opcji "Text" dla ComboBoxa wpisz jakąś domyślną broń z listy, jak wyżej

 

teraz kod przycisku wygląda np tak:

 

To jest ukryta treść, proszę

 

Dim data() As String = Split(ComboBox1.SelectedItem, ".") - tworzy tablice stringów o nazwie "data", która składa się z podzielonych (split) kropką elementów zaznaczonej w ComboBox opcji. data(0) oznacza pierwszy element w tablicy, czyli numer broni, który wprowadzamy jako parametr do funkcji nadpisującej pamięć. Jak coś nie jest jasne to pytaj.

Opublikowano

Dziala dzienx. Choc mi chodzilo o nowe okno. I udalo mi sie stworzyc aboutboxa tylko nie wiem jak zrobic zeby wyswietlal sie uruchaminy przyciskiem z Form.

PS.

Mysleliscie nad pozostalymi pytaniami(moimi)?

 

 

@edit

Private Sub Button20_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button20.Click

If FAYMODFDQI(123) Then '123 - przycisk F12

Dim data() As String = Split(ComboBox1.SelectedItem, ".")

ZQXJLIARWL(&H139A190, &H4C, data(0), 4)

End If

End Sub

 

Takie cos mam w buttonie i nie dziala(zadnej reakcji, w Warrocku bo w hacku ladnie sie wszystko otwiera z tym Combobox)

dawidqc8.gif

 

Opublikowano
Dziala dzienx. Choc mi chodzilo o nowe okno. I udalo mi sie stworzyc aboutboxa tylko nie wiem jak zrobic zeby wyswietlal sie uruchaminy przyciskiem z Form.

 

Z tym też jest bardzo prosta sprawa. Tak samo wywołuje się kolejne Formy i inne typy okienkowe.

 

To jest ukryta treść, proszę

 

i to do buttona

 

@edit

Takie cos mam w buttonie i nie dziala(zadnej reakcji, w Warrocku bo w hacku ladnie sie wszystko otwiera z tym Combobox)

 

Ostatni raz używałem tego parę tygodni temu i działało, ale zanim pojawiła się broń: trzeba było wyciągnąć same pięści, wcisnąć hotkey uruchamiający bronie i wtedy przeturlać się do przodu. Jeśli to nie pomoże, to możesz spróbować włączyć i wyłączyć hacka, albo pokombinować z inną funkcją, albo innymi parametrami. Jak ktoś sprawdzał, to niech się pochwali.

Opublikowano
Czy mozna (no i jak mozna) zrobic w VB8 baze IP, na wzor Wr plus aby tylko dodane IP mogly uzytkowac hacka

 

Baza danych oparta tylko na adresach IP, to nie najlepszy pomysł i to z różnych względów. Ktoś może mieć dynamiczne IP, jak w neostradzie, albo dynamicznie przydzielane przez serwer DHCP, albo co zrobić jeśli dwóch użytkowników łączących się przez LAN ma takie samo IP (ludzie w kwestii dobierania adresów sieci wewnętrznej są mało oryginalni). Czyli generalnie dość pokomplikowana sprawa. IP byłoby dobre, ale jako dodatkowy parametr do weryfikacji, poza loginem i hasłem, a już w ogóle najlepszym rozwiązaniem byłby jakiś stały element, np adres MAC. Nie wiem jak to jest rozwiązane w wr-plus, ale tak jak kiedyś ktoś jakiegoś vipa opublikował, to wydaje mi się, że łączył się z bazą danych forum z którego hack pochodził i sprawdzał, czy dane login i hasło pokrywa się z danymi zarejestrowanego użytkownika na forum. W VB8 da się to zrobić. Chyba nawet w menu "tools" jest opcja "connect to database" a prz instalacji VB8 jest chyba nawet możliwość dołączenia pakietu z serwerem MySQL. Obawiam się jednak, że administratorzy tego forum nie dadzą Ci dostępu do informacji o 9u tysiącach użytkowników, ale możesz sam poeksperymentować. Mnie też kusi, żeby się pobawić kiedyś bazami danych i jak znajdę czas, to jak najbardziej. Na początek załóż jakieś darmowe konto www z obsługą MySQL, np tu:

To jest ukryta treść, proszę
.

Opublikowano

dzienx bede kobinowal...

A probowales moze juz tego sposobu Code cave. Bo jak tak to looknij na posta na poprzedniej stronie

 

@edit

Wie ktos jaki jest Taget adress for 3D MAP w Warrocku

dawidqc8.gif

 

Opublikowano
dzienx bede kobinowal...

A probowales moze juz tego sposobu Code cave. Bo jak tak to looknij na posta na poprzedniej stronie

 

@edit

Wie ktos jaki jest Taget adress for 3D MAP w Warrocku

 

Tamten tutorial dotyczył jakiejś opcji związanej z "3D MAP", ale w grze Battlefield Vietnam. Podałem to jako przykład. W dużym skrócie, jeśli chcesz to przenieść na grunt WarRocka, to wybierz adres opcji, która kickuje, skopiuj fragment pamięci z tym adresem i instrukcjami assemblera, wprowadz je w innej-niewykorzystanej części pamięci, popraw instrukcje assemblera żeby nie powodowały błędów.

 

To jest ukryta treść, proszę

Warto też zaznajomić się choć trochę z językiem Assemblera. Później trzeba te wszystkie nowe instrukcje wprowadzić do programu i tu nie wiem czy VB wspiera kod assemblera - w sensie czy da się go wprowadzić do kodu programu. W C++ można. Jak sam widzisz nie jest to takie proste i dla kogoś kto się dopiero uczy to dużo pracy. WarRock znudził mnie do szczętu, więc szkoda mi na to czasu, ale Ty eksperymentuj - tylko z głową.

 

P.S.: PUSH EAX, to właśnie instrukcja assemblera, która jeśli się nie mylę zrzuca na stos pamięci wartość z rejestru o nazwie EAX

Opublikowano

Sry ze ciagle pytam ale jestem na tym polu newbie:D

Powiem Ci jak to rozumiem a Ty odpisz czy poprawnie:

kickuje np. INVI

musze znalezc adres Invi w CPU Warrock(502718) skopiowac fragment pamieci (tutaj help=jak zaczyna sie to, jakies znaczniki sa na poczatku i na koncu?) i przeniesc je tam gdzie nic nie ma. Czyli ze bypass bedzie przenosil kazdorazowo te adresy?

 

 

dawidqc8.gif

 

Opublikowano
Sry ze ciagle pytam ale jestem na tym polu newbie:D

Powiem Ci jak to rozumiem a Ty odpisz czy poprawnie:

kickuje np. INVI

musze znalezc adres Invi w CPU Warrock(502718) skopiowac fragment pamieci (tutaj help=jak zaczyna sie to, jakies znaczniki sa na poczatku i na koncu?) i przeniesc je tam gdzie nic nie ma. Czyli ze bypass bedzie przenosil kazdorazowo te adresy?

 

No właśnie tylko jednorazowo. Żeby to działało za każdym razem trzeba to dodać do kodu programu. Najlepiej chyba kod assemblera skompilować do biblioteki dll i wraz z uruchomieniem hacka i gry wstrzykiwać tę bibliotekę do gry. I tu znowu przydaje C++. Choć w VB też można kompilować biblioteki, to wciąż nie wiem, jak w z tym assemblerem.

 

Niektóre programy do edytowania pamięci potrafią robić pliki exe. Np ten nieszczęsny Tsearch z tutoriala i zdaje się Cheat Engine też. W CE można nawet tworzyć Code Cave, wstrzykiwać dll etc. Jeśli w pierwszym menu CE dodasz swój adres pamięci do listy, to kliknij na nim prawym przyciskiem myszy i wybierz "Browse this memory region", klikasz znowu prawym i dajesz "Go to address" i przechodzisz do dokładnie swojego adresu. W menu "tools" masz też taką bardzo przydatną rzecz, jak "allocate memory", która tworzy Ci miejsce na code cave w nieużywanym obszarze pamięci. Później na liście klikasz na jakiś wcześniejszy adres i wybierasz z menu kontekstowego "crete jump and initialize Code-Cave" i skaczesz do adresu rozpoczynającego twoje "allocate memory" itede itepe. To wciąż tylko koncepcja, bo nie próbowałem tego zrobić do końca.

 

Te znaczniki na początku i na końcu prawdopodobnie oznaczają, że skaczesz: najpierw z oryginalnego kodu do code-cave a potem z code-cave do oryginalnego kodu, tak żeby ciągłości instrukcji była zachowana, ale zamiast wykonywać je w oryginalnym kodzie, który jest skanowany przez PB, to będzie gje wykonywać gdzie indziej w Code-Cave. Już lepiej tego nie potrafię wyjaśnić :-P

 

@ down

 

Nie możesz skoczyć (jmp) z adresu 502718 do Twojego code cave, bo zwróć uwagę, że po tym adresie 4 kolejne zamieniły się na NOP (czyli nic nie robiące). Musisz skoczyć, ale wcześniej i wprowadzić do code cave wszystkie oryginalne instrukcje, łącznie z tymi z adresów od których skoczyłeś (bo zostały zamienione na jmp) i kolejnymi, które zostały zamienione na NOP itd, a potem już z Code Cave skoczyć z powrotem do oryginalnego kodu za adres 502718. Cała sztuczka polega na tym, żeby PB skanował oryginalny adres, który się nie zmienia, podczas gdy tak naprawdę wszystko się odbywa w code-cave. Amen. Naprawdę nie mam sił już tego wyjaśniać.

Opublikowano

No dobra, cos udalo mi sie zrobic(choc dziwnie sie czuje, wszystko takie obce i trudne, hehe)

1.Otworzylem w CE process warrock

2.dodalem do listy adres invi(502718) jako 4 byte

3. Prawym na adres i browse this memory region i nowe okienko sie zrobilo

To jest ukryta treść, proszę

4. prawym i Go to adress 502718

To jest ukryta treść, proszę

5.tworze ceva(allocate memory) i adres jest tam wysylany

To jest ukryta treść, proszę

6.cofam sie kilka adresow wstecz i robie creat jump...

To jest ukryta treść, proszę

i co dalej

a poza tym czy robie wszystko dobrze?

 

 

dawidqc8.gif

 

Opublikowano

Jeszcze coś autorskiego w nowym poście, żeby nie mieszać pomysłów.

 

System do teleportowania w grze: napisałem go jakiś czas temu i nieco udoskonaliłem.

 

image2ev6.jpg

 

Przycisk "Teleport On": będziemy uruchamiać nim dwa timery, jeden do pobierania współrzędnych naszej lokacji i drugi do wczytywania

 

To jest ukryta treść, proszę

 

Przycisk "Teleport Off":

 

To jest ukryta treść, proszę

 

Timer "getpos" do pobierania współrzędnych:

TextBoxX,TextBoxY i TextBoxZ, to u mnie nazwy tekstboxów ze współrzędnymi X, Y, Z (jak na rysunku wyżej)

 

To jest ukryta treść, proszę

 

Timer "teleport" do wczytywania pobranych wcześniej współrzędnych:

 

To jest ukryta treść, proszę

 

I w zasadzie można by na tym zakończyć (nasz teleport będzie działał za pomocą przycisków Home i End), ale dorzuciłem jeszcze część do zapisywania naszych lokacji do listy, z listy do pliku i później możliwość wczytywania tej listy z pliku i w czytywania naszych zapisanych współrzędnych.

 

Małe objaśnienie:

"ListBox3" w kodzie to u mnie ta duża lista do wrzucania współrzędnych

TextBox z napisem "Description of location" występuje w kodzie pod nazwą "savecords"

 

Przycisk "Save location as": dodaje do listy i do pliku lokacje z opisem z TextBoxa "savecords"

 

To jest ukryta treść, proszę

 

Przycisk "Load locations list from file": ładuje całą listę z pliku

 

To jest ukryta treść, proszę

 

Przycisk "Load saved location": wczytuje zaznaczoną na liście pozycje do okienek X, Y, Z, po czym możemy już tylko w grze użyć klawisza "End" i te współrzędne wczytać.

 

To jest ukryta treść, proszę

 

Przycisk "Remove from the list": usuwa z listy zaznaczoną pozycje (z pliku już niestety nie i gdyby zaszła taka potrzeba to musicie ręcznie edytować plik Cords.txt)

 

To jest ukryta treść, proszę

 

Dla zainteresowanych: funkcja Mid wyciąga ze stringów mniejszy ciąg o odpowiedniej długości i począwszy od jakiegoś znaku, np Mid(nazwastringa, numer znaku początkowego, liczba znaków do pobrania od znaku początkowego)

 

 

 

Opublikowano

Ciekawym pomyslem jest tutaj combo box. Ulatwia on gre noobkom bo wystarczy wybrac konkretna lokacje(marien niu base, etc.)

Tak sie zastanawiam jak to by dzialalo

bo nie wiem co w timerze aby jedna lokacje timer rozbijal na 3 parametry(z,x,y)

dawidqc8.gif

 

Opublikowano
Ciekawym pomyslem jest tutaj combo box. Ulatwia on gre noobkom bo wystarczy wybrac konkretna lokacje(marien niu base, etc.)

Tak sie zastanawiam jak to by dzialalo

bo nie wiem co w timerze aby jedna lokacje timer rozbijal na 3 parametry(z,x,y)

 

To wtedy zamiast

 

TextBoxX.Text = CStr(posX) 'funkcja CStr konwertuje nam różne typy zmiennych na typ string

TextBoxY.Text = CStr(posY)

TextBoxZ.Text = CStr(posZ)

 

musiałbyś dodać do comboboxa nowy item zawierający 3 współrzędne np po spacji, a w timerze wczytującym użyć funkcji split jak to kiedyś robiliśmy i wprowadzić 3 elementy z takiej tablicy do funkcji WriteFloatPointer, jako kolejne współrzędne. Ale wtedy trzeba by było przerobić cały system zapisywania do pliku listy.

Opublikowano

Autoupdate.

 

Jeśli mamy kawałek wirtualnej przestrzeni do dyspozycji (np jakieś darmowe konto www) możemy do naszego hacka dodać możliwość automatycznego ściągania nowych adresów, a tym samym aktualizowania hacka (jeśli nie dodajemy nowych opcji). Przedstawię prosty pomysł jak to zrobić:

 

Najpierw musimy stworzyć plik z adresami, który wyślemy na serwer i z niego będzie on później pobierany. Do notatnika wklepujemy nasze adresy w takiej formie:

 

To jest ukryta treść, proszę

 

Oczywiście adresów może być więcej, ale dla celów dydaktycznych wybrałem 4: kolejno Player Pointer, Circles, Boxes, No Spread. Kolejność jest ważna, bo po updejdzie adresów musimy je wrzucić na serwer poprawione, ale w tej samej kolejności. Gotowy plik możemy zapisać jakkolwiek. Nie musi to być plik tekstowy. Ja zapisałem dla przykładu jako update.add.

 

Klikamy dwa razy na Form1, albo jakąkolwiek inną główną formę. W kodzie pojawi nam sie coś takiego:

 

To jest ukryta treść, proszę

 

Oznacza to procedurę, która będzie wykonywana przed załadowaniem formy.

Między znaczniki procedury wprowadzamy teraz:

 

To jest ukryta treść, proszę

 

playerpointer, circles, boxes, nospread, to nazwy publicznych zmiennych, których jeszcze nie zadeklarowaliśmy,dlatego na samym początku klasy po "Public Class Form1" wprowadzamy te deklaracje:

 

To jest ukryta treść, proszę

 

Teraz w timerach, czy przyciskach zamiast adresów pamięci używajcie tych nazw zmiennych np

 

dla staminy:

 

MONMOKSRAL(playerpointer, &H28C, 100)

 

dla boxes:

 

BGFGBVENYE(boxes, 1, 4)

 

Pomysł można by rozwinąć o updejtowanie całego programu. Wtedy chyba najrozsądniej byłoby stworzyć coś na wzór launchera z WarRocka, który sprawdzał by w sieci w pliku wersje programu i jeśliby różniła się od tej, którą mamy na dysku, to ściągałby nową wersje programu i ją odpalał.

 

Opublikowano
a w VB6 jak by było ?

 

Wczoraj Megatron22 wytargał coś takiego do VB6: link do tematu. Trochę inną funkcje to spełnia, a można wykorzystać z tego sam sposób łączenia się z siecią. Funkcja Split powinna być w VB6. Nie wiem jak wyglądają deklaracje tablic w starszych wersjach VB, ale też nie powinno być jakichś rewelacji.

 

P.S.: Ponoć używanie adresów pamięci w formie zmiennych, wczytywanych z niezależnego źródła, zwiększa niewykrywalność takiego hacka. Nie wiem, ile w tym prawdy, ale technicznie rzecz biorąc tym sposobem w kodzie programu faktycznie nie mamy żadnego adresu - wczytywane i przechowywane są w pamięci.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...