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

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


Rekomendowane odpowiedzi

  • Odpowiedzi 365
  • Dodano
  • Ostatniej odpowiedzi
Opublikowano

Niestety nie mam ale właśnie ściągam i zobaczymy jak to wyjdzie jak zainstaluje :) dzięki!

 

EDIT:Ja nawet nie mogę zainstalować Net Framework 3.5 wyskakuje to samo żebym coś zainstalował ale już chyba wiem o co biega o sterowniki niektóre :) .

Opublikowano
Niestety nie mam ale właśnie ściągam i zobaczymy jak to wyjdzie jak zainstaluje :) dzięki!

 

EDIT:Ja nawet nie mogę zainstalować Net Framework 3.5 wyskakuje to samo żebym coś zainstalował ale już chyba wiem o co biega o sterowniki niektóre :) .

 

 

Wymagania systemowe

Wymagania zmieniają się w zależności od kombinacji składników programu Visual Studio 2008. Aby zainstalować program, potrzebne są następujące elementy:

  • Komputer z procesorem 1,6 GHz lub szybszym
  • 384 MB pamięci RAM lub więcej; 768 MB pamięci RAM lub więcej w systemie Windows Vista
  • 2,2 GB wolnego miejsca na dysku twardym
  • Dysk twardy o szybkości 5400 obr./min
  • Monitor o rozdzielczości 1024 x 768 lub większej
  • Stacja dysków DVD-ROM
Program Visual Studio 2008 można zainstalować w następujących systemach operacyjnych:

Windows Vista (x86 oraz x64) — wszystkie wydania z wyjątkiem Starter Edition; Windows XP (x86 oraz x64) z dodatkiem Service Pack 2 lub nowszym (wszystkie wydania); Windows Server 2003 (x86 oraz x64) z dodatkiem Service Pack 1 lub nowszym (wszystkie wydania); Windows Server 2003 R2 (x86 oraz x64) lub nowszy (wszystkie wydania).

 

Wymagania z MSN.

 

 

Sprawdź, czy masz Service Pack 2.

Opublikowano

mógłby ktoś wysłać mi na mail [email protected] lub gg 676648 ikonkę do uruchomienia tego Basic 2008 Express Edition?

45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif

13648.gif

9263.jpg

Młody pro daje czadu na TS part 1

Mlody ts part 2

45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif

 

10 postow [ ]

20 postow [ ]

30 postow [ ]

40 postow [ ]

50 postow [ ] < Liczenie postów ? kolejny powód do spamu .......

60 postow [ ]

70 postow [ ]

80 postow [ ]

90 postow [ ]

100 postow [ ]

 

"jAk Ci PoMoGłEm To DaJ 5"
chcesz 5? dam ci 1
Opublikowano

i po hu^ ci ikona ? i tak nie uruchomisz jak nei masz zainstalowanego ..chyba, że chcesz uzyc tej ikony do schowania pornoli T.T

Opublikowano

zainstalowanego mam tylko ikony nie mam a pornole trzymam gdzie indziej

 

Edit: PiPr wypraszam sobie i na pewno nie mam 7 lat.Naprawde tego potrzebuje może ktoś wysłać tą ikonę?

45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif

13648.gif

9263.jpg

Młody pro daje czadu na TS part 1

Mlody ts part 2

45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif

 

10 postow [ ]

20 postow [ ]

30 postow [ ]

40 postow [ ]

50 postow [ ] < Liczenie postów ? kolejny powód do spamu .......

60 postow [ ]

70 postow [ ]

80 postow [ ]

90 postow [ ]

100 postow [ ]

 

"jAk Ci PoMoGłEm To DaJ 5"
chcesz 5? dam ci 1
Opublikowano

ej sory

 

jak masz Windowsa(przy starcie kompa taka falujaca flaga jest, czterokolorowa)

No ale na serio:

wchodzisz w menu start i klikasz na wyszukaj(w kazdej v. windy jest na wierzchu)

wpisujesz w wyszukaj programow "Visual Basic Express Edotion 2008" i szukaj

jak wyszuka to tworzysz sobie skrot na pulpicie.

A poza tym ja tez nie mialem iconki na pulpicie tylko w menu start i wszystkie programy byla na koncu jako odzdzielny program(nie w folderach)

dawidqc8.gif

 

Opublikowano

Mam otuż taki problem zrobiłem już hacka na stamine z NOWYMI adresami wszystko niby gitarka ale wchodze do rooma itp klikam 1 button stamina ON i wylacza sie warrock ;/ tak samo z weapon hackiem daje 1 button weapon ON naciskam hotkeya i wylacza sie WR ;/ wie ktos o co cmon ?

 

jakby co pisać na gg 3900153

 

@EDIT zdobra juz wszystko dziala ;d

"Jakie założenie masz P.R.O.S.T.E walczyć i wygrywać"

wqdz690429546a.GIF

7210xn1.jpg

Piszę poprawnie po polsku

VELVET TO FRAJER

Opublikowano

ok wytlumacze sytuacje probowalem tego sposobu i go.. nic nie znalazlo to po 1 po 2 to ze mialem pare snie temu vira i mi zapora zablokowala dostęp do start programy

45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif

13648.gif

9263.jpg

Młody pro daje czadu na TS part 1

Mlody ts part 2

45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif45585a548be28427.gif

 

10 postow [ ]

20 postow [ ]

30 postow [ ]

40 postow [ ]

50 postow [ ] < Liczenie postów ? kolejny powód do spamu .......

60 postow [ ]

70 postow [ ]

80 postow [ ]

90 postow [ ]

100 postow [ ]

 

"jAk Ci PoMoGłEm To DaJ 5"
chcesz 5? dam ci 1
Opublikowano

Postanowilem zasypac inteligentych nowa garstka moich pytan:

 

1. W niektorych hackach jest opcja Checkbox tzn.nie ma off i on tylko jest albo zaznaczony "ptaszek" w okienku albo go nie ma(zajmuje to mniej miejsca od 2 buttonów).

 

Stworzylem checkboxa i w kodzie wpisalem mu

Timer.Enabled = True
, ale to nie dzialalo

kombinowalem dalej ale nic. Tak tez myslalem ze np. takie cos:

If Enabled

Timer.Enabled = True

No ale pytam Was jak to zrobic?

 

2. Czy mozna jakos zrobic aby Opacity(przezroczystosc) mogla byc ustalana przez urzytkownika, tak jak to bylo z superjumpem

 

3. jak zablokowac rozmiar hacka, probowalem locked true ale to nie dziala nadal mozna se zwiekszac i zmiejszac hacka

dawidqc8.gif

 

Opublikowano
Postanowilem zasypac inteligentych nowa garstka moich pytan:

 

1. W niektorych hackach jest opcja Checkbox tzn.nie ma off i on tylko jest albo zaznaczony "ptaszek" w okienku albo go nie ma(zajmuje to mniej miejsca od 2 buttonów).

 

Stworzylem checkboxa i w kodzie wpisalem mu , ale to nie dzialalo

kombinowalem dalej ale nic. Tak tez myslalem ze np. takie cos:

 

No ale pytam Was jak to zrobic?

 

2. Czy mozna jakos zrobic aby Opacity(przezroczystosc) mogla byc ustalana przez urzytkownika, tak jak to bylo z superjumpem

 

3. jak zablokowac rozmiar hacka, probowalem locked true ale to nie dziala nadal mozna se zwiekszac i zmiejszac hacka

 

Ad. 1: "Enabled" w przypadku checkboxów trochę inną funkcję spełnia, niż w timerach. Jeśli chcesz sprawdzić , czy jest zaznaczony czy nie, to musisz użyć właściwości "Checked" (również boolean - czyli zwraca albo prawdę, albo fałsz). Np tak:

 

        If CheckBox1.Checked Then 'jeśli jest zaznaczony - CheckBox1.Checked = True
            'tu instrukcje włączające
        Else : 'tu instrukcje wyłączjące dla CheckBox1.Checked = False
        End If

 

Ad. 2: Można, np Me.Opacity = 1 oznacza że Opacity zostanie ustawione na 100%. Musisz pamiętać, że wartośś opacity jest wyrażona w procentach i jeśli chcesz ją zmienić za pomocą liczby, to możesz operować tylko w zakresie od 0 do 1. Jeśli chcesz użyć tekstboxa to zamiast "1" będzie "nazwatwojegotextboxa.Text". Możesz też spróbować z trackbarem (suwak) i w jego kodzie wprowadzić coś takiego: Me.Opacity = TrackBar1.Value / 10. Dziele przez dziesięć, bo domyślnie TrackBary sa wyskalowane na zakres od 0 do 10. Możesz je wsykalować po swojemu, ale trzeba pamiętać, że wartość trackbar może być tylko liczbą całkowitą (integer).

 

Ad. 3: Spróbuj zmienić w Properties właściwości "Minimum Size" i "Maksimum Size" na pary tych samych wartości.

Opublikowano

@up

odnosnie opacity wpadlem na jeszcze jeden pomysl:

przy teleporcie pojawil sie konwerter(Clcostam)

mozna by bylo w kodzie trackboxa ustawic zeby konwertowal to na procent

Da sie tak zrobic?

dawidqc8.gif

 

Opublikowano

O.G!

 

wez looknij na pierwsze strony topicu tam masz wszystkow ytlumaczone jesli chodzi o vb8

 

@edit

 

Czy ktos juz wie co powoduje brak dzialania hackow(wiem ze PB ale jak) i czy komus udalo sie temu zaradzic?!

 

A poza tym ponawiam pytanie jak zrobic(i czy mozna) aby liczba z text boxa byla konwertowana(CLcostam) na procenty aby mozna ustawic sobie opacity na 15,20,50 etc. %

dawidqc8.gif

 

Opublikowano

Moze ktos wzucic na np file front? z gory dzieki

EvANeScEnCe 4 EvEr

MpC FoRuM 4 EvEr

NaRuTo 4 EvEr

 

PoZdRo By KoReXuS ( Giermek 16 )

Opublikowano

MAm pytanko:

 

Jak zapisac w CE zmieniony kod gry(code cave) w exe lub dll

