Я из своей программы этот клиент подгружаю в память, применяю мелкие патчи к нему (никаких баго-читов, мелочи типа снятия шифрования для удобства работы, и все такое), затем запускаю.
В процессе подгрузки в память я частично разбираю PE структуру, получаю адреса начала таблиц импорта и данных. В принципе могу разобрать полностью таблицу импорта, не особо там сложно.
Что было найдено на просторах тырнета по решению имеющегося бага:
Цитата
нагрузку создает основной цикл вызывающий PeekMessage
и далее выполняющий остальные операции. Если же перед
вызовом PeekMessage вызвать Sleep(0) нагрузка существнно
уменьшится, не повлияв на производительность клиента в целом
собственно идея по патчингу на LowCPU такая:
найти в загруженном клиенте в разделе импорта адреса PeekMessage и Sleep
запомнить их
найти в клиенте 12(или 13?) nop, и записать туда иструкции
push 0
call Sleep
jmp Адрес_PeekMessage
в таблице импорта изменить адрес PeekMessage на адрес этих инструкций
и далее выполняющий остальные операции. Если же перед
вызовом PeekMessage вызвать Sleep(0) нагрузка существнно
уменьшится, не повлияв на производительность клиента в целом
собственно идея по патчингу на LowCPU такая:
найти в загруженном клиенте в разделе импорта адреса PeekMessage и Sleep
запомнить их
найти в клиенте 12(или 13?) nop, и записать туда иструкции
push 0
call Sleep
jmp Адрес_PeekMessage
в таблице импорта изменить адрес PeekMessage на адрес этих инструкций
Есть патченый таким образом клиент старой версии, работает отлично. Человек, который его делал - исчез.
В процессе поиска гугл рассказал, что структура таблицы импорта проста, на каждый айтем в ней есть 2 главных поля - это название процедуры, и адрес.
Еще он рассказал, что "таблица данных - это глючная фигня, и в ней лучше ничего не искать - а если шота надо - иди в обход". Ничего внятнее я не нашел. Десятки описаний вирусосоздателей о том, как встроить вызов своей библиотеки в начала таблицы импорта - помогают мало.
На этом форуме хватает людей, которые собаку съели на встраивании своих возможностей в чужие exe (герои3 - самый явный пример). Помогите плз, в какую сторону копать, по возможности поподробнее, ибо я не люблю ассемблер, а он меня. простейшие операции понимаю, а все что глубже - со скрипом. Пишу на языках уровнем повыше - C++, Delphi.
Заранее спасибо
Если надо - могу приложить патченый файл и оригинальный, или непатченый клиент любой версии