Skocz do zawartości

Problem z odczytywaniem wartości


Vondri
# CSH External VIP Project

Masz dosyć problemów z czynnikiem zaufania w CS2 lub notorycznymi banami?

Sprawdź CSH External VIP Project.


Więcej informacji  

Rekomendowane odpowiedzi

Witam. Posiadam problem z odczytaniem pewnych adresów a dokładnie adresu z HP poniżej wyśle jak wygląda kod:
(Oryginalny kod jest do pobrania)
 

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;

namespace cscsgo
{
    class Program
    {
        public static int dwLocalPlayer = 0xD3AC5C;
        public static int m_iHealth = 0x100;

        public static string processName = "csgo";
        public static int processID;
        public static int bClient;

        public static int oLocalPlayer = 0xD3AC5C;
        public static int LocalPlayer;

        public static int oHealth = 0x100;
        public static int iHealth;

        [DllImport("kernel32.dll", SetLastError = true)]
        public static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [Out] byte[] lpBuffer, int dwSize, out IntPtr lpNumberOfBytesRead);

        public int ReadInt32(IntPtr hProcess, IntPtr dwAddress)
        {
            byte[] dataBuffer = new byte[4];
            IntPtr bytesRead = IntPtr.Zero;

            ReadProcessMemory(hProcess, (IntPtr)dwAddress, dataBuffer, dataBuffer.Length, out bytesRead);

            return BitConverter.ToInt32(dataBuffer, 0);
        }

        public static bool GetModuleAddy()
        {
            try
            {
                Process[] p = Process.GetProcessesByName(Program.processName);

                if (p.Length > 0)
                {
                    foreach (ProcessModule m in p[0].Modules)
                    {
                        if (m.ModuleName == "client.dll")
                        {
                            Program.bClient = (int)m.BaseAddress;
                            return true;
                        }
                    }
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch (Exception ex)
            {
                return false;
            }
        }

        public int OpenProcess(string name)
        {
            Process[] proc = Process.GetProcessesByName(name);
            int handle = proc[0].Id;
            return handle;
        }

        static void Main(string[] args)
        {
            Module Module = new Module(); Memory Memory = new Memory(); Program Program = new Program();
            processID = Memory.OpenProcess(processName);

            if (Module.GetModuleAddy())
            {
                LocalPlayer = bClient + oLocalPlayer;
                iHealth = LocalPlayer + oHealth;
                Console.WriteLine(Memory.ReadInt32((IntPtr)processID, (IntPtr)iHealth));
            }
            Console.ReadKey();
        }
    }
}

 

Problem jest taki że zawsze pokazuje wartość 0 gdzie sprawdzając na kartce i obliczając to zawsze adres wynosi client.dll+0xD3AD5C i nawet w cheat engine po odjeciu adresu client.dll wyjdzie [D3AD5C]
Dodam tez to ze bawiąc sie ReClassem czy Structure Dissect w cheat enginie to wszystko działa poprawnie i są te same adresy tylko sęk w tym że nawet samo przepisanie adresu z CE do programu to nie odczytuje wartości  : ( 

 

Wybaczcie za napchany kod. Jeżeli wam przeszkadza lub jest to dla was za mało umieszczam pliki
Kompiluje x86 i x64 też nie działa
W razie jakiś uwag proszę mieć wgląd na to że się uczę i możesz mi napisać jak i nakierować do dalszych działań : )

Życzę miłej nocy : )

 

c#csgo.rar

 

Pomogłem?

Strzel plusika 😉

Odnośnik do komentarza
                LocalPlayer = bClient + oLocalPlayer;
                iHealth = LocalPlayer + oHealth;

Aby pobierać wartości z offsetów musisz najpierw użyć ReadProcessMemory.

 

Przykład:

LocalPlayer = memory.ReadMemory(bClient + offsets.dwLocalPlayer);
Health = memory.ReadMemory(LocalPlayer + offsets.iHealth);

 

XDDD.PNG.54b738dc45e76955737b5225313a3b65.PNG  

 

imageedit_1_7170479618.gif.bf33fa8ecfc879cfbede9786da6e02f8.gif

Odnośnik do komentarza
LocalPlayer = memory.ReadMemory(bClient + offsets.dwLocalPlayer);
Health = memory.ReadMemory(LocalPlayer + offsets.iHealth);

To też nie działa 😕 Dasz rade może popatrzeć z klase Memory i funkcje ReadInt? Mozliwe ze tu tkwi problem. Pare miesiecy temu to działało fajnie ale teraz cosik nie tak jest 😕 Moze cos jeszcze w konfiguracji musze porobic? Dodam że teraz w ciele if'a zmienne z klasy wgl sie nie nadpisuja xD ale to pikuś narazie skupmy sie nad zczytywaniem. Jeżeli moge prosic 🙂

Okej już sie uporałem z nadpisywaniem ale kolejny problem wygląda tak:

  • asssd.thumb.png.454bafb68181cce6e9a0da4ad0f2c98a.png

GetModuleAddy:

  • gma.png.50d4640aaf32e05fc97323e1eef0f518.png

OpenProcess:

  • op.png.fff4eea6f63f82066b80e6b333000a04.png

ReadInt32:

  • read.thumb.png.f3f984d896e38bd245a073e3eae35acd.png

 

Ciekawostką dla mnie jest to ze nie ma juz client_panorama.dll tylko client.dll

Pomogłem?

Strzel plusika 😉

Odnośnik do komentarza

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Regulamin. Polityka prywatności