Статьи - Дослідження програм - Дзенський реверсинг дослідження програм у польових умовах
Assembler Мова Асемблера Статті Низькорівневе програмування для сучасних Уроки Крекінг DirectX/OpenGL   Оптимізація   Компілятори & nbsp Вірусологія   Мережа   Процесори   Дослідження програм Інструментарій Вихідники
Запровадження
Сам собі PE Sniffer
Натискаємо двічі Enter і дивимося на зрозуміліший дизассембльований код. Щоб він став ще зрозумілішим - натиснемо F8 і F5 - hiew перейде на ту ділянку коду, яка прописана в оригінальній точці входу. Уважно поглянувши на цей код, вже можна зрозуміти на чому він написаний. Наприклад для Delphi програм код буде подібний до цього:
Не впізнати його не можна. просто кілька Call викликів, стандартних у Delphi програмах. Якщо знову перейти в текстовий режим і натиснути і потримати PgUp вгорі побачимо назви секцій. Ось приблизний розклад для недоторканих програм Delphi програм:
- CODE
- DATA
- BSS
- idata
- tls
- rdata
- .reloc
- .rsrc
Отже, з дельфями визначилися, тепер поговоримо про C++ Builder. Тут взагалі все простіше. На оригінальній точці входу завжди такий код:
Байти розташовані між jmp'ом і mov'ом: "C++HOOK". Теж все просто :) Що ж щодо бейсику? А у нього завжди 2 команди на EP:

Як видно з попередніх кількох прикладів - не так уже й потрібний PEiD для визначення компілятора. А що ж про пакувальники? А тут можна навіть не дивитися на точку входу:) Достатньо в текстовому вигляді подивитися на EXE заголовок. UPX після упаковки на початок першої секції поміщає свою структуру, що починається з сигнатури "UPX!", а секції обзиває ".UPX0",".UPX1", ".rsrc", причому секцій три незалежно від того скільки їх було до упаковки.
Якщо ж подивитися на точку входу, код відкриється досить стандартний для всіх версій UPX'а:

Все просто, тільки hiew :) До речі, є методика легко відрізняти MS компілятори від борландових за присутністю "Rich" рядки після DOS Header'а. Хоча про патчу MS лінкера не раз говорилося на даному сайті - як і раніше, більшість використовує непропатчений варіант навіть і не підозрюючи про те, що ж лінкер вставляє в EXE файл.
Загалом, якщо пам'ятати всі ці методики плюс мати неслабкий досвід - можна визначити будь-який компілятор або пакер у hiew'і, це приходить згодом, тому починай зараз!
Стринг референси
Серфінг за EXE
Ассемблуємо

Декриптуємо XOR
Шифруємо за формулою
Як би не сильний був XOR, він не завжди підходить для шифрування/дешифрування. Але сумувати сенсу немає, тому що його дозволяє задавати алгоритм шифрування самому. Для цього натисніть F3, щоб перейти в режим редагування, а потім F7. Відкриється діалог набору коду. Забиваємо туди алгоритм криптування і потім юзаєм. Як писати криптоалгоритм пояснено в довідці - я не переписуватиму її в статті, так як її ти можеш прочитати і так, скажу тільки що нічого складного там немає - розібратися можна.
Реальний приклад

Все вищеописане матиме сенс тільки, якщо це застосувати на реальному прикладі, асаме, нам необхідно щось зламати. Ламати будемо, використовуючи лише HIEW. А для більшої простоти та наочності візьмемо KeygenMe by Fabsys. Стягнути його можна із crackmes.de. Почнемо досліджувати. Відкриваємо keygen.exe у hiew. Що ми бачимо?
тисни F3 і набирай. У мене вийшло таке:
Перспективи розвитку hiew