_F.K.B_RISMAN_ ADMIN
Jumlah posting : 93 Points : 282 Join date : 19.12.10 Age : 29 Lokasi : Perawang - Riau
| Subyek: Tutor Membuat Injection Fri Jan 14, 2011 12:31 am | |
| introduction: pada edisi ini sebagian dari kode berasal dari sourcecode Gesp v.1.3 thank to bro eRGe yg udah share sourcecodenya. Alat yang diperlukan: - Microsoft Visual Basic 6 (VB6), bisa portable atau instalable, bisa cari2 dimari http://n3.vc/E8H atau cari sendiri di google banyak koq yg share. Lebih disarankan memakai instalable karena lebih komplit khususnya jika lebih pengen serius mendalami vb6 karena komponennya lebih lengkap, tetapi portable pun ngga masalah kalau cuman membuat injector yg ada pada simplequickinjector. Tutor Pembuatan Injectorsebelumnya buka dulu Vb6, dan pilih standard exe. ok A. Pembuatan Form dan Design- bikin 1 form, 1 label dan 1 timer, jadinya seperti ini Enlarge this imageReduce this image Click to see fullsizesilakan dikreasikan formnya semaunya , ini contoh yg gw bikin : Enlarge this imageReduce this image Click to see fullsizesyarat harus ada 1 label dan 1 timer pada form. selanjutnya, B. Code dan Modulesklik kanan pada form --> pilih view code. isikan kode berikut pada form1, Code: | | Option Explicit 'Win 2k, ME, XP Private Const GWL_EXSTYLE As Long = (-20) Private Const WS_EX_LAYERED As Long = &H80000 Private Const LWA_ALPHA As Long = &H2 Private winHwnd As Long Private NamaDll As String Private Declare Function GetWindowLongA Lib "USER32" (ByVal hwnd As Long, _ ByVal nIndex As Long) As Long Private Declare Function SetWindowLongA Lib "USER32" (ByVal hwnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Private Declare Function SetLayeredWindowAttributes Lib "USER32" (ByVal hwnd As Long, _ ByVal crey As Byte, _ ByVal bAlpha As Byte, _ ByVal dwFlags As Long) As Long
Private Sub silakandiedit()
'--------------------------------------------------------------- ' silakan diedit bagian kode dibawah ini '---------------------------------------------------------------
Me.Caption = "SQI by rifqi36@N3" 'pengaturan caption atau nama injector Opacity 150, Me 'pengaturan transparent form MinVal = 20: MaxVal = 255 NamaDll = App.Path & "" & "suntix.dll" 'isikan nama library, contoh: suntix.dll FileTarget = "PointBlank.exe" '----------------------------------------------------------------
End Sub
'fungsi transparent form Private Sub Opacity(Value As Byte, _ Frm As Form)
Dim MaxVal As Byte Dim MinVal As Byte
On Error GoTo ErrorHandler MinVal = 20 MaxVal = 255 If Value > MaxVal Then Value = MaxVal End If If Value < MinVal Then Value = MinVal End If SetWindowLongA Frm.hwnd, GWL_EXSTYLE, GetWindowLongA(Frm.hwnd, GWL_EXSTYLE) Or WS_EX_LAYERED SetLayeredWindowAttributes Frm.hwnd, 0, Value, LWA_ALPHA ErrorHandler:
Exit Sub
End Sub
Private Sub Form_Load()
App.TaskVisible = False 'hidden aplikasi dari window taskmanager terserah mau true/false 'tetapi tidak hidden di process 'perintah menghindari aplikasi dijalankan 2 kali 'pada saat yg bersamaan '---------------------------------------- If App.PrevInstance Then End End If '---------------------------------------- silakandiedit '--> memanggil perintah pada -->> Private Sub silakandiedit()
End Sub
Private Sub Timer1_Timer()
winHwnd = FindWindow(vbNullString, "HSUpdate") 'mencari jendela hsupdate If Not winHwnd = 0 Then 'jika ditemukan NTProcessList 'deteksi process pointblank InjectExecute (NamaDll) 'inject library End 'tutup otomatis injector Else 'jika tidak Label1.Caption = "Waiting NamaGame..." 'sabar menanti End If
End Sub |
- bikin 2 modul, klik menu project --> add modules, modul pertama berinama modinjection, pada modinjection, masukkan code berikut: Code: | | Option Explicit Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, _ ByVal lpProcName As String) As Long Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long Private Declare Function VirtualAllocEx Lib "kernel32" (ByVal hProcess As Long, _ lpAddress As Any, _ ByVal dwSize As Long, _ ByVal fAllocType As Long, _ flProtect As Long) As Long Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, _ ByVal lpBaseAddress As Any, _ lpBuffer As Any, _ ByVal nSize As Long, _ lpNumberOfBytesWritten As Long) As Long Private Declare Function CreateRemoteThread Lib "kernel32" (ByVal ProcessHandle As Long, _ lpThreadAttributes As Long, _ ByVal dwStackSize As Long, _ ByVal lpStartAddress As Any, _ ByVal lpParameter As Any, _ ByVal dwCreationFlags As Long, _ lpThreadID As Long) As Long Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Sub InjectDll(DllPath As String, _ ProsH As Long)
Dim DLLVirtLoc As Long Dim DllLength As Long
Dim inject As Long Dim LibAddress As Long Dim CreateThread As Long Dim ThreadID As Long Dim Bla As VbMsgBoxResult g_loadlibary: LibAddress = GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA") If LibAddress = 0 Then Bla = MsgBox("Can't find LoadLibrary API from kernel32.dll", vbYesNo, "ERROR") If Bla = vbYes Then GoTo g_loadlibary Else 'NOT BLA... Exit Sub End If End If g_virutalallocex: DllLength = Len(DllPath) DLLVirtLoc = VirtualAllocEx(ProsH, 0, DllLength, &H1000, ByVal &H4) If DLLVirtLoc = 0 Then Bla = MsgBox("VirtualAllocEx API failed! - try again?", vbYesNo, "ERROR") If Bla = vbYes Then GoTo g_virutalallocex Else 'NOT BLA... Exit Sub End If End If g_writepmemory: inject = WriteProcessMemory(ProsH, ByVal DLLVirtLoc, ByVal DllPath, DllLength, vbNull) If inject = 0 Then Bla = MsgBox("Failed to Write DLL to Process! - try again?", vbYesNo, "ERROR") If Bla = vbYes Then GoTo g_writepmemory Else 'NOT BLA... Exit Sub End If End If g_creatthread: CreateThread = CreateRemoteThread(ProsH, ByVal 0, 0, ByVal LibAddress, ByVal DLLVirtLoc, 0, ThreadID) If CreateThread = 0 Then Bla = MsgBox("Failed to Create Thead! - try again?", vbYesNo, "ERROR") If Bla = vbYes Then GoTo g_creatthread Else 'NOT BLA... Exit Sub End If End If QuickInjector.Label1.Caption = "Injected Successful!" MsgBox "Dll Injection Successful!", vbInformation, "Success" End Sub
Public Sub InjectExecute(ByVal sFlDLL As String)
Dim lProcInject As Long
lProcInject = OpenProcess(PROCESS_ALL_ACCESS, 0, IdTargetOne) If lProcInject > "0" Then Call InjectDll(sFlDLL, lProcInject) ' prjSuspend.cmdInjector.Enabled = False End If Call CloseHandle(lProcInject)
End Sub |
dan modul kedua diberi nama modprocess. isikan kode berikut: Code: | | Option Explicit Public FileTarget As String Public sFlDLL As String Public IdTargetOne As Long Private Const TH32CS_SNAPHEAPLIST As Long = &H1 Private Const TH32CS_SNAPPROCESS As Long = &H2 Private Const TH32CS_SNAPTHREAD As Long = &H4 Private Const TH32CS_SNAPMODULE As Long = &H8 Private Const TH32CS_SNAPALL As Double = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE) Private Const MAX_PATH As Integer = 260 Public Const PROCESS_ALL_ACCESS As Long = &H1F0FFF Private Type PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwFlags As Long szExeFile As String * MAX_PATH End Type Private Type MODULEENTRY32 dwSize As Long th32ModuleID As Long th32ProcessID As Long GlblcntUsage As Long ProccntUsage As Long modBaseAddr As Long modBaseSize As Long hModule As Long szModule As String * 256 szExePath As String * 260 End Type Private Type THREADENTRY32 dwSize As Long cntUsage As Long th32ThreadID As Long th32OwnerProcessID As Long tpBasePri As Long tpDeltaPri As Long dwFlags As Long End Type Private Const THREAD_SUSPEND_RESUME As Long = &H2 Private hThread As Long Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, _ ByVal lProcessID As Long) As Long Private Declare Function Module32First Lib "kernel32" (ByVal hSnapShot As Long, _ uProcess As MODULEENTRY32) As Long Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long Private Declare Function GetFileTitle Lib "COMDLG32.DLL" Alias "GetFileTitleA" (ByVal lpszFile As String, _ ByVal lpszTitle As String, _ ByVal cbBuf As Integer) As Integer Private Declare Function Thread32First Lib "kernel32.dll" (ByVal hSnapShot As Long, _ ByRef lpte As THREADENTRY32) As Boolean Private Declare Function Thread32Next Lib "kernel32.dll" (ByVal hSnapShot As Long, _ ByRef lpte As THREADENTRY32) As Boolean Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _ ByVal bInheritHandle As Long, _ ByVal dwProcessId As Long) As Long Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, _ ByVal uExitCode As Long) As Long Public Declare Function FindWindow Lib "USER32" Alias "FindWindowA" (ByVal Classname As String, _ ByVal WindowName As String) As Long Private Declare Function PostMessage Lib "USER32" Alias "PostMessageA" (ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) As Long Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, _ uProcess As PROCESSENTRY32) As Long Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, _ uProcess As PROCESSENTRY32) As Long Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Declare Function OpenThread Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, _ ByVal bInheritHandle As Boolean, _ ByVal dwThreadId As Long) As Long Private Declare Function ResumeThread Lib "kernel32.dll" (ByVal hThread As Long) As Long Private Declare Function SuspendThread Lib "kernel32.dll" (ByVal hThread As Long) As Long
Public Function NTProcessList() As Long
Dim FileName As String
Dim ExePath As String Dim hProcSnap As Long Dim hModuleSnap As Long Dim lProc As Long Dim uProcess As PROCESSENTRY32 Dim uModule As MODULEENTRY32 On Error Resume Next hProcSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&) uProcess.dwSize = Len(uProcess) lProc = Process32First(hProcSnap, uProcess) Do While lProc If uProcess.th32ProcessID <> 0 Then hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, uProcess.th32ProcessID) uModule.dwSize = Len(uModule) Module32First hModuleSnap, uModule If hModuleSnap > 0 Then ExePath = StripNulls(uModule.szExePath) FileName = GetFName(ExePath) If FileTarget = FileName Then IdTargetOne = uProcess.th32ProcessID End If End If End If lProc = Process32Next(hProcSnap, uProcess) Loop Call CloseHandle(hProcSnap) Call CloseHandle(lProc) On Error GoTo 0
End Function
Private Function StripNulls(ByVal sStr As String) As String
StripNulls = Left$(sStr, lstrlen(sStr))
End Function
Public Function GetFName(fn) As String Dim f%, n% GetFName = fn f% = InStr(fn, "") Do While f% n% = f% f% = InStr(n% + 1, fn, "") Loop If n% > 0 Then GetFName = Mid$(fn, n% + 1) End Function
Private Function Thread32Enum(ByRef Thread() As THREADENTRY32, _ ByVal lProcessID As Long) As Long
Dim THREADENTRY32 As THREADENTRY32 Dim hThreadSnap As Long Dim lThread As Long
On Error Resume Next ReDim Thread(0) As THREADENTRY32 hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, lProcessID) THREADENTRY32.dwSize = Len(THREADENTRY32) If Thread32First(hThreadSnap, THREADENTRY32) = False Then Thread32Enum = -1 Exit Function Else ReDim Thread(lThread) As THREADENTRY32 Thread(lThread) = THREADENTRY32 End If Do If Thread32Next(hThreadSnap, THREADENTRY32) = False Then Exit Do Else lThread = lThread + 1 ReDim Preserve Thread(lThread) Thread(lThread) = THREADENTRY32 End If Loop Thread32Enum = lThread Call CloseHandle(hThreadSnap) On Error GoTo 0
End Function |
jika udah selesai save semuanya berinama sesukanya. jika udah selesai klik menu file pilih make project exe* ket: *nama project exe yang dibuat misalnya SQI.exe. selesai, untuk icon pada injector diatas, klik pada form1, trus liat di properties form1 pada bagian icon, lebih jelas nya liat gambar pada spoiler untuk mengganti icon: Enlarge this imageReduce this image Click to see fullsizenb: tidak semua icon support untuk aplikasi di vb6. cara laen : jika sudah jadi exe bisa menggunakan resource hacker (ResHack). ganti icon kemudian compile ke exe lagi lewat resource hacker. cuman ngga semua aplikasi bisa direshack iconnya jika aplikasi tsb memiliki proteksi tertentu oleh si pembuat. Enlarge this imageReduce this image Click to see fullsizepilih menu project -> properties. misalnya nama project gw : SQI, maka ntar pilih menu project --> SQI propertis. disitu muncul properties, ada tab general, tab make, dst. pilih tab make sbb: Enlarge this imageReduce this image Click to see fullsizeseterusnya tinggal isi value dari company name, dan file description, sesuai selera, jika udah klik ok. misalnya company name diisi:Nyit-Nyit.Net, dan File Descriptionnya : Auto Inject Dll for PointBlank.exe pada tutor diatas adalah dengan cara otomatis injection, untuk manual injector dengan kode diatas juga bisa dengan menghilangkan timernya dan buat commandbutton misalnya namanya command1, beri caption pada propertisnya misal inject, trus double click command1 tersebut dan akan masuk ke bagian code sbb: Code: | | Private Sub Command1_Click()
End Sub |
-kemudian tinggal copas code dari timer dan dimasukkan ke command1, sehingga kode command1 menjadi sbb: Code: | | Private Sub Command1_Click() winHwnd = FindWindow(vbNullString, "HSUpdate") 'mencari jendela hsupdate If Not winHwnd = 0 Then 'jika ditemukan NTProcessList 'deteksi process pointblank InjectExecute (NamaDll) 'inject library End 'tutup otomatis injector Else 'jika tidak Label1.Caption = "Waiting NamaGame..." 'sabar menanti End If End Sub
|
selesai, jadi timernya kan dah dihapus, jadi saat game dijalankan, pilih timing yg tepat, klik inject (command1). jika ada yg kurang jelas bisa ditanyakan kemudian. semoga berguna bagi yang pengen bikin injector sendiri sebagai basic atau dasar pembuatan injector untuk selanjutnya bisa dikembangkan sendiri. tambahan: - sorry kalau tulisan gw belepotan ga mahir nulis. - please no junk, jika berguna jangan lupa tekan tombol thank ya. - harap kepada teman2 hanya bertanya kalau bisa hanya berkaitan mengenai injector ini pada khususnya dan atau library yg mau diinject pada umumnya. - bagi yg telah advance mengenai vb6, gw harap bantuannya untuk memberikan masukkannya yg lebih bagus lagi. ga nolak ko kalo di kasih +++ credit n3 | |
|