Page 1 of 2 12 LastLast
Results 1 to 10 of 18
  1. #1
    exia69
    exia69 is offline
    New member
    Join Date
    2012 May
    Posts
    7
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts
    Rep Power
    0

    vb.net Multi-Level pointer diffrent result than the one in Cheat engine? help

    Hello,
    Im trying to read a value of a multi-level pointer using Vb.net but my result in VB comes out much different than the one in CE. I have tried this same method on other games ( SaintsRowTheThird, Titan Quest) and it works perfectly but not on Tera. The value is either something negative like (-621185984) or 0.


    Code:
    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
    
        Public phandle As Integer
        Public gbaseid As Int32
        Public GAMEEXE As String = "Tera"
        Private m_hProcess As IntPtr = IntPtr.Zero
        Public Function ReadMemANdOffset()
            Dim TeraProcess As Process = Process.GetProcessesByName(GAMEEXE)(0)
            Dim TeraProcessMainIndex As Integer = 0
    
    
            For i = 0 To TeraProcess.Modules.Count - 1
                If TeraProcess.Modules.Item(i).ModuleName.ToLower = GAMEEXE Then
                    TeraProcessMainIndex = i
    
                    Exit For
                End If
            Next
    
            phandle = TeraProcess.Handle
            gbaseid = TeraProcess.Modules.Item(TeraProcessMainIndex).BaseAddress.ToInt32()
    
            Dim OFFSETS As String() = {"01716B5C", "29c", "724", "30", "c", "48"}
            Dim CurMem As Integer = 0
            Dim CurAdd As Integer = gbaseid
    
            For i As Integer = 0 To OFFSETS.Length - 1
                Dim CurOFFset As Int32 = Int32.Parse(OFFSETS(i), System.Globalization.NumberStyles.HexNumber)
                If i = 0 Then
                    ReadProcessMemory(phandle, CurAdd + CurOFFset, CurMem, 4, 0)
                Else
                    ReadProcessMemory(phandle, CurMem + CurOFFset, CurMem, 4, 0)
                End If
            Next
            Dim FinalResult As Integer = CurMem
            Return FinalResult
    
        End Function


    Pointer For HP:

    <Address>"TERA.exe"+01716B5C</Address>
    <Offset>48</Offset>
    <Offset>C</Offset>
    <Offset>30</Offset>
    <Offset>724</Offset>
    <Offset>29C</Offset>


    What am I doing wrong here?
    Please advise, im stuck.

  2. #2
    yizheng
    yizheng is offline
    Awesome to the MAX yizheng's Avatar
    Join Date
    2010 Aug
    Posts
    743
    Thanks Thanks Given 
    124
    Thanks Thanks Received 
    728
    Thanked in
    187 Posts
    Rep Power
    14
    Thats a long ass pointer...are you sure thats the correct static one?

    Take a look here from "hounder"'s post: https://progamercity.net/tera-hacks/...a-offsets.html

  3. #3
    SheppeR
    SheppeR is offline
    New member
    Join Date
    2012 Apr
    Posts
    21
    Thanks Thanks Given 
    3
    Thanks Thanks Received 
    2
    Thanked in
    2 Posts
    Rep Power
    0
    You can try with this good lib

    Author : Estx
    exemple:

    Code:
    Imports System
     Imports System.Collections.Generic
     Imports System.ComponentModel
     Imports System.Data
     Imports System.Drawing
     Imports System.Text
     Imports System.Windows.Forms
     Imports MEC
    
    Namespace WindowsApplication1
         Public Partial Class Form1
             Inherits Form
             Private myMemEditor As New MemEdit()
           
             Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
                 myMemEditor.mOpenProcess("winmine")
                 Me.Text = myMemEditor.ReadMemoryInt(16799644).ToString()
                 Dim tInt As Integer = myMemEditor.WriteMemory(16799644, 911)
                 ' Now check minesweeper, lol.
                 myMemEditor.mCloseProcess()
             End Sub
         End Class
    End Namespace
    lib in attachements

    Please register or login to download attachments.


  4. #4
    exia69
    exia69 is offline
    New member
    Join Date
    2012 May
    Posts
    7
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts
    Rep Power
    0
    Quote Originally Posted by yizheng View Post
    Thats a long ass pointer...are you sure thats the correct static one?

    Take a look here from "hounder"'s post: https://progamercity.net/tera-hacks/...a-offsets.html
    I think so, its a multi-level pointer I have to go through all those offsets right? And in cheat engine it gives me the right value! Also in "hounders" post when I downloaded his CE offset they were outdated but they did have 5 Offsets to go through as well. What I dont understand is that in his post he put "Current MP - 0x78" but when I open his Cheat engine file it clearly shows "TERA.exe"+0165473C + 0x24+0x3d4+0x30+0xc+0x48. EVen when I add them up it comes out to be 47C and not 0x78

    ---------- Post added at 09:44 AM ---------- Previous post was at 09:42 AM ----------

    I tried the code below but it didn't work and Im not sure how to use this code with a multi-level pointer

    Code:
     myMemEditor.mOpenProcess("Tera")
            Me.Text = myMemEditor.ReadMemoryInt(&H1F14B20 + &H27C + &H580 + &H10 + &H20 + &H548)
    
            ' Now check minesweeper, lol.
            myMemEditor.mCloseProcess()
    I know its pointing in the right section because in Cheat Engine this pointer works!
    Last edited by exia69; 2012-05-23 at 10:50 AM.

  5. #5
    JackD
    JackD is offline
    New member
    Join Date
    2012 May
    Posts
    4
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts
    Rep Power
    0
    Just some pseudocode, this would be how you read pointers.

    Code:
    terabase = GetBaseAdress("TERA.exe");
    temp1 = MemoryRead(terabase + 29C)
    temp2 = MemoryRead(temp1 + 724)
    temp3 = MemoryRead(temp2 + 30)
    temp4 = MemoryRead(temp3 + C)
    hp = MemoryRead(temp4 + 48)

  6. #6
    SheppeR
    SheppeR is offline
    New member
    Join Date
    2012 Apr
    Posts
    21
    Thanks Thanks Given 
    3
    Thanks Thanks Received 
    2
    Thanked in
    2 Posts
    Rep Power
    0
    After test, i got the same issue in c#, with a single pointer got a correct value for my call, but with multi pointers value is 0.

  7. #7
    yizheng
    yizheng is offline
    Awesome to the MAX yizheng's Avatar
    Join Date
    2010 Aug
    Posts
    743
    Thanks Thanks Given 
    124
    Thanks Thanks Received 
    728
    Thanked in
    187 Posts
    Rep Power
    14
    Quote Originally Posted by exia69 View Post
    I know its pointing in the right section because in Cheat Engine this pointer works!
    I think this is the problem that you are having:
    Dim OFFSETS As String() = {"01716B5C", "29c", "724", "30", "c", "48"}

    because look:

    Pointer For HP:

    <Address>"TERA.exe"+01716B5C</Address>
    <Offset>48</Offset>
    <Offset>C</Offset>
    <Offset>30</Offset>
    <Offset>724</Offset>
    <Offset>29C</Offset>
    you only wrote down "01716B5C" not the entire base address. I don't have Tera on my cpu to test and find the base address but you can try doing this: Go back to CE and go to this address " "TERA.exe"+01716B5C " and you will receive a different base address than "01716B5C", copy that base address and try your method of readprocessmemory again. should work.

    Edit: Then again i maybe wrong cuz you used the "01716B5C" as an offset too but it was an offset for the base address. So you could try using the (module + base address offset) + offsets for hp etc
    Last edited by yizheng; 2012-05-23 at 07:44 PM.

  8. #8
    exia69
    exia69 is offline
    New member
    Join Date
    2012 May
    Posts
    7
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts
    Rep Power
    0
    Quote Originally Posted by yizheng View Post
    Edit: Then again i maybe wrong cuz you used the "01716B5C" as an offset too but it was an offset for the base address. So you could try using the (module + base address offset) + offsets for hp etc
    What do you mean by Module isnt the module the base id of the EXE? like I used in the line
    Dim CurAdd As Integer = gbaseid

    Or is module something else?

  9. #9
    yizheng
    yizheng is offline
    Awesome to the MAX yizheng's Avatar
    Join Date
    2010 Aug
    Posts
    743
    Thanks Thanks Given 
    124
    Thanks Thanks Received 
    728
    Thanked in
    187 Posts
    Rep Power
    14
    try:

    Dim CurAdd As Integer = "TERA.exe"+01716B5C

  10. #10
    exia69
    exia69 is offline
    New member
    Join Date
    2012 May
    Posts
    7
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts
    Rep Power
    0
    Quote Originally Posted by yizheng View Post
    try:

    Dim CurAdd As Integer = "TERA.exe"+01716B5C
    Im currently on my Laptop and cannot test this, but by looking at it I dont think it will work.
    since "Tera.exe" is a string it cannot be added to the hex, i also tried to globalize the string to Hex+address still didint work.
    I even tried to put ReadProcessMemory(phandle, "tera.exe" + CurAdd + CurOFFset, CurMem, 4, 0)
    but it throws an error saying that a string cannot be converted to a double.

Page 1 of 2 12 LastLast

Similar Threads

  1. Cheat Engine CeFun 1.3
    By termiks in forum Files & Tools
    Replies: 5
    Last Post: 2016-04-01, 01:08 AM
  2. [Help] Cheat engine
    By cipher18 in forum Aika Online
    Replies: 7
    Last Post: 2012-01-30, 01:59 PM
  3. [Memory] Cheat Engine 6.0
    By Dwar in forum Files & Tools
    Replies: 0
    Last Post: 2011-03-04, 02:58 AM
  4. [C++] Need Help Multi Patching Pointer
    By gosicks in forum C/C++
    Replies: 0
    Last Post: 2011-02-11, 09:40 PM
  5. Cheat Engine Debugger
    By iam_clint in forum Aika Online
    Replies: 4
    Last Post: 2010-10-20, 04:36 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •