• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Готика 1: Узнать адресс функции в памяти

Frost122

Участник форума
Регистрация
18 Апр 2013
Сообщения
18
Благодарности
0
Баллы
150
Значит, у меня вопрос, как узнать адресс функции например, открытия инвентаря? Некий Saturas подсказал мне что хукать надевание брони нужно по адресу 007323C0, так вот: как узнать подобные адреса? Какой дизассемблер юзать и как?

И могу ли я не юзать dll'ки а делать все это через Write\Read Process Memory?

Вот чувак что-то подобное на Visual Basic запилил:


P.S. G2Ext не предлагать, хотелось бы на Г1 это вытворять.
 

killer-m


Модостроитель
Регистрация
24 Мар 2013
Сообщения
1.359
Благодарности
1.360
Баллы
265
OllyDbg скачай. Инструкций как пользоваться в интернете полно.
Список адресов функций из Gothic2.exe (Готика 2 НВ) и GothicMod.exe (Готика 1) в аттаче.
 

Вложения

  • Gothic2.txt
    1,3 MB · Просмотры: 279
  • GothicMod.txt
    1,3 MB · Просмотры: 217

Frost122

Участник форума
Регистрация
18 Апр 2013
Сообщения
18
Благодарности
0
Баллы
150

Frost122

Участник форума
Регистрация
18 Апр 2013
Сообщения
18
Благодарности
0
Баллы
150
Попытался достать "ModeName:" - получил иероглифы(см.скриншот), это как так?

По всем адресам иероглифы, даже по тем что killer-m дал.

Читаю так, пробовал и через ANSII и UTF8 - либо крокозяблы, либо иероглифы, читаю по стандартному примеру:

Код:
          Process process = Process.GetProcessesByName("GothicMod")[0];
            IntPtr processHandle = OpenProcess(PROCESS_WM_READ, false, process.Id);

            int bytesRead = 0;
            byte[] buffer = new byte[128];
            ReadProcessMemory((int)processHandle, 0x004235B0, buffer, buffer.Length, ref bytesRead);
 MessageBox.Show(Encoding.ASCII.GetString(buffer));
 

Вложения

  • Безымянный.png
    Безымянный.png
    198,8 KB · Просмотры: 360
Последнее редактирование:

Frost122

Участник форума
Регистрация
18 Апр 2013
Сообщения
18
Благодарности
0
Баллы
150
Кому интересно - перешел на более известный мне язык - Delphi. Взял код инжектора dll, взял функцию вызова адреса из G2Ext, переписываю классы Г1 на Delphi. Если есть смысл выкладывать свой прогресс - отпишитесь, пожалуйста.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
А что ты делаешь то? Это уже давно сделано командой немцев, и продублировано мной=/
И да, юзай IDA, она удобнее.
Иероглифы почему? Все просто, ты ошибся типом данных, вот.
P.S. G2Ext не предлагать, хотелось бы на Г1 это вытворять.
Ну дак, заюзай мой екст, и перепиши апи библиотеку, и все .
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Кому интересно - перешел на более известный мне язык - Delphi. Взял код инжектора dll, взял функцию вызова адреса из G2Ext, переписываю классы Г1 на Delphi. Если есть смысл выкладывать свой прогресс - отпишитесь, пожалуйста.
выложи, почему нет?
 

Frost122

Участник форума
Регистрация
18 Апр 2013
Сообщения
18
Благодарности
0
Баллы
150
Проблема решена. Спасибо Saturas'у.
 
Сверху Снизу