المشاركات : 227
المواضيع 118
الإنتساب : Nov 2012
السمعة :
0
الشكر: 0
تم شكره 1 مرات في 1 مشاركات
31-01-13, 05:46 AM
(آخر تعديل لهذه المشاركة : 31-01-13, 08:04 AM {2} بواسطة شركة الفرقان.)
كود :
<DllImport("kernel32", CharSet:=CharSet.Ansi, SetLastError:=True, ExactSpelling:=True)> _
Private Shared Function ReadProcessMemory(ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
End Function
<DllImport("kernel32", CharSet:=CharSet.Ansi, SetLastError:=True, ExactSpelling:=True)> _
Private Shared Function OpenProcess(ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer
End Function
Private Function Hwnd() As Object
Throw New NotImplementedException
End Function
<DllImport("kernel32", CharSet:=CharSet.Ansi, SetLastError:=True, ExactSpelling:=True)> _
Private Shared Function CloseHandle(ByVal hObject As Integer) As Integer
End Function
<DllImport("kernel32", CharSet:=CharSet.Ansi, SetLastError:=True, ExactSpelling:=True)> _
Private Shared Function WriteProcessMemory(ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
End Function
Public Function Tibia_Hwnd() As Long
Dim processesByName As Process() = Process.GetProcessesByName("")
If (processesByName.Length = 0) Then
Return 0
End If
Return processesByName(0).Id
End Function
Private Function Memory_WriteLong(ByVal Address As Integer, ByVal vBuffer As Long) As Long
Dim num As Long
Dim ptr As IntPtr = DirectCast(Form1.OpenProcess(&H438, 0, CInt(Me.Tibia_Hwnd)), IntPtr)
Dim lpBuffer As Integer = CInt(vBuffer)
Dim lpNumberOfBytesWritten As Integer = 0
Form1.WriteProcessMemory(CInt(ptr), Address, lpBuffer, 4, lpNumberOfBytesWritten)
vBuffer = lpBuffer
Return vBuffer
Form1.CloseHandle(CInt(ptr))
Return num
End Function
Private Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
If Me.CheckBox1.Checked Then
Me.Memory_WriteLong(&H478802, Conversions.ToLong("-1946401317"))
Else
Me.Memory_WriteLong(&H478802, Conversions.ToLong("-1946401319"))
End If
End Sub
المشاركات : 273
المواضيع 29
الإنتساب : Sep 2012
السمعة :
12
الشكر: 105
تم شكره 271 مرات في 77 مشاركات
عدلت على الكود حيث لا يوجد أخطاء في الـError List أما عن آلية عمل الكود فلم أختبرها، تركتها لك.
كود :
Imports System.Runtime.InteropServices
Public Class Form1
Private Function Hwnd() As Object
Throw New NotImplementedException
End Function
<DllImport("kernel32", CharSet:=CharSet.Ansi, SetLastError:=True, ExactSpelling:=True)> _
Private Shared Function CloseHandle(ByVal hObject As Integer) As Integer
End Function
<DllImport("kernel32", CharSet:=CharSet.Ansi, SetLastError:=True, ExactSpelling:=True)> _
Private Shared Function WriteProcessMemory(ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
End Function
<DllImport("kernel32.dll")> _
Private Shared Function OpenProcess(ByVal dwDesiredAccess As ProcessAccessFlags, <MarshalAs(UnmanagedType.Bool)> ByVal bInheritHandle As Boolean, ByVal dwProcessId As Integer) As IntPtr
End Function
Public Function Tibia_Hwnd() As Long
Dim processesByName As Process() = Process.GetProcessesByName("")
If (processesByName.Length = 0) Then
Return 0
End If
Return processesByName(0).Id
End Function
Private Function Memory_WriteLong(ByVal Address As Integer, ByVal vBuffer As Long) As Long
Dim ptr As IntPtr = DirectCast(Form1.OpenProcess(&H438, 0, CInt(Me.Tibia_Hwnd)), IntPtr)
Dim lpBuffer As Integer = CInt(vBuffer)
Dim lpNumberOfBytesWritten As Integer = 0
Form1.WriteProcessMemory(CInt(ptr), Address, lpBuffer, 4, lpNumberOfBytesWritten)
vBuffer = lpBuffer
Return vBuffer
Form1.CloseHandle(CInt(ptr))
Return Nothing
End Function
Private Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
If Me.CheckBox1.Checked Then
Me.Memory_WriteLong(&H478802, CLng("-1946401317"))
Else
Me.Memory_WriteLong(&H478802, CLng("-1946401319"))
End If
End Sub
<Flags()> _
Enum ProcessAccessFlags As UInteger
All = &H1F0FFF
Terminate = &H1
CreateThread = &H2
VMOperation = &H8
VMRead = &H10
VMWrite = &H20
DupHandle = &H40
SetInformation = &H200
QueryInformation = &H400
Synchronize = &H100000
End Enum
End Class
المشاركات : 227
المواضيع 118
الإنتساب : Nov 2012
السمعة :
0
الشكر: 0
تم شكره 1 مرات في 1 مشاركات
Aly El-Haddad كتب :عدلت على الكود حيث لا يوجد أخطاء في الـError List أما عن آلية عمل الكود فلم أختبرها، تركتها لك.
كود :
Imports System.Runtime.InteropServices
Public Class Form1
Private Function Hwnd() As Object
Throw New NotImplementedException
End Function
<DllImport("kernel32", CharSet:=CharSet.Ansi, SetLastError:=True, ExactSpelling:=True)> _
Private Shared Function CloseHandle(ByVal hObject As Integer) As Integer
End Function
<DllImport("kernel32", CharSet:=CharSet.Ansi, SetLastError:=True, ExactSpelling:=True)> _
Private Shared Function WriteProcessMemory(ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
End Function
<DllImport("kernel32.dll")> _
Private Shared Function OpenProcess(ByVal dwDesiredAccess As ProcessAccessFlags, <MarshalAs(UnmanagedType.Bool)> ByVal bInheritHandle As Boolean, ByVal dwProcessId As Integer) As IntPtr
End Function
Public Function Tibia_Hwnd() As Long
Dim processesByName As Process() = Process.GetProcessesByName("")
If (processesByName.Length = 0) Then
Return 0
End If
Return processesByName(0).Id
End Function
Private Function Memory_WriteLong(ByVal Address As Integer, ByVal vBuffer As Long) As Long
Dim ptr As IntPtr = DirectCast(Form1.OpenProcess(&H438, 0, CInt(Me.Tibia_Hwnd)), IntPtr)
Dim lpBuffer As Integer = CInt(vBuffer)
Dim lpNumberOfBytesWritten As Integer = 0
Form1.WriteProcessMemory(CInt(ptr), Address, lpBuffer, 4, lpNumberOfBytesWritten)
vBuffer = lpBuffer
Return vBuffer
Form1.CloseHandle(CInt(ptr))
Return Nothing
End Function
Private Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
If Me.CheckBox1.Checked Then
Me.Memory_WriteLong(&H478802, CLng("-1946401317"))
Else
Me.Memory_WriteLong(&H478802, CLng("-1946401319"))
End If
End Sub
<Flags()> _
Enum ProcessAccessFlags As UInteger
All = &H1F0FFF
Terminate = &H1
CreateThread = &H2
VMOperation = &H8
VMRead = &H10
VMWrite = &H20
DupHandle = &H40
SetInformation = &H200
QueryInformation = &H400
Synchronize = &H100000
End Enum
End Class
جزاك الله الف خير اخى و جعله فى مزان حاسناتك
|