Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация

Поиск байтов в памяти

-

Общение разработчиков

- Программирование для Point Blank, общение и обсуждение разработок

Ответ
 
Опции темы
Старый 25.01.2014, 19:13   #1
 Разведчик
Аватар для den-x
 
den-x на правильном путиden-x на правильном пути
Регистрация: 12.08.2011
Сообщений: 1
Популярность: 124
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Поиск байтов в памяти

Привет!

Сегодня пытался написать программу для поиска последовательности байт в программе, которая загружает SWF(в которой бардак полный).

Из исходников взял функции:
Код:
BOOL bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
	for(;*szMask;++szMask,++pData,++bMask)
		if(*szMask=='x' && *pData!=*bMask)
			return false;

	return (*szMask) == NULL;
}

DWORD FindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask)
{
	for(DWORD i=0; i < dwLen; i++)
		if( bCompare((BYTE*)(dwAddress+i), bMask, szMask) )
			return (DWORD)(dwAddress+i);

	return 0;
}
Вызываю так:
Код:
DWORD *table = (DWORD *)FindPattern(0x08000000, 0x0F000000, (PBYTE)"\x00\x00\x1F\xBD\x00\x07", "xxxxxx");
  if(table > 0)
  {
    char str[256] = {0};
    sprintf(str, "%x", table);
    MessageBox(NULL, str, "", MB_OK);//Тут вывод найденного адреса
    /*
    while( *table!='\0' )
      --table;

    sprintf(str, "%x", table);
    MessageBox(NULL, str, "", MB_OK);//это уже не важно.
    */
  }
  else
  {
    MessageBox(NULL, "Key not found", "Error!", MB_OK);
  }
В итоге ни ошибки, ни успеха. По моему программа попадает в нечитаемую секцию. С помощью CE отлично находится, т.к CE пропускает нечитаемые секции.
Отдебажить никак не могу - условные бряки проскакивают, а вручную цикл тоже никак.
  Ответить с цитированием
Старый 25.01.2014, 23:02   #2
 Фельдмаршал
Аватар для Dimedrol1536
 
Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
Отправить сообщение для Dimedrol1536 с помощью ICQ Отправить сообщение для Dimedrol1536 с помощью Skype™
 
По умолчанию Re: Поиск байтов в памяти

Код:
DWORD table = FindPattern((DWORD)название модуля где искать будем, адресс в памти до куда искать, (PBYTE)"\x00\x00\x1F\xBD\x00\x07", "xxxxxx");
Код:
    char str[256];
    sprintf(str, "0x%X", table);
    MessageBox(NULL, str, "", MB_OK);
  Ответить с цитированием
Пользователь сказал cпасибо:
Я-artemfcsh (26.01.2014)
Старый 26.01.2014, 04:28   #3
 Разведчик
Аватар для den-x
 
den-x на правильном путиden-x на правильном пути
Регистрация: 12.08.2011
Сообщений: 1
Популярность: 124
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Поиск байтов в памяти

По моему, 2 аргумент это кол-во байт для поиска, но не в том соль.

Несколько адресов, сделанные при перезапуске программы:
[Ссылки могут видеть только зарегистрированные пользователи. ]
Распределение памяти:
[Ссылки могут видеть только зарегистрированные пользователи. ]

Получается мне надо искать от 0x00FE0000, 159744 байт? Но в этом регионе нет моих байтов
  Ответить с цитированием
Старый 26.01.2014, 19:03   #4
 Фельдмаршал
Аватар для Dimedrol1536
 
Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
Отправить сообщение для Dimedrol1536 с помощью ICQ Отправить сообщение для Dimedrol1536 с помощью Skype™
 
По умолчанию Re: Поиск байтов в памяти

Цитата:
Сообщение от den-xПосмотреть сообщение
Распределение памяти:

оно тебе не надо, через СЕ находиш свой адресс по байтам, далее к первое число адресса меняеш на А или D.
  Ответить с цитированием
Старый 26.01.2014, 19:36   #5
 Разведчик
Аватар для den-x
 
den-x на правильном путиden-x на правильном пути
Регистрация: 12.08.2011
Сообщений: 1
Популярность: 124
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Поиск байтов в памяти

Цитата:
оно тебе не надо, через СЕ находиш свой адресс по байтам, далее к первое число адресса меняеш на А или D.

И адрес чего я получу? Конца региона?

Добавлено через 1 час 20 минут
Помогла мне функция IsBadCodePtr, без нее DLL просто вылетает при чтении защищенной зоны, даже без ошибок.

Последний раз редактировалось den-x; 26.01.2014 в 20:57. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 26.01.2014, 21:34   #6
 Фельдмаршал
Аватар для Dimedrol1536
 
Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(Dimedrol1536 сломал счётчик популярности :(
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
Отправить сообщение для Dimedrol1536 с помощью ICQ Отправить сообщение для Dimedrol1536 с помощью Skype™
 
По умолчанию Re: Поиск байтов в памяти

Цитата:
Сообщение от den-xПосмотреть сообщение
И адрес чего я получу? Конца региона?

адресс своих байтов получеш.
  Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 11:06.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net