Poniewaz zrobilem juz Code cave, jump i wszystko dziala(nie kickuje) ale nie wiem jak to teraz zapisac

dawidqc8.gif

 

Opublikowano
MAm pytanko:

 

Jak zapisac w CE zmieniony kod gry(code cave) w exe lub dll

Poniewaz zrobilem juz Code cave, jump i wszystko dziala(nie kickuje) ale nie wiem jak to teraz zapisac

 

Fajnie, że udało Ci się coś zdziałać. Wcześniej pisałem o możliwości wprowadzania assemblera bezpośrednio w kodzie C++. Tylko tam jest to możliwe i nazywa się to bodajże inline ASM. W VB nie da się wprowadzić bloków ASM bezpośrednio, ale można zapisać to w inny sposób. Jak już pewnie zauważyłeś jeśli w CE wybierzesz "browse this memory region" to pojawi się nowe okienko w którym widnieją od lewej adresy, bajty i instrukcje assemblera (tzw opcodes). Bajty występują w grupach i reprezentują poszczególne instrukcje ASM.

 

Rozważmy jakiś przykład, żeby to jakoś zilustrować:

 

Adres: ---------- Bajty: ----------- Opcode:

00438CE4 ------- e9 d9 fc ff ff ----- jmp 004389c2

00438CE9 ------- cc --------------- int 3

00438CEA ------- ff 25 e0 f9 4a 00 - jmp dword ptr [004af9e0]

 

 

Bajty o wartościach (szesnastkowych) e9 d9 fc ff ff oznaczaja właśnie skok (jmp) z adresu 00438CE4 do adresu (&H) 004389c2. Ponieważ jest to 5 bajtów, to zajmą 5 komórek pamięci, zatem następna instrukcja ASM bedzie zaczynać się dopiero do adresu 00438CE4+5, czyli 00438CE9.

 

Możemy wprowadzać instrukcje ASM przypisując tylko odpowiednie bajty do odpowiednich komórek pamięci. Zanim zaczniesz to wprowadzać do swojego programu zrób sobie kopie tego, co zrobiłeś w CE albo innym debugerze i zapisz w notatniku (w CE prawy przycisk myszy na zaznaczonym obszarze i z menu "copy to clipboard" --> "bytes + opcodes" ).

 

Teraz pozostaje kwestia jak to zapisać. Można by spróbować bajt po bajcie za pomocą funkcji NOP z modułu, ale to dużo roboty, szczególnie jeśli instrukcji w code cave jest dużo. Pomyślałem, że fajnie byłoby to zapisać grupami bajtów, tak jak odpowiadają poszczególnym opkodom. Można to zrobić za pomocą tablicy bajtów. Miałem problemy z zapisywaniem dużych tablic w przypadku stosowania modułu z generatora, więc przerobiłem klasę z C# z funkcjami edycji pamięci na moduł w VB8 i dodałem pare nowych rzeczy. Możesz to dodać jako nowy moduł do projektu swojego hacka w VB8.

 

Tak wygląda mój moduł:

 

