нет, это не хитрый антиотладочный
Кстати говоря, если установить точку останова на _start и дать отладчику немного поработать, мы попадем в самое начало расшифрованной программы. после чего ее будет можно анализировать в обычным режиме или снять дамп. Только эта должна быть именно аппаратная (команда "hbreak _start" в gdb), а не программная ("b _start") точка останова, иначе все рухнет (программная точка внедряет в расшифровываемую программу код CCh, который после расшифровки превращается совсем не в то, что было до нее).
Это очевидная ошибка создателя шифратора. Вот если бы он перенаправил _start
в какое-нибудь интересное место, вот тогда бы хакерам пришлось попыхтеть, а так… "защита" снимается в считанные секунды безо всякого труда, однако, представляет интерес посмотреть как выглядит код расшифровщика в IDA Pro, точка входа в который, как мы помним, равна 80495DCh:
extern:80495DC 7F 01 00 00 extrn puts@@GLIBC_2_0:near
extern:80495E0 FA 00 00 00 extrn __libc_start_main@@GLIBC_2_0:near
extern:80495E4 7F 01 00 00 extrn puts:near ; CODE XREF: .plt:_puts^j
extern:80495E4 ; DATA XREF: .got:off_80495CC^o
extern:80495E8 FA 00 00 00 extrn __libc_start_main:near
extern:80495E8 ; CODE XREF: ___libc_start_main^j
extern:80495E8 ; DATA XREF: .got:off_80495D0^o
extern:80495EC 00 extrn _Jv_RegisterClasses ; weak
extern:80495F0 00 extrn __gmon_start__ ; weak
extern:80495F0 ; DATA XREF: .got:080495D4^o