Русский / Russian English / Английский

Сейчас на форуме: (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Программирование —› Компиляция антиотладочных трюков от КК
Посл.ответ Сообщение

Ранг: 12.0 (новичок)
Статус: Участник

Создано: 13 мая 2017 12:46 New!
Цитата · Личное сообщение · #1

Пытаюсь компильнуть код из статьи каспера "энциклопедия антиотладочных приемов", но каждый раз натыкаюсь на новую ошибку. Вот сам код:
Code:
  1. char yes[]="debugger is detected :-)";
  2. char noo[]="debugger is not detected";
  3. nezumi()
  4. {
  5. char *p=noo; // презумпция невиновности is on ;-)
  6. __asm
  7. {
  8. ; int 03 ; для отладки
  9. pushfd ; сохраняем флаги в стеке, включая и TF
  10. pop eax ; выталкиваем сохраненные флаги в eax
  11. and eax, 100h ; проверяем состояние TF-бита
  12. jz not_under_dbg ; если TF не взведен, нас не трассирует…
  13. mov [p], offset yes ; …ну или мы не смогли это обнаружить ;)
  14. not_under_dbg:
  15. }
  16. MessageBox(0, p, p, MB_OK);
  17. }


Откомпилируем ее следующим образом (см. листинг 2). Все это шаманство потребовалось: а) чтобы убить стартовый код и программа сразу же начиналась с интересующей нас функции nezumi(); б) чтобы сократить размер программы, равный в данном случае 768 байтам.

cl.exe /c /Ox /Os /G6 TF-0x0-simple.c
link.exe TF-0x0-simple.obj /ENTRY:nezumi /MERGE:.rdata=.text
/ALIGN:16 /DRIVER /FIXED /SUBSYSTEM:CONSOLE KERNEL32.LIB USER32.lib
Насколько я понял, все это происходит в Visual C++ 6



Ранг: 251.5 (наставник)
Статус: Участник

Создано: 13 мая 2017 13:01 New!
Цитата · Личное сообщение · #2

И чё? Ошибки мы угадать должны?
PS: если собираешь в х64 - инлайн ассемблер не поддерживается.



Ранг: 53.9 (постоянный)
Статус: Участник

Создано: 13 мая 2017 13:35 · Поправил: deniskore New!
Цитата · Личное сообщение · #3

--> Вот <-- вам нормальные примеры, можете открыть проект через Visual Studio и поизучать.
Если принципиально нужен маленький размер ехешников - пишите на ассемблере, будет еще меньше чем 768 байт .
P.S код в первом посте в последних версиях VS скорей всего не скомпилится (в данный момент у меня нет VS под рукой)



Ранг: 12.0 (новичок)
Статус: Участник

Создано: 13 мая 2017 13:35 New!
Цитата · Личное сообщение · #4

LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Почему вообще идет обращение к этой либе не ясно.
Собираю под ХР



Ранг: 53.9 (постоянный)
Статус: Участник

Создано: 13 мая 2017 13:37 New!
Цитата · Личное сообщение · #5

shiroko пишет:
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Почему вообще идет обращение к этой либе не ясно.
Собираю под ХР

Значит вы не указали, что --> ENTRY <--у вас функция NEZUMI.
Компилер ищет у вас функцию main().



Ранг: 12.0 (новичок)
Статус: Участник

Создано: 13 мая 2017 13:49 New!
Цитата · Личное сообщение · #6

deniskore пишет:
Значит вы не указали, что --> ENTRY <--у вас функция NEZUMI

Ну как не указал если все в точности как указано делаю




Ранг: 2015.5 (!!!!)
Статус: Модератор
retired

Создано: 13 мая 2017 14:34 New!
Цитата · Личное сообщение · #7

Рантайм отключи. /nodefaultlib



Ранг: 53.9 (постоянный)
Статус: Участник

Создано: 13 мая 2017 16:17 New!
Цитата · Личное сообщение · #8

Archer пишет:
Рантайм отключи. /nodefaultlib

Проверил в VS 2017, заработало и без /nodefaultlib, достаточно указать ENTRY.


 eXeL@B —› Программирование —› Компиляция антиотладочных трюков от КК

Видеокурс ВЗЛОМ