Imports System
 Imports System.Diagnostics
 Imports System.Runtime.InteropServices

 Namespace BibliotekaEdycjiPamieciProcesu
  Module Funkcje_Edycji_Pamieci
	  Public Class EdycjaPamieciAPI


		  <Flags()> _
		  Public Enum TypDostepuDoProcesu
			  PROCESS_TERMINATE = (1)
			  PROCESS_CREATE_THREAD = (2)
			  PROCESS_SET_SESSIONID = (4)
			  PROCESS_VM_OPERATION = (8)
			  PROCESS_VM_READ = (16)
			  PROCESS_VM_WRITE = (32)
			  PROCESS_DUP_HANDLE = (64)
			  PROCESS_CREATE_PROCESS = (128)
			  PROCESS_SET_QUOTA = (256)
			  PROCESS_SET_INFORMATION = (512)
			  PROCESS_QUERY_INFORMATION = (1024)
		  End Enum

		  <Flags()> _
		  Public Enum flAllocationType
			  Commit = &H1000
			  Reserve = &H2000
			  Reset = &H80000
			  'Large = &H20000000 //Allocates memory using large page support. 
			  Physical = &H400000 'This value must be used with MEM_RESERVE and no other values.
			  TopDown = &H100000 'Allocates memory at the highest possible address. 
		  End Enum

		  <Flags()> _
		  Public Enum flFreetype
			  Decommit = &H4000
			  Release = &H8000
		  End Enum

		  <Flags()> _
		  Public Enum flProtectType
			  PAGE_NOACCESS = &H1
			  PAGE_READONLY = &H2
			  PAGE_READWRITE = &H4
			  PAGE_WRITECOPY = &H8
			  PAGE_EXECUTE = &H10
			  PAGE_EXECUTE_READ = &H20
			  PAGE_EXECUTE_READWRITE = &H40
			  PAGE_EXECUTE_WRITECOPY = &H80
			  PAGE_GUARD = &H100
			  PAGE_NOCACHE = &H200
			  PROCESS_ALL_ACCESS = &H1F0FFF
		  End Enum

		  Public Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
		  Public Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
		  Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

		  '		HANDLE OpenProcess(
		  '			DWORD dwDesiredAccess,  // access flag
		  '			BOOL bInheritHandle,	// handle inheritance option
		  '			DWORD dwProcessId	   // process identifier
		  '			);
		  <DllImport("kernel32.dll")> _
		  Public Shared Function OpenProcess(ByVal dwDesiredAccess As UInt32, ByVal bInheritHandle As Int32, ByVal dwProcessId As UInt32) As IntPtr
		  End Function

		  '		BOOL CloseHandle(
		  '			HANDLE hObject   // handle to object
		  '			);
		  <DllImport("kernel32.dll")> _
		  Public Shared Function CloseHandle(ByVal hObject As IntPtr) As Int32
		  End Function

		  '		BOOL ReadProcessMemory(
		  '			HANDLE hProcess,			  // handle to the process
		  '			LPCVOID lpBaseAddress,		// base of memory area
		  '			LPVOID lpBuffer,			  // data buffer
		  '			SIZE_T nSize,				 // number of bytes to read
		  '			SIZE_T * lpNumberOfBytesRead  // number of bytes read
		  '			);
		  <DllImport("kernel32.dll")> _
		  Public Shared Function ReadProcessMemory(ByVal hProcess As IntPtr, ByVal lpBaseAddress As IntPtr, <[in](), Out()> _
  ByVal buffer As Byte(), ByVal size As UInt32, ByRef lpNumberOfBytesRead As IntPtr) As Int32
		  End Function

		  '		BOOL WriteProcessMemory(
		  '			HANDLE hProcess,				// handle to process
		  '			LPVOID lpBaseAddress,		   // base of memory area
		  '			LPCVOID lpBuffer,			   // data buffer
		  '			SIZE_T nSize,				   // count of bytes to write
		  '			SIZE_T * lpNumberOfBytesWritten // count of bytes written
		  '			);
		  <DllImport("kernel32.dll")> _
		  Public Shared Function WriteProcessMemory(ByVal hProcess As IntPtr, ByVal lpBaseAddress As IntPtr, <[in](), Out()> _
  ByVal buffer As Byte(), ByVal size As UInt32, ByRef lpNumberOfBytesWritten As IntPtr) As Int32
		  End Function


		  'LPVOID WINAPI VirtualAllocEx
		  'HANDLE hProcess,						  // handle to process
		  'LPVOID lpAddress,						 // the pointer that specifies a desired starting address for the region of pages that you want to allocate
		  ' if lpAddress is NULL, the function determines where to allocate the region
		  'SIZE_T dwSize,							// the size of the region of memory to allocate, in bytes
		  'DWORD flAllocationType,				   // MEM_COMMIT 0x1000 | MEM_RESERVE 0x2000 | MEM_RESET 0x80000 | 
		  'DWORD flProtect						   // The memory protection for the region of pages to be allocated.
		  ' PAGE_EXECUTE 0x10 | PAGE_EXECUTE_READ 0x20 | PAGE_EXECUTE_READWRITE 0x40 | PAGE_EXECUTE_WRITECOPY 0x80 | 
		  ' PAGE_NOACCESS 0x01 | PAGE_READONLY 0x02 | PAGE_READWRITE 0x04 | PAGE_WRITECOPY 0x08 |

		  <DllImport("kernel32.dll", SetLastError:=True, ExactSpelling:=True)> _
		  Public Shared Function VirtualAllocEx(ByVal hProcess As IntPtr, ByVal lpAddress As IntPtr, _
		  ByVal dwSize As UInteger, ByVal flAllocationType As UInteger, _
		  ByVal flProtect As flProtectType) As IntPtr
		  End Function

		  'VirtualFreeEx
		  'If lpAddress is the base address returned by VirtualAllocEx and dwSize is 0 (zero), the function decommits the entire region that is allocated by VirtualAllocEx. After that, the entire region is in the reserved state.
		  <DllImport("kernel32.dll", SetLastError:=True, ExactSpelling:=True)> _
		  Public Shared Function VirtualFreeEx(ByVal hProcess As IntPtr, ByVal lpAddress As IntPtr, _
		  ByVal dwSize As UIntPtr, ByVal dwFreeType As flFreetype) As Boolean
		  End Function

		  'VirtualProtectEx
		  <DllImport("kernel32.dll")> _
		  Public Shared Function VirtualProtectEx(ByVal hProcess As IntPtr, ByVal lpAddress As IntPtr, _
		  ByVal dwSize As UIntPtr, ByVal flNewProtect As flProtectType, ByRef lpflOldProtect As UInteger) As Boolean
		  End Function

		  'CreateRemoteThread
		  <StructLayout(LayoutKind.Sequential)> _
		  Structure SECURITY_ATTRIBUTES
			  Public nLength As Integer
			  Public lpSecurityDescriptor As IntPtr
			  Public bInheritHandle As Integer
		  End Structure

		  'DWORD dwCreationFlags,  //0-The thread runs immediately after creation.
		  <DllImport("kernel32.dll")> _
		  Public Shared Function CreateRemoteThread(ByVal hProcess As IntPtr, _
		  ByVal lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal dwStackSize As UInteger, _
		  ByVal lpStartAddress As IntPtr, ByVal lpParameter As IntPtr, _
		  ByVal dwCreationFlags As UInteger, ByVal lpThreadId As IntPtr) As IntPtr
		  End Function

		  'vKey
		  <DllImport("user32.dll")> _
		  Public Shared Function GetAsyncKeyState(ByVal vKey As Integer) As Short
		  End Function

	  End Class

	  Public Class EdycjaPamieci

		  Public Sub New()
		  End Sub

		  Public Property ReadProcess() As Process
			  Get
				  Return m_ReadProcess
			  End Get
			  Set(ByVal value As Process)
				  m_ReadProcess = value
			  End Set
		  End Property

		  Private m_ReadProcess As Process = Nothing

		  Private m_hProcess As IntPtr = IntPtr.Zero

		  Public Sub OpenProcess()
			  m_hProcess = EdycjaPamieciAPI.OpenProcess(32, 1, CInt(m_ReadProcess.Id))
			  Dim access As EdycjaPamieciAPI.TypDostepuDoProcesu
			  access = EdycjaPamieciAPI.TypDostepuDoProcesu.PROCESS_VM_READ Or EdycjaPamieciAPI.TypDostepuDoProcesu.PROCESS_VM_WRITE Or EdycjaPamieciAPI.TypDostepuDoProcesu.PROCESS_VM_OPERATION
			  m_hProcess = EdycjaPamieciAPI.OpenProcess(CInt(access), 1, CInt(m_ReadProcess.Id))
		  End Sub

		  Public Sub CloseHandle()
			  Dim iRetValue As Integer
			  iRetValue = EdycjaPamieciAPI.CloseHandle(m_hProcess)
			  If iRetValue = 0 Then
				  Throw New Exception("Nie udało się zamknąć uchwytu")
			  End If
		  End Sub

		  Public Function ReadProcessMemory(ByVal MemoryAddress As IntPtr, ByVal bytesToRead As UInteger, ByRef bytesRead As Integer) As Byte()
			  Dim buffer As Byte() = New Byte(bytesToRead - 1) {}

			  Dim ptrBytesRead As IntPtr
			  EdycjaPamieciAPI.ReadProcessMemory(m_hProcess, MemoryAddress, buffer, bytesToRead, ptrBytesRead)

			  bytesRead = ptrBytesRead.ToInt32()

			  Return buffer
		  End Function

		  Public Sub WriteProcessMemory(ByVal MemoryAddress As IntPtr, ByVal bytesToWrite As Byte(), ByRef bytesWritten As Integer)
			  Dim ptrBytesWritten As IntPtr
			  EdycjaPamieciAPI.WriteProcessMemory(m_hProcess, MemoryAddress, bytesToWrite, CInt(bytesToWrite.Length), ptrBytesWritten)

			  bytesWritten = ptrBytesWritten.ToInt32()
		  End Sub

		  Public Function VirtualAllocEx(ByVal MemoryAddress As Long, ByVal dwSize As Long) As Long
			  Dim adres As Long = EdycjaPamieciAPI.VirtualAllocEx(m_hProcess, MemoryAddress, dwSize, &H1000, EdycjaPamieciAPI.flProtectType.PAGE_READWRITE)
			  If MemoryAddress = 0 Then
				  Return adres
			  End If
		  End Function

		  Public Function VirtualProtect(ByVal MemoryAddress As Long, ByVal dwSize As Long, ByVal NewProtectType As EdycjaPamieciAPI.flProtectType) As UInteger
			  Dim lpflOldProtect As UInteger
			  EdycjaPamieciAPI.VirtualProtectEx(m_hProcess, MemoryAddress, dwSize, NewProtectType, lpflOldProtect)
			  Return lpflOldProtect
		  End Function

		  Public Sub VirtualFreeEx(ByVal MemoryAddress As Long, ByVal dwSize As Long)
			  EdycjaPamieciAPI.VirtualFreeEx(m_hProcess, MemoryAddress, dwSize, EdycjaPamieciAPI.flFreetype.Release)
		  End Sub

		  Public Function CreateRemoteThread(ByVal lpStartAddress As IntPtr, ByVal lpParameter As IntPtr) As IntPtr
			  Dim lpThreadId As IntPtr
			  Dim SA As New EdycjaPamieciAPI.SECURITY_ATTRIBUTES
			  SA.nLength = Len(SA)
			  SA.lpSecurityDescriptor = False
			  EdycjaPamieciAPI.CreateRemoteThread(m_hProcess, SA, 0, lpStartAddress, lpParameter, 0, lpThreadId)
			  Return lpThreadId
		  End Function

	  End Class
  End Module
 End Namespace

 

Moduł składa się z dwóch klas. W jednej klasie są funkcje API a w drugiej przerobione funkcje, korzystające z funkcji API.

Tak naprawdę z tego bajzlu będziemy potrzebowali tylko dwóch funkcji API to jest WriteProcessmemory i VirtualAllocEx. Ta pierwszą znasz, ale zwróc uwagę, że w jej deklaracji (<DllImport("kernel32.dll")> Public Shared Function WriteProcessMemory(ByVal hProcess As IntPtr, ByVal lpBaseAddress As IntPtr, <[in](), Out()> _ByVal buffer As Byte(), ByVal size As UInt32, ByRef lpNumberOfBytesWritten As IntPtr) As Int32) bufor zapisu jest tablicą bajtów (ByVal buffer As Byte()) a nie jak w starym module Integerem. Druga ważna rzecz, to funkcja VirtualAllocEx. W CE żeby zaalokować fragment pamięci pod codecave używałeś polecania "Allocate memory" - to jest dokładnie to samo.

 

Przejdźmy do zapisywania tablic. W formie projektu po Public Class Form1 dodaj coś takiego:

Dim preader As New BibliotekaEdycjiPamieciProcesu.Funkcje_Edycji_Pamieci.EdycjaPamieci

 

Zmienna preader będzie się odwoływała do funkcji z modułu. Teraz stwórz przycisk, który będzie tworzył Code Cave. W kodzie przycisku wprowadzimy teraz instrukcje otwierajace proces i Alokujace pamieć w nim.

 

       'zmienna do przechowywania informacji o zapisanych bajtach
          Dim bytewriten As Integer 
         'szukamy WarRocka
          Dim myprocess As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("WarRock")
         'jeśli Warrock jest właczony...
          If myprocess.Length <> 0 Then
         ...to otwieramy proces
              preader.ReadProcess = myprocess(0)
              preader.OpenProcess()
  
         'teraz alokujemy pamięć; ja zaalokowałem np 50 bajtów poczawszy od adresu &H2AE0000 - zwykle nic tam nie ma
         'Ty zaalokuj tyle ile będa zajmować Twoje instrukcje ASM; mozesz zawsze więcej, nic się nie stanie    
              preader.VirtualAllocEx(&H2AE0000, 50)
  
         'deklaruje tablice bajtów z jednym elementem - &H90 inaczej funcja nop w ASM
              Dim nopbajt As Byte() = {&H90}
         'na wszelki wypadek wszystkie 50 zaalokawanych wcześniej bajtów zapisałem nop'em
         'poczawszy od adresu &H2AE0000 do &H2AE0000 + 50
              For i = &H2AE0000 To &H2AE0000 + 50
                  preader.WriteProcessMemory(i, nopbajt, bytewriten)
              Next
         'teraz dla przykładu zapisze jakąś tablice batów o nazwie mem1 poczawszy od adresu &H2AE0000
              Dim mem1 As Byte() = {&HF, &H79, &HF}
              preader.WriteProcessMemory(&H2AE0000, mem1, bytewriten)
  
          Else : MsgBox("Proces nie jest uruchomiony")
          End If

 

Zapisałem tylko jedną tablice dla przykładu. Ale powiedzmy, że chcesz zapisać te 3 instrukcje, które wcześniej przytaczałem, czyli:

 

Adres: ---------- Bajty: ----------- Opcode:

00438CE4 ------- e9 d9 fc ff ff ----- jmp 004389c2

00438CE9 ------- cc --------------- int 3

00438CEA ------- ff 25 e0 f9 4a 00 - jmp dword ptr [004af9e0]

 

Wtedy mem1, albo inna zmienna będzie zawierać bajty:

Dim mem1 As Byte() = {&He9, &Hd9, &Hfc, &Hff, &Hff}

I zapiszemy to w adresie &H2AE0000 tak:

preader.WriteProcessMemory(&H2AE0000, mem1, bytewriten)

 

Pod spodem nastepna tablica mem2 dla instrukcji int3:

Dim mem2 As Byte() = {&Hcc}

I zapisujemy 5 adresów dalej, bo tyle bajtów zajmuje wcześniejsza instrukcja:

preader.WriteProcessMemory(&H2AE0000 + 5, mem2, bytewriten)

 

I następna tablica mem3:

Dim [b]mem3[/b] As Byte() = {&Hff, &H25, &He0, &Hf9, &H4a, &H00}

Zapis w adresie 5 + 1 od początkowego, bo 5 bajtów pierwsza instrukcja zajmowała a druga 1:

preader.WriteProcessMemory(&H2AE0000 + 6, mem3, bytewriten)

 

Jakbyś miał jakieś pytania, to wal. Nie sprawdzałem tego do końca pod kątem code cave, ale powinno działać (o ile obejdziesz PunkBustera).

 

Edit (nie pierwszy i pewnie nie ostatni):

Jeszcze jedna ważna rzecz. Alokujesz pamięć pod Code Cave, ale co z instrukcjami w miejscu pamięci z którego skaczesz do "Jaskini"? Może to już zauważyłeś, ale gdy robisz jmp do Code Cave z instrukcji, która zajmuje powiedzmy 8 bajtów a Twój jmp <adres> zajmuje 5 bajtów, to te 3 ostatnie bajty z pierwszej instrukcji zamieniają się w nop'y. Wydaje mi si, że też byłoby dobrze zanim nadpiszesz jump'a w tym obszarze "wyczyścić" cały obszar, który się zmieni za pomocą nop'ów, np pętlą "For", tak jak to robiliśmy wcześniej dla Code Cave.

 

P.S. Moduł może Ci się jeszcze przydać - wrzuciłem deklaracje wszystkich funkcji potrzebnych do wstrzykiwania dll'ek. Nad samym wstrzykiwaniem jeszcze pracuję, ale gdyby kiedyś się udało to zrobić + obejść kickujące opcje w codecave, to prawdopodobnie hack będzie nie do ruszenia przez PB :-)

Opublikowano

Hmm

no to pierwsze pytanie

jak rozumiem wszystkie adresy zapisales w code cave

no ale przecie jmp musi byc w kodzie orginalnym bo inaczej nie bedzie do niego odwolania(do jaskini uogulniajac)

Moze cos zle zrozumialem

powiedzmy ze przedstawie Ci moj przyklad:

kickuje 0 dealy

szukamy i jest:

0051372A - f6 c6 04                   - test dh,04

biezrzemy jeszcze jakies adresy na okolo

gora:

00513724 - 8b 90 88 02 00 00          - mov edx,[eax+00000288]

i dol:

0051372D - 66 8b 89 e6 00 00 00       - mov cx,[ecx+000000e6]

teraz tworzymy Code cava (moj jest w tym przypadku 09440000) na tym pierwszym (mov edx)

dajemy jmp i wszystkie wartosci(2 pozostale) wprowadzamy funkcja assembly do code cave'a

edytuje jmp powrotny zeby wracal po ostatnim adresie

wobec tego jakie adresy musze wpraowadzic do vb8

 

Tutaj sa wszystkie adresy(te 3 pierwsze i jmp.)

00513724 - 8b 90 88 02 00 00          - mov edx,[eax+00000288]
0051372A - f6 c6 04                   - test dh,04
0051372D - 66 8b 89 e6 00 00 00       - mov cx,[ecx+000000e6]
00513724 - e9 d7 c8 f2 08             - jmp 09440000
09440023 - e9 01 37 0d f7             - jmp 00513729

dawidqc8.gif

 

Opublikowano

Po tym jak otworzysz proces i zaalokujesz pamięć możesz z powodzeniem zapisać jump w oryginalnym kodzie. Procedura jest ta sama, czyli deklarujesz jakąś tablice i za pomocą preader.WriteProcessMemory zapisujesz. Na tym przykładzie który podałeś to by wygladało mniej więcej tak:

 

Skok z oryginalnalnego kodu:

 

zamieniasz mov edx,[eax+00000288] na jmp 09440000. Zwróc uwage, że jmp 09440000 ma mniej bajtów, niż mov edx,[eax+00000288]. mov edx,[eax+00000288] ma sześć bajtów (8b 90 88 02 00 00) a jmp 09440000 pięć (e9 d7 c8 f2 08). Zatem jak zamienisz jeden na drugi, to ostatni bajt musisz zamienić na nop czyli 90, bo ten ostatni jest niepotrzebny. Gdybyś go zostawił mógłby zmienić sens funkcji. Najlepiej zanim zapisze jump wyczyscić wszystkie 6 bajtów nopami, np tak:

 

Dim nopbajt As Byte() = {&H90}

For i = [b]&H00513724[/b] To [b]&H00513729[/b]
    preader.WriteProcessMemory(i, nopbajt, bytewriten)
Next

 

Zaczynamy pętle od &H00513724 bo w tym adresie zaczyna się mov edx,[eax+00000288] a kończymy na &H00513729 bo w następnym adresie zaczyna się już 0 delay.

 

teraz mozemy zapisać jmp 09440000 w adresie &H00513724:

 

              Dim mem1 As Byte() = {&He9, &Hd7, &Hc8, &Hf2, &H08}
              preader.WriteProcessMemory(&H00513724, mem1, bytewriten)

 

Mamy już skok do code cave, to teraz trzeba zapisać to, co w code cave miało iść, czyli przepisujemy kod, który zmieniliśmy jumpem, kod 0-delay i skok za 0-delay w oryginalnym kodzie. Przyjmuje, że tworzysz code cave w adresie &H09440000.

 

Code Cave:

 

Dim mem2 As Byte() = {&H8b, &H90, &H88, &H02, &H00, &H00} ' to tablica dla mov edx,[eax+00000288]' zniszczyliśmy ja jumpem i musimy ja odtworzyc w code cave 
preader.WriteProcessMemory(&H09440000, mem2, bytewriten) 'zapisujemy w pierwszy adresie code cave

Dim mem3 As Byte() = {&Hf6, &Hc6, &H04} ' to tablica dla test dh,04 czyli nasz 0-delay
preader.WriteProcessMemory(&H09440006, mem3, bytewriten) 'zapisujemy 6 adresów dalej, bo tyle zajmuje instrukcja dla mov edx,[eax+00000288]

Dim mem4 As Byte() = {tutaj bajty dla "jmp 0051372D"} ' to tablica dla jmp 0051372D czyli skok za 0-delay w oryginalnym kodzie
  preader.WriteProcessMemory(&H09440009, mem4, bytewriten) 'zapisujemy 3 adresy dalej, bo tyle zajmuje instrukcja dla test dh,04

