Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Патч таблицы данных exe-файла
DF2 :: ФОРУМЫ > Основные форумы > Софт и железо
Vizit0r
итак, имеем клиент одной не так чтоб новой онлайн-игрушки с багом, который почему-то не исправляют уже который год - это адская нагрузка на проц (включая все новые процы - зачастую одно ядро на 100% загружают).
Я из своей программы этот клиент подгружаю в память, применяю мелкие патчи к нему (никаких баго-читов, мелочи типа снятия шифрования для удобства работы, и все такое), затем запускаю.

В процессе подгрузки в память я частично разбираю PE структуру, получаю адреса начала таблиц импорта и данных. В принципе могу разобрать полностью таблицу импорта, не особо там сложно.

Что было найдено на просторах тырнета по решению имеющегося бага:
Цитата
нагрузку создает основной цикл вызывающий PeekMessage
   и далее выполняющий остальные операции. Если же перед
   вызовом PeekMessage вызвать Sleep(0) нагрузка существнно
   уменьшится, не повлияв на производительность клиента в целом
   собственно идея по патчингу на LowCPU такая:
   найти в загруженном клиенте в разделе импорта адреса PeekMessage и Sleep
   запомнить их
   найти в клиенте 12(или 13?) nop, и записать туда иструкции
      push 0
      call Sleep
      jmp Адрес_PeekMessage
   в таблице импорта изменить адрес PeekMessage на адрес этих инструкций

Есть патченый таким образом клиент старой версии, работает отлично. Человек, который его делал - исчез.

В процессе поиска гугл рассказал, что структура таблицы импорта проста, на каждый айтем в ней есть 2 главных поля - это название процедуры, и адрес.
Еще он рассказал, что "таблица данных - это глючная фигня, и в ней лучше ничего не искать - а если шота надо - иди в обход". Ничего внятнее я не нашел. Десятки описаний вирусосоздателей о том, как встроить вызов своей библиотеки в начала таблицы импорта - помогают мало.

На этом форуме хватает людей, которые собаку съели на встраивании своих возможностей в чужие exe (герои3 - самый явный пример). Помогите плз, в какую сторону копать, по возможности поподробнее, ибо я не люблю ассемблер, а он меня. простейшие операции понимаю, а все что глубже - со скрипом. Пишу на языках уровнем повыше - C++, Delphi.

Заранее спасибо


Если надо - могу приложить патченый файл и оригинальный, или непатченый клиент любой версии
pHOMM
Лично я пользую не асмопатченые экзешки героев всех версий (кроме ВТ конечно, куда сие по дефолту встроено) а специальную программулю, которую нашёл в процессе поиска ответов на подобные вопросы относительно героев (не помню был ли в то время уже экзебилдер от Берсеркера).

Так вот это ntsleep . уж не помню где его нашёл... положу к себе,
пользоваться так - (как я лично сделал) - пишется бат-фаил :

ntsleep имя_нужной_проги.ехе

и запускается с батника, для удобства и батник и сама нтслип лежат в том же каталоге , где прога

и да ) прога ессно работает для всего (как я понял, вроде читал в её ридми, но вроде потерял сам ридми, ну гугл в помощь...)

линк: http://phomm.narod.ru/NtSleep.zip
Vizit0r
я знаю эту программу, она работает, да)

но я сам хочу пропатчить, в памяти.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.