Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Conquer Online 2 > CO2 Programming
You last visited: Today at 23:03

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[HELP] Visual Basic.NET 05/08 - Read Memory

Discussion on [HELP] Visual Basic.NET 05/08 - Read Memory within the CO2 Programming forum part of the Conquer Online 2 category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Dec 2006
Posts: 37
Received Thanks: 8
[HELP] Visual Basic.NET 05/08 - Read Memory

Hi!
I want to learn how to read the memory of Conquer (later in the future i want to learn how to write aswell but i can figure that out later).

So what i need help with is this source i have found.
It's hard to find Conquer cheat sources which actually are written in Visual Basic.NET so thats why i took this Warcraft III example and i thought of using it to read from Conquer.

I ripped it and changed the process name from "war3" to "Conquer" and tried to use it right away but as you might think, it didn't work.

So if someone please can help me to use this code (or any other code) to read the memory to get access to things such as HP, [Mana], Stamina, EXP, and more basic stuff.

Thanks!
//Zeelia

Code:
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer
    Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
    Private Declare Function ReadProcessMemory Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Integer) As Integer
    Const PROCESS_ALL_ACCESS = &H1F0FFF

    Public Sub GetName()
        'From here too where I put END, is where its the same as above.
        Try
            Dim Address As Integer, vBuffer As Long
            Dim enc As New System.Text.ASCIIEncoding
            Dim myProcesses As Process() = Process.GetProcessesByName("war3")
            If myProcesses.Length = 0 Then
                Status.Text = "Warcraft III is not running."
                Exit Sub
            End If
            Dim processHandle As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, myProcesses(0).Id)
            If processHandle = IntPtr.Zero Then
                Status.Text = "Failed to open Warcraft III process."
                Exit Sub
            End If
            Address = 724
            Do
                ReadProcessMemory(processHandle, Address, vBuffer, 4, 0)
                If vBuffer = 1463898675 Then
                    Me.Icon = My.Resources.ROC
                    NotifyIcon.Icon = My.Resources.ROC
                    Address -= 32
                    Exit Do
                ElseIf vBuffer = 1462982736 Then
                    Me.Icon = My.Resources.TFT
                    NotifyIcon.Icon = My.Resources.TFT
                    Address -= 32
                    Exit Do
                Else
                    Address += 65536
                End If
            Loop
            'END
            'Below this is what has changed from WriteName.
            'We declare ret as a Byte Array. We declare it as an array by putting () after Byte.
            Dim ret As Byte() = Nothing
            'We make sure that the CurrentName textbox is nothing. That way when we are converting the integer to a string, we arent &='ing onto the textbox.
            CurrentName.Text = ""
            'We are now going to start our loop, increase the Address by 1 each time, and read the process memory.
            For i As Integer = 0 To 15
                'Read the memory.
                ReadProcessMemory(processHandle, Address + i, vBuffer, 1, 0)
                'Now we need to take vBuffer and get the bytes from it.
                ret = BitConverter.GetBytes(vBuffer)
                'Then convert ret to a readable string.
                'Then we add the new string to the Current Name textbox.
                CurrentName.Text &= System.Text.Encoding.ASCII.GetString(ret).Replace("RAW", "")
            Next
            'Then we close the process so warcraft III doesnt get any errors.
            CloseHandle(processHandle)
            'Then we need to let the user know that Warcraft III is running fine.
            Status.Text = "Warcraft III is running."
        Catch ex As Exception
            'If we happen to get any errors, we will set the status label's text to the exceptions (error) (ex.message).
            Status.Text = ex.Message
            'Then we need to exit the sub so we dont get any more errors.
            Exit Sub
        End Try
    End Sub
Quote:
You can find the whole source at:

Zeelia is offline  
Thanks
1 User
Old 07/29/2009, 17:21   #2
 
elite*gold: 0
Join Date: May 2009
Posts: 98
Received Thanks: 30
If you are still in the copy/paste stage of programming then you really need to start smaller...
high7 is offline  
Old 07/29/2009, 21:01   #3
 
elite*gold: 0
Join Date: Dec 2006
Posts: 37
Received Thanks: 8
Hi!
Yes I know but I have no idea where or how to start, I might be able to find something about reading memory but its hard to find for VB.NET and people usually connect this with hacks/cheats so there isn't much information out there.

