Multi level pointer - Вопросы и ответы, обсуждения - Ваши вопросы по C# только в данном разделе
23.01.2012, 16:21
#1
Сержант
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
Multi level pointer
Жуковцы, кто сталкивался с многоуровневыми поинтерами?
Нашел бейс адрес и 3 оффсета, в CE работает отлично, но как перенести данные адреса в C# чето не догоняю.
________________
Talk is cheap. Show me the code
— Linus Torvalds
23.01.2012, 16:36
#2
Разведчик
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Re: Multi level pointer
Если под многоуровневыми указателями подразумеваются многоуровневые указатели, то вероятно:
1. Читаешь по первому (статичному) адресу (очевидно базовый адрес + 1й оффсет) указатель на второй поинтер.
2. Читаешь по полученному адресу (если таковое требуется - смещаешь (оффсет) этот указатель) следующий указатель
3. Повторяешь п.2 до тех пор пока не получишь указатель на нужные данные
4. Извращаешься как душе угодно
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой
23.01.2012, 17:21
#3
Сержант
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
Re: Multi level pointer
Да это я вроде бы как понимаю, но почему то результата нет...
Код:
/// <summary>
/// Читаем Int'овое значение из памяти приложения
/// с указанным оффсетом
/// </summary>
private Int32 HighLevelReadIntFromMemory(IntPtr handle, int offset)
{
int temp = 0;
temp = LowLevelReadIntFromMemory(handle, baseAddress);
temp = LowLevelReadIntFromMemory(handle, temp + 0x002302E8); //pointer
temp = LowLevelReadIntFromMemory(handle, temp + 0x698); //offset 2
temp = LowLevelReadIntFromMemory(handle, temp + 0x734); //offset 1
temp = LowLevelReadIntFromMemory(handle, temp + offset); offset 0
return temp;
}
/// <summary>
/// Читаем из памяти приложения массив байт по указанному адресу
/// и возвращаем целочисленное его представление
/// </summary>
private Int32 LowLevelReadIntFromMemory(IntPtr handle, int address)
{
var buffer = new byte[4];
IntPtr read;
ReadProcessMemory(handle, (IntPtr)address, buffer, 4, out read);
return (int)BitConverter.ToUInt32(buffer, 0);
}
Так почему то не работает
Добавлено через 52 минуты
скачал библиотеку с [
Ссылки могут видеть только зарегистрированные пользователи. ]
Код:
public void ReadMemory()
{
Memory editor = new Memory();
editor.OpenProcess("l2.bin");
editor.GetModules();
foreach (var module in editor.GetModules())
{
listBox1.Items.Add(module.ToString());
}
int baseaddress = editor.BaseAddress("l2.bin");
int basemoduleaddress = editor.BaseAddress("Core.dll");
int moduleaddress = basemoduleaddress + 0x002302E8;
int[] _hpOffset = { 0x698, 0x734, 0x2F0 };
var HP = editor.ReadInt(moduleaddress, _hpOffset);
label1.Text = "HP: " + Convert.ToString(HP);
}
тоже не получается
Добавлено через 1 час 7 минут
Странно, ничего не менял последний вариант стал работать О_о
________________
Talk is cheap. Show me the code
— Linus Torvalds
Последний раз редактировалось Yukikaze; 23.01.2012 в 18:29 .
Причина: Добавлено сообщение
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Похожие темы
Тема
Автор
Раздел
Ответов
Последнее сообщение
[Программа] Map Pointer
/BES\
Боты, скрипты и прочий софт для Perfect World
18
30.07.2011 12:53
Pointer Для Mail.ru Бильярдов
FoomA
Игры Mail.ru
0
27.05.2011 14:14
ask : Find the pointer
TXB-Hero
Общение и обсуждение, архив Point Blank
0
26.09.2010 13:18
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 17:59 .