Перейти к содержанию

HPB

Пользователи
  • Постов

    31
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные HPB

  1. почему тогда в СЕ смотрю там "Play.exe"+012F4EB0 получается совсем не 16F4EB0

    такое чуство что в этом случае каламбур какойто

    открыл солитёр игра стандартная на пк нашёл адрес "счёта(0097810)" нашёл указатель с 1 смещением (0x30)

    вооот потом посмотрел базовый адрес через СЕ =00400000

    сам указатель ="sol.exe"+00007170 ->00977E0

    00977E0 +30 = 0097810 (адрес "счёта"

    получается что "sol.exe" не 00400000

    что же в этом случае делать?

  2. а каким образом можно это сделать более удобным способос добишь посредством программ на с++ или шарпе

    опять ARM4Nd0 вашим спосбом вышел на 00400000

    или я может что не понимаю

    "Play.exe"+012F4EB0 -простое алгебраическое сложение? после чего получиться адрес или получившийся адрес укажет на какойто адрес?


  3. VAM = new VAMemory("Play.exe");
    Int32 Sme = 0x30;
    Int32 BaseAddress = 0x00400000;//это база её можно найти через Се во вкладки Memory View -View-Enumerate DLL
    Int32 MyOffset = 0x0FFD4F20;//указатель

    IntPtr MainPointer = (IntPtr)(BaseAddress + MyOffset);
    Int32 DestAddress = VAM.ReadInt32(MainPointer);



    IntPtr MinorPointer = (IntPtr)(DestAddress + Sme);
    Int32 ValueAddress = VAM.ReadInt32(MinorPointer);

    Int32 MyValue = VAM.ReadInt32((IntPtr)ValueAddress);

    textBox1.Text = Convert.ToString(MyValue);

    в текстбоксе "0"

    может всё из за того что тип "float"

    ..

    закройте тему я нашёл изъян в таком способе выхода на адрес : )

    но если у кого то будет рабочий способ то прошу вас всё равно выложить

  4. :-D ну я бы не стал бы обращаться на форум если бы знал как это сделать

    да я мало знаю c# а по вашему мнению я совсем ничего не знаю..

    просто я изучаю её по школьной системе и ничего такого вот ещё не было ,думаю и не будет

  5. просто есть план выполнения найти адрес: на который указывает указатель +смещение + базу



    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;

    using System.Windows.Forms;
    using System.Diagnostics;
    using System.Runtime.InteropServices;
    using System.Globalization;
    using System.Threading;


    namespace Half
    {
    public partial class Form1 : Form
    {

    VAMemory VAM;

    public Form1()
    {
    InitializeComponent();
    VAM = new VAMemory("hitman");
    Int32 BaseAddress = 0x00400000;//это база её можно найти через Се во вкладки Memory View -View-Enumerate DLL
    Int32 MyOffset = 0x012DF0F0;//указатель


    IntPtr MainPointer = (IntPtr)(BaseAddress + MyOffset);
    Int32 DestAddress = VAM.ReadInt32(MainPointer);
    IntPtr MinorPointer = (IntPtr)(DestAddress + 0x30);
    Int32 ValueAddress = VAM.ReadInt32(MinorPointer);//это пункт B
    Int32 MyValue = VAM.ReadInt32((IntPtr)DestAddress);

    textBox1.Text = "0x" + Convert.ToString(MyValue, 16);




    private void textBox1_TextChanged(object sender, EventArgs e)
    {
    textBox1.Text = textBox1.Text.ToUpper();
    }

    но что за шняга ...этот код последовательно выполняясь выведет мне АДРЕС или что то другое?

    если адрес который содержит в себе "указатель" то почему он постоянно Статический даже когда я перезапускаю игру он не DMA такое чувство что я прочитал значение

  6. а каким способом я могу конвиртировать Стринг в 16чную систему?

    когда 2 смещения было ещё хоть как то ясно а для одного смещения я правильно сделал?


    VAM = new VAMemory("hitman2");
    Int32 BaseAddress = 0x00400000;//это база её можно найти через Се во вкладки Memory View -View-Enumerate DLL
    Int32 MyOffset = 0x021FDEA0;//указатель


    IntPtr MainPointer = (IntPtr)(BaseAddress + MyOffset);
    Int32 DestAddress = VAM.ReadInt32(MainPointer);//это пункт A



    IntPtr MinorPointer = (IntPtr)(DestAddress + 0x30);
    Int32 ValueAddress = VAM.ReadInt32(MinorPointer);//это пункт B

    Int32 MyValue = VAM.ReadInt32((IntPtr)ValueAddress);//это пункт C

    textBox1.Text = Convert.ToString(0x0+ValueAddress);

    MessageBox.Show("адрес-----" + ValueAddress);

    в итоге жму на кнопку и в textBoxe вегда меняется цирф..я так и не пойму я вышел на значение адреса или на "АДРЕС" я хочу вывести адрес

  7. ну как всегда. понятно что я мало знаю..

    Coder


    VAM = new VAMemory("hitman2");
    Int32 BaseAddress = 0x00400000;//это база её можно найти через Се во вкладки Memory View -View-Enumerate DLL
    Int32 MyOffset = 0x0021E45C;//указатель


    IntPtr MainPointer = (IntPtr)(BaseAddress + MyOffset + 0x30);//смещение не знаю как использовать либо 30 либо 0x30
    Int32 DestAddress = VAM.ReadInt32(MainPointer);//это пункт A



    IntPtr MinorPointer = (IntPtr)(DestAddress + 0x96);//второе смещение
    Int32 ValueAddress = VAM.ReadInt32(MinorPointer);//это пункт B


    textBox1.Text = Convert.ToString(MinorPointer);

    так будет верно или нет? и как мне перевести в другую систему так ка int отличается совсем от того что находиться в СЕ и я не смогу через другую программу вставив этот полученный результат подключиться к процессу и найти адрес

    image.pngimage.pngimage.pngimage.png

    Coder если знаешь почему не хочешь помочь? на ошибках лучше всё запоминается ..да и вспомни как сам начинал всё было легко?скажи..и что всё всё в книгах было ??я думаю что нет

    От Администратора:

    Уважаемый пользователь, прошу Вас воспользоваться такой фишкой как спойлеры

    [spoiler=Hidden]Скрытый текст[/spoiler]

    //Kvazimado

  8. Int32 MyValue = VAM.ReadInt32(ValueAddress);//это пункт C

    не возможно преобразование

    Process[] aProcesses = Process.GetProcessesByName("hitman2");
    if (aProcesses.Length != 0)
    {
    oMemory.ReadProcess = aProcesses[0];
    oMemory.Open();

    int iStep2_Address = Addr.ToDec("21E45C"); без 00 в начале
    int[] iStep2_Offsets = { 0x30, 0x96 };
    int bytesWritten;
    byte[] bValue_To_Write = BitConverter.GetBytes(1000);

    string sWritten_Address = oMemory.PointerWrite((IntPtr)iStep2_Address, bValue_To_Write, iStep2_Offsets, out bytesWritten);

    if (bytesWritten == bValue_To_Write.Length)
    MessageBox.Show("Wrote 1000 to " + sWritten_Address + "!");
    else
    MessageBox.Show("There was an error writing 1000 to " + sWritten_Address + ".");

    oMemory.CloseHandle();
    }
    }

    блин хороший вариант но без базы

  9. вот зашёл в игру я ...именно такой же базовый адрес "00400000"

    и что дальше?

    image.png

    как это всё будет примерно выглядеть в шарпе?

    Address op pointer ->hitman2.exe+0021E45C

    BaseAddress->0040000

    и как теперь быть?

    http://forum.gamehac...B5%D1%81%D1%83/

    что то я не пойму

    Спасибо за уроки которые я уже видел!

    Но меня все таки мучает один опрос, ответа на который я ни где не нашел.

    Как подключиться к базовому адресу, на который указывает указатель?

    Есть вот такой Offset, игры Half-Life:

    14908570873c9e341f65032e29c6bc50.jpg

    Вопрос как подключиться к указателю hw.dll+7bbd9c или модулю hw.dll, например в моем трейнере:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Diagnostics;
    using System.Runtime.InteropServices;
    using System.Globalization;
    using System.Threading;
    namespace Half_Life_Opposing_Force
    {
    public partial class Form1 : Form
    {
    #region Global variables
    Memory myMemory = new Memory();
    Process[] myProcess;
    bool IsGameAvailable = false;
    bool UnlimitedAmmo = false;
    string AmmoPointer = "10343A08";
    int[] AmmoOffset = { 0x578, 0xAC };
    int ammoToFill = 50;
    #endregion
    public Form1()
    {
    InitializeComponent();
    }

    private void UnlimAmmoBTN_Click(object sender, EventArgs e)
    {
    if (IsGameAvailable)
    {
    if (UnlimitedAmmo)
    {
    UnlimitedAmmo = false;
    UnlimAmmoBTN.Text = "OFF";
    }
    else
    {
    UnlimitedAmmo = true;
    UnlimAmmoBTN.Text = "ON";
    }
    }
    }
    private void GameAvailabilityTMR_Tick(object sender, EventArgs e)
    {
    myProcess = Process.GetProcessesByName("hl");
    if (myProcess.Length != 0)
    {
    IsGameAvailable = true;
    statusLBL.Text = "Вы в игре";
    }
    else
    {
    IsGameAvailable = false;
    statusLBL.Text = "Игра не запущенна";
    }
    }
    private void UpdateCheatsTMR_Tick(object sender, EventArgs e)
    {
    if (IsGameAvailable)
    {
    #region Unlimited ammo
    if (UnlimitedAmmo)
    {
    myMemory.ReadProcess = myProcess[0];
    myMemory.Open();
    int pointerAddress = HexToDec(AmmoPointer);
    int[] pointerOffset = AmmoOffset;
    int bytesWriten;
    byte[] valueToWrite = BitConverter.GetBytes(ammoToFill);
    string writtenddress = myMemory.PointerWrite((IntPtr)pointerAddress, valueToWrite, pointerOffset, out bytesWriten);
    myMemory.CloseHandle();
    }
    #endregion
    }
    }
    public static string HexToDec(int DEC)
    {
    return DEC.ToString("X");
    }
    public static int HexToDec(string Hex)
    {
    return int.Parse(Hex, NumberStyles.HexNumber);
    }
    }
    }

  10. я только что нашел блог kenga случайно

    и да я до сих пор не смог прочитать указатель..

    выйти на действительный нужный мне адрес

    поэтому и обратился к вам..так как не знал как справиться

    у меня есть 2 программы

    1. исполняемая (тобишь ты ввёл адрес и всё она покатила тебе там делать сама что надо)

    2. именно нужно найти вот этот адрес чтобы именно в первую и вставить

    код кенга очень массивный это ж сколько будет моя програмка хоть и в Кб но всё равно ....

    Coder помоги ещё разок только чтоб уж до меня дошло до конца : (

    ну не получается у меня я уже по разному перепробовал...

    объясни на примеру игры Hitman - Silent Assassin как и что куда записать "как говориться последнее китайское после которого я пойму"

    image.png

    как я разобрался

    указатель 0021E45C прибовляем 30 получаем 0012СС54 + 96 получаем 064EE746(конечный адрес..)

    как мне его найти посредством c# разсусольте пожалуйста ..буду вам благодарен

    мне не нужно найти значение а именно "конечный адрес" который в себе содержал указатель

  11. я знаю что указатель это адрес в памяти и если я буду на него ссылаться то он должен "jmp" как бы на другой адрес + относительное смещение

    минимальное знание о указатели и представление где работаю

    а вы все такие "профи" ....сразу бы закопали ваша б воля

    "на ошибках учатся"

    я читал ни одну книгу и всегда мало что ясно, пока не попробуешь это сам.! ,а..когда сталкиваешь то на практике совсем все иначе

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.