However, I will go on and search the basics on how to read memory in VB.NET but I'm gonna need help on which addresses to read. Maybe you can give me some tips?
Thanks!
//Zeelia
Zeelia is offline  
Old 07/29/2009, 22:03   #4
 
elite*gold: 0
Join Date: Feb 2008
Posts: 90
Received Thanks: 8
zeelia , take my advice, first try to start with some simpler things such as making and caculator or something like that ...
Birthday Cake is offline  
Old 07/29/2009, 23:09   #5
 
elite*gold: 0
Join Date: Dec 2006
Posts: 37
Received Thanks: 8
@Birthday_Cake
Hi! I am not an beginner in programming VB.NET, nor am I advanced programmer. You could say I'm an intermediate.

So I just need some help to figure out how to read from the memory, thats all.
I just pasted that piece of code in my first post because in it, there is a readmemory function. However, I don't know how to apply this code to work with Conquer.
//Zeelia
Zeelia is offline  
Old 07/30/2009, 23:34   #6
 
elite*gold: 0
Join Date: May 2009
Posts: 98
Received Thanks: 30
Quote:
Originally Posted by Zeelia View Post
@Birthday_Cake
Hi! I am not an beginner in programming VB.NET, nor am I advanced programmer. You could say I'm an intermediate.

So I just need some help to figure out how to read from the memory, thats all.
I just pasted that piece of code in my first post because in it, there is a readmemory function. However, I don't know how to apply this code to work with Conquer.
//Zeelia
That sounds no where near intermediate... Sounds like you are still a beginner.
high7 is offline  
Old 07/31/2009, 00:13   #7
 
elite*gold: 0
Join Date: Mar 2009
Posts: 427
Received Thanks: 479
as everyone here has said... if ur trying to copy from another program, and just simply change it from warcarft to conquer... then u have a loooooooong way to go before understanding how reading/writing memory works... go back, and start with something simpler
ookamocka is offline  
Old 07/31/2009, 03:15   #8
 
elite*gold: 0
Join Date: Dec 2006
Posts: 37
Received Thanks: 8
Hi!
No I don't think I should do something simpler, I want to do this to learn.
So as I usually do when I want to learn, try things out.

So please, c'mon, help me out on this one.

I created a new project, googled a bit and read the MSDN library about memory reading.
This is what I have so far:
Code:
    Function Hook()
        aProcess = Process.GetProcessesByName("Conquer") ''Give the ID MY WAY
        ProcessID = aProcess(0).Id

        If OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID) Then
            ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID)
            If debugmode = True Then MsgBox("Success hooking!" & vbCrLf & "Hooked: " & aProcess(0).ProcessName & "(" & ProcessID & ")")
            MsgBox(OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID))
            fReadProcessMemory("&H56D134")
        End If
        Return Nothing
    End Function

    Function fReadProcessMemory(ByVal MemAddress As String, Optional ByVal BufferSize As Integer = 16)
        Dim Addresses As Integer = CInt(MemAddress)
        Dim VarHolder(BufferSize) As Byte
        Call ReadProcessMemory(ProcessHandle, Addresses, VarHolder(0), BufferSize, NULL)
        ''Final Return (IN MSGBOX)
        MsgBox(System.Text.UnicodeEncoding.Unicode.GetString(VarHolder))
        Return Nothing
    End Function
And simply, what I do is to call the function Hook() when my application loads.
But the function ReadProcessMemory returns null value so I think I've got the memory address wrong. I got the memory address I'm using above from Cheat Engine. I've also tried to use the 5065 CO version memory address which I got from ma-global.inf but of course, that wouldn't work.

So if someone only could tell me if the code I'm using above is correct, I would be happy. I know that I need to find the correct pointer to the memory address.

By the way: I'm trying to find out the character name with the code above.

Thanks!
//Zeelia
Zeelia is offline  
Old 07/31/2009, 04:08   #9
 
elite*gold: 0
Join Date: May 2009
Posts: 98
Received Thanks: 30
Quote:
Originally Posted by Zeelia View Post
No I don't think I should do something simpler, I want to do this to learn.
You are not going to learn to ride a bike when you don't even know how to crawl yet...
high7 is offline  
Old 07/31/2009, 05:47   #10
 
elite*gold: 0
Join Date: Mar 2009
Posts: 427
Received Thanks: 479
Quote:
Originally Posted by high7 View Post
You are not going to learn to ride a bike when you don't even know how to crawl yet...
this
ookamocka is offline  
Old 07/31/2009, 07:13   #11
 
elite*gold: 0
Join Date: Dec 2006
Posts: 37
Received Thanks: 8
Okay first of all i already know how to crawl
2. You're right... i don't know how to bike =(

And if you guys don't wanna help me that's okay, I'm not gonna put down this project, I'm going to continue with or without your help.

That's my 3 cents.

I've read Michael's source (you know, *M* Multihack) and the code I have in post #8 is really all you need to read from the memory so I know I'm on the right track and I'm going to figure it out.
//Zeelia
Zeelia is offline  
Old 07/31/2009, 07:29   #12
 
elite*gold: 0
Join Date: Mar 2009
Posts: 427
Received Thanks: 479
ur using a honda's key to try and open a ford and all you did was write ford on the key hoping it'll open the ford. . . the keys both do the same thing, but it's for 2 different things! -_-
ookamocka is offline  
Old 07/31/2009, 07:34   #13
 
elite*gold: 0
Join Date: Mar 2009
Posts: 427
Received Thanks: 479
ne way... here's one for AutoIt... should be very similar to VB...

Code:
#include-once
#region _Memory
;==================================================================================
; AutoIt Version:	3.1.127 (beta)
; Language:			English
; Platform:			All Windows
; Author:			Nomad
; Requirements:		These functions will only work with beta.
;==================================================================================
; Credits:	wOuter - These functions are based on his original _Mem() functions.
;			But they are easier to comprehend and more reliable.  These
;			functions are in no way a direct copy of his functions.  His
;			functions only provided a foundation from which these evolved.
;==================================================================================
;
; Functions:
;
;==================================================================================
; Function:			_MemoryOpen($iv_Pid[, $iv_DesiredAccess[, $iv_InheritHandle]])
; Description:		Opens a process and enables all possible access rights to the
;					process.  The Process ID of the process is used to specify which
;					process to open.  You must call this function before calling
;					_MemoryClose(), _MemoryRead(), or _MemoryWrite().
; Parameter(s):		$iv_Pid - The Process ID of the program you want to open.
;					$iv_DesiredAccess - (optional) Set to 0x1F0FFF by default, which
;										enables all possible access rights to the
;										process specified by the Process ID.
;					$iv_InheritHandle - (optional) If this value is TRUE, all processes
;										created by this process will inherit the access
;										handle.  Set to 1 (TRUE) by default.  Set to 0
;										if you want it FALSE.
; Requirement(s):	None.
; Return Value(s): 	On Success - Returns an array containing the Dll handle and an
;								 open handle to the specified process.
;					On Failure - Returns 0
;					@Error - 0 = No error.
;							 1 = Invalid $iv_Pid.
;							 2 = Failed to open Kernel32.dll.
;							 3 = Failed to open the specified process.
; Author(s):		Nomad
; Note(s):
;==================================================================================
Func _MemoryOpen($iv_Pid, $iv_DesiredAccess = 0x1F0FFF, $iv_InheritHandle = 1)
	
	If Not ProcessExists($iv_Pid) Then
		SetError(1)
        Return 0
	EndIf
	
	Local $ah_Handle[2] = [DllOpen('kernel32.dll')]
	
	If @Error Then
        SetError(2)
        Return 0
    EndIf
	
	Local $av_OpenProcess = DllCall($ah_Handle[0], 'int', 'OpenProcess', 'int', $iv_DesiredAccess, 'int', $iv_InheritHandle, 'int', $iv_Pid)
	
	If @Error Then
        DllClose($ah_Handle[0])
        SetError(3)
        Return 0
    EndIf
	
	$ah_Handle[1] = $av_OpenProcess[0]
	
	Return $ah_Handle
	
EndFunc

;==================================================================================
; Function:			_MemoryRead($iv_Address, $ah_Handle[, $sv_Type])
; Description:		Reads the value located in the memory address specified.
; Parameter(s):		$iv_Address - The memory address you want to read from. It must
;								  be in hex format (0x00000000).
;					$ah_Handle - An array containing the Dll handle and the handle
;								 of the open process as returned by _MemoryOpen().
;					$sv_Type - (optional) The "Type" of value you intend to read.
;								This is set to 'dword'(32bit(4byte) signed integer)
;								by default.  See the help file for DllStructCreate
;								for all types.  An example: If you want to read a
;								word that is 15 characters in length, you would use
;								'char[16]' since a 'char' is 8 bits (1 byte) in size.
; Return Value(s):	On Success - Returns the value located at the specified address.
;					On Failure - Returns 0
;					@Error - 0 = No error.
;							 1 = Invalid $ah_Handle.
;							 2 = $sv_Type was not a string.
;							 3 = $sv_Type is an unknown data type.
;							 4 = Failed to allocate the memory needed for the DllStructure.
;							 5 = Error allocating memory for $sv_Type.
;							 6 = Failed to read from the specified process.
; Author(s):		Nomad
; Note(s):			Values returned are in Decimal format, unless specified as a
;					'char' type, then they are returned in ASCII format.  Also note
;					that size ('char[size]') for all 'char' types should be 1
;					greater than the actual size.
;==================================================================================
Func _MemoryRead($iv_Address, $ah_Handle, $sv_Type = 'dword')
	
	If Not IsArray($ah_Handle) Then
		SetError(1)
        Return 0
	EndIf
	
	Local $v_Buffer = DllStructCreate($sv_Type)
	
	If @Error Then
		SetError(@Error + 1)
		Return 0
	EndIf
	
	DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
	
	If Not @Error Then
		Local $v_Value = DllStructGetData($v_Buffer, 1)
		Return $v_Value
	Else
		SetError(6)
        Return 0
	EndIf
	
EndFunc

;==================================================================================
; Function:			_MemoryWrite($iv_Address, $ah_Handle, $v_Data[, $sv_Type])
; Description:		Writes data to the specified memory address.
; Parameter(s):		$iv_Address - The memory address which you want to write to.
;								  It must be in hex format (0x00000000).
;					$ah_Handle - An array containing the Dll handle and the handle
;								 of the open process as returned by _MemoryOpen().
;					$v_Data - The data to be written.
;					$sv_Type - (optional) The "Type" of value you intend to write.
;								This is set to 'dword'(32bit(4byte) signed integer)
;								by default.  See the help file for DllStructCreate
;								for all types.  An example: If you want to write a
;								word that is 15 characters in length, you would use
;								'char[16]' since a 'char' is 8 bits (1 byte) in size.
; Return Value(s):	On Success - Returns 1
;					On Failure - Returns 0
;					@Error - 0 = No error.
;							 1 = Invalid $ah_Handle.
;							 2 = $sv_Type was not a string.
;							 3 = $sv_Type is an unknown data type.
;							 4 = Failed to allocate the memory needed for the DllStructure.
;							 5 = Error allocating memory for $sv_Type.
;							 6 = $v_Data is not in the proper format to be used with the
;								 "Type" selected for $sv_Type, or it is out of range.
;							 7 = Failed to write to the specified process.
; Author(s):		Nomad
; Note(s):			Values sent must be in Decimal format, unless specified as a
;					'char' type, then they must be in ASCII format.  Also note
;					that size ('char[size]') for all 'char' types should be 1
;					greater than the actual size.
;==================================================================================
Func _MemoryWrite($iv_Address, $ah_Handle, $v_Data, $sv_Type = 'dword')
	
	If Not IsArray($ah_Handle) Then
		SetError(1)
        Return 0
	EndIf
	
	Local $v_Buffer = DllStructCreate($sv_Type)
	
	If @Error Then
		SetError(@Error + 1)
		Return 0
	Else
		DllStructSetData($v_Buffer, 1, $v_Data)
		If @Error Then
			SetError(6)
			Return 0
		EndIf
	EndIf
	
	DllCall($ah_Handle[0], 'int', 'WriteProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
	
	If Not @Error Then
		Return 1
	Else
		SetError(7)
        Return 0
	EndIf
	
EndFunc

;==================================================================================
; Function:			_MemoryClose($ah_Handle)
; Description:		Closes the process handle opened by using _MemoryOpen().
; Parameter(s):		$ah_Handle - An array containing the Dll handle and the handle
;								 of the open process as returned by _MemoryOpen().
; Return Value(s):	On Success - Returns 1
;					On Failure - Returns 0
;					@Error - 0 = No error.
;							 1 = Invalid $ah_Handle.
;							 2 = Unable to close the process handle.
; Author(s):		Nomad
; Note(s):
;==================================================================================
Func _MemoryClose($ah_Handle)
	
	If Not IsArray($ah_Handle) Then
		SetError(1)
        Return 0
	EndIf
	
	DllCall($ah_Handle[0], 'int', 'CloseHandle', 'int', $ah_Handle[1])
	If Not @Error Then
		DllClose($ah_Handle[0])
		Return 1
	Else
		DllClose($ah_Handle[0])
		SetError(2)
        Return 0
	EndIf
	
EndFunc

;==================================================================================
; Function:			SetPrivilege( $privilege, $bEnable )
; Description:		Enables (or disables) the $privilege on the current process
;                   (Probably) requires administrator privileges to run
;
; Author(s):		Larry (from autoitscript.com's Forum)
; Notes(s):
; [url=http://www.autoitscript.com/forum/index.php?s=&showtopic=31248&view=findpost&p=223999]Memory reads and 3.2 (not beta) - AutoIt Forums[/url]
;==================================================================================

Func SetPrivilege( $privilege, $bEnable )
    Const $TOKEN_ADJUST_PRIVILEGES = 0x0020
    Const $TOKEN_QUERY = 0x0008
    Const $SE_PRIVILEGE_ENABLED = 0x0002
    Local $hToken, $SP_auxret, $SP_ret, $hCurrProcess, $nTokens, $nTokenIndex, $priv
    $nTokens = 1
    $LUID = DLLStructCreate("dword;int")
    If IsArray($privilege) Then    $nTokens = UBound($privilege)
    $TOKEN_PRIVILEGES = DLLStructCreate("dword;dword[" & (3 * $nTokens) & "]")
    $NEWTOKEN_PRIVILEGES = DLLStructCreate("dword;dword[" & (3 * $nTokens) & "]")
    $hCurrProcess = DLLCall("kernel32.dll","hwnd","GetCurrentProcess")
    $SP_auxret = DLLCall("advapi32.dll","int","OpenProcessToken","hwnd",$hCurrProcess[0],   _
            "int",BitOR($TOKEN_ADJUST_PRIVILEGES,$TOKEN_QUERY),"int_ptr",0)
    If $SP_auxret[0] Then
        $hToken = $SP_auxret[3]
        DLLStructSetData($TOKEN_PRIVILEGES,1,1)
        $nTokenIndex = 1
        While $nTokenIndex <= $nTokens
            If IsArray($privilege) Then
                $priv = $privilege[$nTokenIndex-1]
            Else
                $priv = $privilege
            EndIf
            $ret = DLLCall("advapi32.dll","int","LookupPrivilegeValue","str","","str",$priv,   _
                    "ptr",DLLStructGetPtr($LUID))
            If $ret[0] Then
                If $bEnable Then
                    DLLStructSetData($TOKEN_PRIVILEGES,2,$SE_PRIVILEGE_ENABLED,(3 * $nTokenIndex))
                Else
                    DLLStructSetData($TOKEN_PRIVILEGES,2,0,(3 * $nTokenIndex))
                EndIf
                DLLStructSetData($TOKEN_PRIVILEGES,2,DllStructGetData($LUID,1),(3 * ($nTokenIndex-1)) + 1)
                DLLStructSetData($TOKEN_PRIVILEGES,2,DllStructGetData($LUID,2),(3 * ($nTokenIndex-1)) + 2)
                DLLStructSetData($LUID,1,0)
                DLLStructSetData($LUID,2,0)
            EndIf
            $nTokenIndex += 1
        WEnd
        $ret = DLLCall("advapi32.dll","int","AdjustTokenPrivileges","hwnd",$hToken,"int",0,   _
                "ptr",DllStructGetPtr($TOKEN_PRIVILEGES),"int",DllStructGetSize($NEWTOKEN_PRIVILEGES),   _
                "ptr",DllStructGetPtr($NEWTOKEN_PRIVILEGES),"int_ptr",0)
        $f = DLLCall("kernel32.dll","int","GetLastError")
    EndIf
    $NEWTOKEN_PRIVILEGES=0
    $TOKEN_PRIVILEGES=0
    $LUID=0
    If $SP_auxret[0] = 0 Then Return 0
    $SP_auxret = DLLCall("kernel32.dll","int","CloseHandle","hwnd",$hToken)
    If Not $ret[0] And Not $SP_auxret[0] Then Return 0
    return $ret[0]
EndFunc   ;==>SetPrivilege

#endregion
ookamocka is offline  
Old 07/31/2009, 16:13   #14
 
elite*gold: 20
Join Date: Aug 2007
Posts: 1,749
Received Thanks: 2,199
Quote:
Originally Posted by ookamocka View Post
ne way... here's one for AutoIt... should be very similar to VB...
That's not really similar to VB, we don't need to use DLLCall. Just declare it.

Code:
Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesRead As Long) As Long
Then you'd have to have a timer or something to check the memory address like:

Code:
Private Sub ReadCharName_Timer()

Dim ProcessHandle as long

ProcessHandle = OpenProcess(ProcessID, false, PROCESS_ALL_ACCESS)

ReadProcessMemory ProcessHandle, PlayerBaseAddrPtr, MyChar.BaseAddr, 8, 0
ReadProcessMemory ProcessHandle, MyChar.BaseAddr + NamePtrOffset, MyChar.NamePtr, 8, 0
ReadProcessMemory ProcessHandle, MyChar.NamePtr, MyChar.NameString(0), 16, 0

CharacterName.Text = StrConv(MyChar.NameString, vbUnicode)

CloseHandle ProcessHandle
Of course you'd need to find the CO window first. You could use CreateToolhelp32Snapshot, Process32First, and Process32Next - or simply just use FindWindow, GetForegroundWindow, or whatever you like.

That's VB6 though, I think there's an easier way to look for processes by name in VB.net.
IAmHawtness is offline  
Old 07/31/2009, 17:32   #15
 
elite*gold: 0
Join Date: Dec 2006
Posts: 37
Received Thanks: 8
Thanks guys, finally receiving some help ^.^
And thanks for the code examples, ookamocka and IAmHawtness, this will really help me to proceed with my code.

I hope you can help me if i get some more errors. I really want to do this since there is no (known) application which uses VB.NET, which really is the easiest language (except English).

Okay so first I don't know how to find the player base address.
But for the charname, I have the memory address which isn't static, and I'm having troubles finding the pointer and offset because nothing writes to the memory address while I'm logged in so I have to do a pointer scan which really takes long time... Maybe its here that the player base address comes in?

But the XP was easier to find since conquer writes to it simultaneously. However I'm still having troubles finding the correct memory address and how to use the pointers.

And as for the handle for the CO window, I'm now using FindWindow and then I use GetWindowThreadProcessId to give the process id from the handle to a variable.

Thanks!
//Zeelia
Zeelia is offline  
Reply

Tags
2008, vb.net, visual basic


Similar Threads Similar Threads
Visual C++ (C++), Visual Basic, oder AutoIT?
06/24/2010 - .NET Languages - 11 Replies
Hallo Zusammen Ich würde gerne mit dem Programmieren anfangen. Meine Vorstellungen: Es müsste möglich sein, eigene Programme zu schreiben wie z. B. MSN, Emule oder ähnliches. Natürlich nie in dieser Grösse nur als Beispiel. Als weiteres sollte mit der gleichen Programmiersprache auch die Möglichkeit bestehen einen WoW Bot zu schreiben. Habe gehört die meisten Bots sind in Auto IT geschrieben. Gibt es unterschiede wegen des Warden schutzes oder kommt es nicht darauf an?
[Brauche Hilfe]Visual Basic Memory Write
04/17/2010 - .NET Languages - 15 Replies
Also wie im Titel schon erwähnt wurde brauche ich hilfe bei memory write in vb. Die Tuts die hier bei EPvp sind bringen mir nicht den da kommen immer fehler... Public Class Form1 Public Declare Function ReadProcessMemory Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer Public Declare Function WriteProcessMemory Lib "kernel32"...
Visual Basic 6.0
07/09/2007 - Conquer Online 2 - 4 Replies
Hi i am a VB noob and i cant get it to zoom the window i have up i wonder if anyone can help me please because i want to make a new COzoom and i cant get it work please can someone just give me a quick runthrough on how to use VB with basic coding etc all i want is it to zoom my CO windows thanks for your help Penance



All times are GMT +1. The time now is 23:06.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.