Nie mozesz użyc na końcu code cave jmp 00513729, bo 00513729 jest przed 0051372A, czyli 0-delay w oryginalnym kodzie. Innymi słowy wrócisz przed 0-delay i niczego tym nie obejdziesz.

Opublikowano

juz sie cieszylem ze mi sie uda ale nie pyklo

kiedy wlaczam bypass(code cave) tzn. aktywuje go a nie uruchamiam program to sie warrock scina

wlaczam go po obnizeniu PB(ten sposob budziaka)

oto:

Button do bypassa

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        'zmienna do przechowywania informacji o zapisanych bajtach
        Dim bytewriten As Integer
        'szukamy WarRocka
        Dim myprocess As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("WarRock")
        'jeśli Warrock jest właczony...
        If myprocess.Length <> 0 Then
            '...to otwieramy proces
            preader.ReadProcess = myprocess(0)
            preader.OpenProcess()

            'teraz alokujemy pamięć; ja zaalokowałem np 50 bajtów poczawszy od adresu &H2AE0000 - zwykle nic tam nie ma
            'Ty zaalokuj tyle ile będa zajmować Twoje instrukcje ASM; mozesz zawsze więcej, nic się nie stanie    
            preader.VirtualAllocEx(&H9440000, 50)

            'deklaruje tablice bajtów z jednym elementem - &H90 inaczej funcja nop w ASM
            Dim nopbajt As Byte() = {&H90}
            'na wszelki wypadek wszystkie 50 zaalokawanych wcześniej bajtów zapisałem nop'em
            'poczawszy od adresu &H2AE0000 do &H2AE0000 + 50
            For i = &H944000 To &H9440032
                preader.WriteProcessMemory(i, nopbajt, bytewriten)

            Next
            For i = &H513724 To &H513729
                preader.WriteProcessMemory(i, nopbajt, bytewriten)
            Next
            Dim mem1 As Byte() = {&HE9, &HD7, &HC8, &HF2, &H8}
            preader.WriteProcessMemory(&H513724, mem1, bytewriten)
            Dim mem2 As Byte() = {&H8B, &H90, &H88, &H2, &H0, &H0} ' to tablica dla mov edx,[eax+00000288]' zniszczyliśmy ja jumpem i musimy ja odtworzyc w code cave 
            preader.WriteProcessMemory(&H9440000, mem2, bytewriten) 'zapisujemy w pierwszy adresie code cave

            Dim mem3 As Byte() = {&HF6, &HC6, &H4} ' to tablica dla test dh,04 czyli nasz 0-delay
            preader.WriteProcessMemory(&H9440006, mem3, bytewriten) 'zapisujemy 6 adresów dalej, bo tyle zajmuje instrukcja dla mov edx,[eax+00000288]

            Dim mem4 As Byte() = {&HE9, &H1F, &H37, &HD, &HF7} ' to tablica dla jmp 0051372D czyli skok za 0-delay w oryginalnym kodzie
            preader.WriteProcessMemory(&H9440009, mem4, bytewriten) 'zapisujemy 3 adresy dalej, bo tyle zajmuje instrukcja dla test dh,04
        End If
    End Sub

 

Pozostale rzeczy to modul standardowy(wygenerowany w programie), modul do Code cava(ten Twoj)

dawidqc8.gif

 

Opublikowano

Mam ooooogromniasty problem :D Tak wlasciwie zrobilem Hacka z chyba wszystkimi opcjami podstawowymi i pare - 4 vipowskie...

no i w tym problem ze szukam bledow juz dluuuuugo... no i nie moge sie dopatrzec dziala mi tylko Player Boxes, U. Ammo (^^), Antikick, Invisible....

wiec da sie zyc ale no kurde mam wiele innych fajnych opcji ktore chcialbym uruchomic...

 

i jesli ktos nie ma co robic... albo lubi uczyc nobkow to albo na gg moze mi pomoc.. albo moge wyslac hacka i niech mi powie co jest zle...

(tak wlasciwie to nie wiem czy niektore hacki mi dzialaja bo nie mialem okazji sprawdzic - No Bounds.. ? -BUEHAHA...

 

no i otoooz.... aha i dziala mi tez dziwinie HeadShot...

(dziala w taki sposob ze dodaje tylko ikonke HeadShota przy nicku zabitego goscia ale i tak musze w niego strzelac-- gosc nie umiera za 1 strzalem. O!)

 

z gory dziekuje za pomoc :)

98% młodzieży słucha hip-hopu, techno, rap'u. Jestem w tych 2% odmieńców i dobrze mi z tym :)

 

PUNKS NOT DEAD!

 

LastFM

Opublikowano

Ale np skąd wiesz że z tego adresu : WriteFloatPointer(&HADR_PLAYERBASE, &HOFS_STAMINA, Wartość)

zrobic taki : ZGTPTSDHS(&H13941F0, &H28C, 100)

Fan Battlefield Bad Company 2!

 

Chcesz pograć? Napisz - 6634424

 

Dzwoń - szopekxd13

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...