ASM Start Process скрыт - PullRequest
       44

ASM Start Process скрыт

1 голос
/ 18 августа 2011

У меня есть уже скомпилированное консольное приложение C ++, которое показано в виде маленького черного окна. Теперь я хочу разобрать приложение и добавить код, чтобы скрыть начало процесса. Может быть, вы можете помочь мне найти вызов API или объяснить, как это работает. Текущий дебагер, который я использую, - это OllyDBG, но у меня также есть знания в IDA и WDASM32.

Спасибо вперед!

1 Ответ

6 голосов
/ 18 августа 2011

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

В заголовке PE есть флаг, определяющий подсистему, с которой был скомпилирован код.В настоящее время это будет WINDOWS_CUI, и вы хотите изменить его на WINDOWS_GUI.

. Чтобы выполнить внедрение кода, найдите кодовую пещеру, а затем подключите JMP в точке входа (EP) к этой кодовой пещере.В кодовой пещере напишите инструкцию, которая была перезаписана JMP, затем выполните вызов FreeConsole, затем JMP, чтобы вернуться к инструкции после JMP, который вы исправили в EP ранее.

Позвольте привести пример.Я скомпилировал C-программу на VC ++:

#include <Windows.h>

int main() {
  Sleep(INFINITE);
  return 0;
}

Если мы откроем двоичный файл результата в OllyDbg, мы получим что-то вроде этого:

1

Нажмитебольшая M вверху, чтобы получить карту памяти:

2

Поскольку наш основной модуль - Some_console_App, дважды щелкните там заголовок PE, который приведет нас к следующему:

3

Прокрутите немного вниз, чтобы найти подсистему:

4

Как вы можете видеть, для нее установлено IMAGE_SUBSYSTEM_WINDOWS_CUI, которая определена как 3. Мы хотимчтобы установить его в IMAGE_SUBSYSTEM_WINDOWS_GUI, который равен 2. Вернитесь в окно CPU и в шестнадцатеричном дампе перейдите по адресу, на котором был установлен флаг подсистемы.В данном случае это 0x0136013C:

5

Выберите байт, который вы хотите изменить, нажмите Ctrl-E и измените 3 на 2. Затем щелкните правой кнопкой мыши >> Копировать в исполняемый файл,В открывшемся окне «Файл» щелкните правой кнопкой мыши и выберите «Сохранить файл».

Tada!Готово.Извините за большие разрешения фотографий.

...