IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> Патч таблицы данных exe-файла
Vizit0r
сообщение 10 Aug 2010, 09:47 (Сообщение отредактировал Vizit0r - 10 Aug 2010, 09:49)
Сообщение #1

Immortal
Сообщений: 1 437
Спасибо сказали: 2149 раз




итак, имеем клиент одной не так чтоб новой онлайн-игрушки с багом, который почему-то не исправляют уже который год - это адская нагрузка на проц (включая все новые процы - зачастую одно ядро на 100% загружают).
Я из своей программы этот клиент подгружаю в память, применяю мелкие патчи к нему (никаких баго-читов, мелочи типа снятия шифрования для удобства работы, и все такое), затем запускаю.

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

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

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

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

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

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


Если надо - могу приложить патченый файл и оригинальный, или непатченый клиент любой версии
Go to the top of the pageAdd Nick
 
+Quote Post
pHOMM
сообщение 10 Aug 2010, 16:49 (Сообщение отредактировал pHOMM - 10 Aug 2010, 16:53)
Сообщение #2

Что же Вы , Маэстры, ну-ка гряньте нам что-нибудь !!!
Сообщений: 226
Спасибо сказали: 171 раз




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

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

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

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

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

линк: http://phomm.narod.ru/NtSleep.zip


--------------------
Это всё я : кодинГ, мэпмейкинГ, скриптинГ

Инфо о моих проектах, в основном геройских, http://phomm.narod.ru
Раздел моей тактической игры Интакт http://forum.df2.ru/index.php?showforum=135
Go to the top of the pageAdd Nick
 
+Quote Post
Vizit0r
сообщение 10 Aug 2010, 19:21
Сообщение #3

Immortal
Сообщений: 1 437
Спасибо сказали: 2149 раз




я знаю эту программу, она работает, да)

но я сам хочу пропатчить, в памяти.
Go to the top of the pageAdd Nick
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 25 December 2025 - 11:51
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика