Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
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. Заранее спасибо Если надо - могу приложить патченый файл и оригинальный, или непатченый клиент любой версии |
|
|
|
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 |
|
|
|
10 Aug 2010, 19:21
Сообщение
#3
|
|
![]() Immortal Сообщений: 1 437 Спасибо сказали: 2149 раз |
я знаю эту программу, она работает, да)
но я сам хочу пропатчить, в памяти. |
|
|
|
![]() ![]() |
| Текстовая версия | Сейчас: 25 December 2025 - 11:51 |
|
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |
|