Advertisement
Sixem

.NET Winamp Module Hook

Jul 2nd, 2013
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 13.38 KB | None | 0 0
  1. 'Addresses Are OUTDATED, Find Them With Cheat Engine
  2.  
  3. Module Hook
  4.     Public Pr As String = "winamp"
  5.     Private Declare Function ReadMemoryByte Lib "kernel32" Alias "ReadProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Byte, Optional ByVal Size As Integer = 2, Optional ByRef Bytes As Integer = 0) As Byte
  6.     Private Declare Function ReadMemoryInteger Lib "kernel32" Alias "ReadProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Integer, Optional ByVal Size As Integer = 4, Optional ByRef Bytes As Integer = 0) As Integer
  7.     Private Declare Function ReadMemoryFloat Lib "kernel32" Alias "ReadProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Single, Optional ByVal Size As Integer = 4, Optional ByRef Bytes As Integer = 0) As Single
  8.     Private Declare Function ReadMemoryDouble Lib "kernel32" Alias "ReadProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Double, Optional ByVal Size As Integer = 8, Optional ByRef Bytes As Integer = 0) As Double
  9.     Private Declare Function ReadMemoryString Lib "kernel32" Alias "ReadProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As IntPtr, Optional ByVal Size As Integer = 8, Optional ByRef Bytes As Integer = 0) As IntPtr
  10.  
  11.     Private Declare Function WriteMemoryByteArray Lib "kernel32" Alias "WriteProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Byte(), Optional ByVal Size As Integer = 2, Optional ByRef Bytes As Integer = 0) As Byte()
  12.     Private Declare Function WriteMemoryByte Lib "kernel32" Alias "WriteProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Byte, Optional ByVal Size As Integer = 2, Optional ByRef Bytes As Integer = 0) As Byte
  13.     Private Declare Function WriteMemoryInteger Lib "kernel32" Alias "WriteProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Integer, Optional ByVal Size As Integer = 4, Optional ByRef Bytes As Integer = 0) As Integer
  14.     Private Declare Function WriteMemoryFloat Lib "kernel32" Alias "WriteProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Single, Optional ByVal Size As Integer = 2, Optional ByRef Bytes As Integer = 0) As Single
  15.     Private Declare Function WriteMemoryDouble Lib "kernel32" Alias "WriteProcessMemory" (ByVal Handle As Integer, ByVal Address As Integer, ByRef Value As Double, Optional ByVal Size As Integer = 2, Optional ByRef Bytes As Integer = 0) As Double
  16.     Public Function Get_Process_SessionId()
  17.         Dim p() As Process = Process.GetProcessesByName(Pr)
  18.         For Each proc As Process In p
  19.             Return proc.SessionId
  20.         Next
  21.         Return 0
  22.     End Function
  23.     Public Function Get_Process_PID()
  24.         Dim p() As Process = Process.GetProcessesByName(Pr)
  25.         For Each proc As Process In p
  26.             Return proc.Id
  27.         Next
  28.         Return 0
  29.     End Function
  30.     Public Function Get_Process_Responding()
  31.         Dim p() As Process = Process.GetProcessesByName(Pr)
  32.         For Each proc As Process In p
  33.             Return proc.Responding
  34.         Next
  35.         Return 0
  36.     End Function
  37.     Public Function Get_Process_Title()
  38.         Dim p() As Process = Process.GetProcessesByName(Pr)
  39.         For Each proc As Process In p
  40.             Return proc.MainWindowTitle
  41.         Next
  42.         Return 0
  43.     End Function
  44.     Public Function Get_Process_Priority()
  45.         Dim p() As Process = Process.GetProcessesByName(Pr)
  46.         For Each proc As Process In p
  47.             Return proc.PriorityClass
  48.         Next
  49.         Return 0
  50.     End Function
  51.     Public Function Read_Full_Length_Minute()
  52.         Dim FullSec As Integer = ReadInteger(Pr, &H4A912C)
  53.         Dim Timespan_Full As TimeSpan = TimeSpan.FromSeconds(FullSec)
  54.         If Timespan_Full.Seconds.ToString.Length = 1 Then
  55.             Return CStr(Timespan_Full.Minutes & ":" & "0" & Timespan_Full.Seconds)
  56.         Else
  57.             Return CStr(Timespan_Full.Minutes & ":" & Timespan_Full.Seconds)
  58.         End If
  59.     End Function
  60.     Public Function Read_Current_Length_Minute()
  61.         Dim CurrSec As Integer = ReadInteger(Pr, &H4A7DD8)
  62.         Dim Timespan_Current As TimeSpan = TimeSpan.FromSeconds(CurrSec)
  63.         If Timespan_Current.Seconds.ToString.Length = 1 Then
  64.             Return CStr(Timespan_Current.Minutes & ":" & "0" & Timespan_Current.Seconds)
  65.         Else
  66.             Return CStr(Timespan_Current.Minutes & ":" & Timespan_Current.Seconds)
  67.         End If
  68.     End Function
  69.     Public Function Read_Current_Length_Second()
  70.         Return ReadInteger(Pr, &H4A7DD8)
  71.     End Function
  72.     Public Function Read_Kbps()
  73.         Return ReadInteger(Pr, &H4BB32C)
  74.     End Function
  75.     Public Function Read_Full_Length_Seconds()
  76.         Return ReadInteger(Pr, &H4A912C)
  77.     End Function
  78.     Public Function ReadByte(ByVal EXENAME As String, ByVal Address As Integer) As Byte
  79.         Dim Value As Byte
  80.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  81.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  82.             If Handle <> 0 Then
  83.                 ReadMemoryByte(Handle, Address, Value)
  84.             End If
  85.         End If
  86.         Return Value
  87.     End Function
  88.  
  89.     Public Function ReadInteger(ByVal EXENAME As String, ByVal Address As Integer) As Integer
  90.         Dim Value As Integer
  91.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  92.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  93.             If Handle <> 0 Then
  94.                 ReadMemoryInteger(Handle, Address, Value)
  95.             End If
  96.         End If
  97.         Return Value
  98.     End Function
  99.  
  100.     Public Function ReadFloat(ByVal EXENAME As String, ByVal Address As Integer) As Single
  101.         Dim Value As Single
  102.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  103.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  104.             If Handle <> 0 Then
  105.                 ReadMemoryFloat(Handle, Address, Value)
  106.             End If
  107.         End If
  108.         Return Value
  109.     End Function
  110.  
  111.     Public Function ReadDouble(ByVal EXENAME As String, ByVal Address As Integer) As Double
  112.         Dim Value As Double
  113.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  114.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  115.             If Handle <> 0 Then
  116.                 ReadMemoryByte(Handle, Address, Value)
  117.             End If
  118.         End If
  119.         Return Value
  120.     End Function
  121.  
  122.     Public Function ReadPointerByte(ByVal EXENAME As String, ByVal Pointer As Integer, ByVal ParamArray Offset As Integer()) As Byte
  123.         Dim Value As Byte
  124.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  125.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  126.             If Handle <> 0 Then
  127.                 For Each I As Integer In Offset
  128.                     ReadMemoryInteger(Handle, Pointer, Pointer)
  129.                     Pointer += I
  130.                 Next
  131.                 ReadMemoryByte(Handle, Pointer, Value)
  132.             End If
  133.         End If
  134.         Return Value
  135.     End Function
  136.  
  137.     Public Function ReadPointerInteger(ByVal EXENAME As String, ByVal Pointer As Integer, ByVal ParamArray Offset As Integer()) As Integer
  138.         Dim Value As Integer
  139.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  140.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  141.             If Handle <> 0 Then
  142.                 For Each I As Integer In Offset
  143.                     ReadMemoryInteger(Handle, Pointer, Pointer)
  144.                     Pointer += I
  145.                 Next
  146.                 ReadMemoryInteger(Handle, Pointer, Value)
  147.             End If
  148.         End If
  149.         Return Value
  150.     End Function
  151.  
  152.     Public Function ReadPointerFloat(ByVal EXENAME As String, ByVal Pointer As Integer, ByVal ParamArray Offset As Integer()) As Single
  153.         Dim Value As Single
  154.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  155.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  156.             If Handle <> 0 Then
  157.                 For Each I As Integer In Offset
  158.                     ReadMemoryInteger(Handle, Pointer, Pointer)
  159.                     Pointer += I
  160.                 Next
  161.                 ReadMemoryFloat(Handle, Pointer, Value)
  162.             End If
  163.         End If
  164.         Return Value
  165.     End Function
  166.  
  167.     Public Function ReadPointerDouble(ByVal EXENAME As String, ByVal Pointer As Integer, ByVal ParamArray Offset As Integer()) As Double
  168.         Dim Value As Double
  169.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  170.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  171.             If Handle <> 0 Then
  172.                 For Each I As Integer In Offset
  173.                     ReadMemoryInteger(Handle, Pointer, Pointer)
  174.                     Pointer += I
  175.                 Next
  176.                 ReadMemoryDouble(Handle, Pointer, Value)
  177.             End If
  178.         End If
  179.         Return Value
  180.     End Function
  181.  
  182.     Public Sub WriteByte(ByVal EXENAME As String, ByVal Address As Integer, ByVal Value As Byte)
  183.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  184.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  185.             If Handle <> 0 Then
  186.                 WriteMemoryByte(Handle, Address, Value)
  187.             End If
  188.         End If
  189.     End Sub
  190.     Public Sub WriteByteArray(ByVal EXENAME As String, ByVal Address As Integer, ByVal Value As Byte())
  191.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  192.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  193.             If Handle <> 0 Then
  194.                 WriteMemoryByteArray(Handle, Address, Value)
  195.             End If
  196.         End If
  197.     End Sub
  198.  
  199.     Public Sub WriteInteger(ByVal EXENAME As String, ByVal Address As Integer, ByVal Value As Integer)
  200.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  201.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  202.             If Handle <> 0 Then
  203.                 WriteMemoryInteger(Handle, Address, Value)
  204.             End If
  205.         End If
  206.     End Sub
  207.  
  208.     Public Sub WriteFloat(ByVal EXENAME As String, ByVal Address As Integer, ByVal Value As Single)
  209.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  210.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  211.             If Handle <> 0 Then
  212.                 WriteMemoryFloat(Handle, Address, Value)
  213.             End If
  214.         End If
  215.     End Sub
  216.  
  217.     Public Sub WriteDouble(ByVal EXENAME As String, ByVal Address As Integer, ByVal Value As Double)
  218.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  219.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  220.             If Handle <> 0 Then
  221.                 WriteMemoryDouble(Handle, Address, Value)
  222.             End If
  223.         End If
  224.     End Sub
  225.  
  226.     Public Sub WritePointerByte(ByVal EXENAME As String, ByVal Pointer As Integer, ByVal Value As Byte, ByVal ParamArray Offset As Integer())
  227.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  228.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  229.             If Handle <> 0 Then
  230.                 For Each I As Integer In Offset
  231.                     ReadMemoryInteger(Handle, Pointer, Pointer)
  232.                     Pointer += I
  233.                 Next
  234.                 WriteMemoryByte(Handle, Pointer, Value)
  235.             End If
  236.         End If
  237.     End Sub
  238.  
  239.     Public Sub WritePointerInteger(ByVal EXENAME As String, ByVal Pointer As Integer, ByVal Value As Integer, ByVal ParamArray Offset As Integer())
  240.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  241.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  242.             If Handle <> 0 Then
  243.                 For Each I As Integer In Offset
  244.                     ReadMemoryInteger(Handle, Pointer, Pointer)
  245.                     Pointer += I
  246.                 Next
  247.                 WriteMemoryInteger(Handle, Pointer, Value)
  248.             End If
  249.         End If
  250.     End Sub
  251.  
  252.     Public Sub WritePointerFloat(ByVal EXENAME As String, ByVal Pointer As Integer, ByVal Value As Single, ByVal ParamArray Offset As Integer())
  253.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  254.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  255.             If Handle <> 0 Then
  256.                 For Each I As Integer In Offset
  257.                     ReadMemoryInteger(Handle, Pointer, Pointer)
  258.                     Pointer += I
  259.                 Next
  260.                 WriteMemoryFloat(Handle, Pointer, Value)
  261.             End If
  262.         End If
  263.     End Sub
  264.     Public Sub WritePointerDouble(ByVal EXENAME As String, ByVal Pointer As Integer, ByVal Value As Double, ByVal ParamArray Offset As Integer())
  265.         If Process.GetProcessesByName(EXENAME).Length <> 0 Then
  266.             Dim Handle As Integer = Process.GetProcessesByName(EXENAME)(0).Handle
  267.             If Handle <> 0 Then
  268.                 For Each I As Integer In Offset
  269.                     ReadMemoryInteger(Handle, Pointer, Pointer)
  270.                     Pointer += I
  271.                 Next
  272.                 WriteMemoryDouble(Handle, Pointer, Value)
  273.             End If
  274.         End If
  275.  
  276.     End Sub
  277. End Module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement