Merhaba Kendi Projemden Kodlar ile Devam Ediyoruz ..
Kodları Sizin New Modulune Göre Kodları Ayarladım
Gerekenler :
1 Command Button [ Caption Yukle Yapabilirsiniz]
1 Text Box [ Text Kısmına Knight Online Client Yazın ]
1 Tane Command Button Açalım İçine Bunu Yazın
Kod:
KO_TITLE = Text1.Text ' ko_title = text1
GetHandle
If KO_HANDLE > 0 Then
Command1.Enabled = False ' yükle butonunu pasiv et
Text1.Enabled = False ' yüklenin yanındaki text1 i pasiv et
Else ' hayırsa
MsgBox "Pencere bulunamadi", vbCritical 'kritik hata notuyla pencere bulunamadı de!
End If
'funcition BySertac
Modul Açalım Yeni içine de
Kod:
'handle
Public KO_HANDLE As Long
'title
Public KO_TITLE As String
Public Declare Function GetAsyncKeyState Lib "User32" (ByVal vKey As Long) As Integer
Private Const PROCESS_ALL_ACCESS As Long = &H1F0FFF
Public Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function ReadProcessMem Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByRef lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Public Declare Function WriteProcessMem Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByRef lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "User32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function CloseHandle Lib "Kernel32.dll" (ByVal Handle As Long) As Long
Private Declare Function EnumProcesses Lib "PSAPI.DLL" (ByRef lpidProcess As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
Private Declare Function GetModuleFileNameExA Lib "PSAPI.DLL" (ByVal hProcess As Long, ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As Long
Private Declare Function EnumProcessModules Lib "PSAPI.DLL" (ByVal hProcess As Long, ByRef lphModule As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const PROCESS_QUERY_INFORMATION As Long = 1024
Private Const PROCESS_VM_READ As Long = 16
Private Const MAX_PATH As Long = 260
Public Function GetProcessByName(ByVal EXEName As String) As Long
Dim cb As Long
Dim cbNeeded As Long
Dim NumElements As Long
Dim ProcessIDs() As Long
Dim cbNeeded2 As Long
Dim NumElements2 As Long
Dim Modules(1 To 200) As Long
Dim ModuleName As String
Dim hProcess As Long
Dim i As Long
cb = 8
cbNeeded = 96
Do While cb <= cbNeeded
cb = cb * 2
ReDim ProcessIDs(cb / 4) As Long
EnumProcesses ProcessIDs(1), cb, cbNeeded
Loop
NumElements = cbNeeded / 4
For i = 1 To NumElements
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, ProcessIDs(i))
If hProcess <> 0 Then
If EnumProcessModules(hProcess, Modules(1), 200, cbNeeded2) <> 0 Then
ModuleName = Space(MAX_PATH)
If (InStr(1, Left$(ModuleName, GetModuleFileNameExA(hProcess, Modules(1), ModuleName, 500)), EXEName) > 0) Then
GetProcessByName = hProcess
Exit Function
End If
End If
End If
CloseHandle hProcess
Next
End Function
Public Sub GetHandle2()
KO_HANDLE = GetProcessByName("KnightOnLine.exe")
End Sub
Public Sub GetHandle()
GetWindowThreadProcessId FindWindow(vbNullString, KO_TITLE), KO_PID
KO_HANDLE = OpenProcess(PROCESS_ALL_ACCESS, False, KO_PID)
End Sub
Public Function ReadLong(Addr As Long) As Long 'read a 4 byte value
Dim Value As Long
ReadProcessMem KO_HANDLE, Addr, Value, 4, 0&
ReadLong = Value
End Function
Public Function ReadFloat(Addr As Long) As Long 'read a float value
Dim Value As Single
ReadProcessMem KO_HANDLE, Addr, Value, 4, 0&
ReadFloat = Value
End Function
Sub ReadByteArray(Addr As Long, pmem() As Byte, pSize As Long)
Dim Value As Byte
ReDim pmem(1 To pSize) As Byte
ReadProcessMem KO_HANDLE, Addr, pmem(1), pSize, 0&
End Sub
Public Function WriteFloat(Addr As Long, Val As Single) 'write a float value
WriteProcessMem KO_HANDLE, Addr, Val, 4, 0&
End Function
Public Function WriteLong(Addr As Long, Val As Long) ' write a 4 byte value
WriteProcessMem KO_HANDLE, Addr, Val, 4, 0&
End Function
Public Function WriteByteArray(pAddy As Long, pmem() As Byte, pSize As Long)
WriteProcessMem KO_HANDLE, pAddy, pmem(LBound(pmem)), pSize, 0&
End Function
Function FindDLLFunc(pDLLName As String, pFuncName As String) As Long
Dim LoadAddr As Long
Dim ProcAddr As Long
Dim offset As Long
Dim RemoteAddr As Long
LoadAddr = LoadLibrary(pDLLName)
If LoadAddr = 0 Then End
ProcAddr = GetProcAddress(LoadAddr, pFuncName)
offset = ProcAddr - LoadAddr
FreeLibrary LoadAddr
RemoteAddr = FindModuleHandle(pDLLName)
Do While RemoteAddr = 0
RemoteAddr = FindModuleHandle(pDLLName)
DoEvents
Loop
FindDLLFunc = RemoteAddr + offset
End Function
Public Function FindModuleHandle(ModuleName As String) As Long
Dim hModules(1 To 256) As Long
Dim BytesReturned As Long
Dim ModuleNumber As Byte
Dim TotalModules As Byte
Dim FileName As String * 128
Dim ModName As String
EnumProcessModules KO_HANDLE, hModules(1), 1024, BytesReturned
TotalModules = BytesReturned / 4
For ModuleNumber = 1 To TotalModules
GetModuleFileNameExA KO_HANDLE, hModules(ModuleNumber), FileName, 128
ModName = Left(FileName, InStr(FileName, Chr(0)) - 1)
If UCase(Right(ModName, Len(ModuleName))) = UCase(ModuleName) Then
FindModuleHandle = hModules(ModuleNumber)
End If
Next
End Function
alıntıdır