Сейчас на форуме: jinoweb, bartolomeo, rmn (+5 невидимых)

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

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

Создано: 13 мая 2017 12:46
· Личное сообщение · #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.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

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

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



Ранг: 53.9 (постоянный), 33thx
Активность: 0.050
Статус: Участник

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

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



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

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

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



Ранг: 53.9 (постоянный), 33thx
Активность: 0.050
Статус: Участник

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

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

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



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

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

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

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




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

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

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



Ранг: 53.9 (постоянный), 33thx
Активность: 0.050
Статус: Участник

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

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

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


 eXeL@B —› Программирование —› Компиляция антиотладочных трюков от КК
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати