Распаковка вручную Симонов Илья (nazi@gh0sts.org) Спецвыпуск: Хакер, номер #057, стр. 057-032-5 Однако не всегда все так просто и не всегда автопоиск спасает. Поэтому напоследок упомяну некоторую хитрость, которая уже давно используется у реверсеров. Если мы попробуем таким же образом поступить с файлом, упакованным упаковщиком с небольшой степенью защиты, то функции мы не обнаружим, в этом случае придется искать RVA самостоятельно. Как известно, функции в исполняемом файле находятся в виде адресов. Упаковщик сохраняет всю таблицу. Следовательно, по адресам в простом HEX-редакторе мы сможем обнаружить таблицу импорта в упакованном файле. Но для этого нам необходимо знать хотя бы одну функцию, которая присутствует в файле, и ее адрес. GetModuleHandleA встречается практически во всех Windows-программах, а адрес функции легко узнается с помощью отладчика. Достаточно ввести в SoftIce "exp GetModuleHandleA" и получить ответ 77E87D93 (или в OllyDbg просто поставить бряк на эту функцию, дойти до нее и прочитать внизу DS:[01001094]=77E87D93 (KERNEL32.GetModuleHandleA) =)). При поиске в НЕХ-редакторе не забывай, что все адреса хранятся в обратном порядке, то есть искать мы будем 937DE877. У тебя, возможно, будет другое число. Уверяю, что ты точно не пропустишь место таблицы импорта. Запускаем опять PE Editor, выбираем наш дамп и жмем FLC. Затем вычисляем RVA, для этого нажимаем на кнопку offset и вводим найденный нами адрес. После нажатия кнопки DO в поле RVA будет то, что мы искали. На глаз прикинем размер таблицы импорта. Теперь все так же, только без автопоиска. Если мы были правы (а мы были правы!), то появится уйма функций. Удалим те, что с надписью NO, и фиксируем снимок (Fix Dump). Наслаждаемся и читаем врезки. Вместо заключения Надеюсь, чтение этой статьи утяжелило твой багаж знаний, и ты встал на истинный путь реверсера. Может быть, ты, наоборот, вспомнил молодость, когда еще стоял на распутье, и теперь с ностальгией читаешь слова заключения, а на твоем винте уже лежат рабочие дампы армы. |