PhantomRShell: бэкдор, который маскируется с помощью дизассемблера
У вирусных аналитиков есть небольшая профессиональная трагедия: работать с вредоносами обычно скучнее, чем может казаться по их вычурным названиям. За каждым ShadowSomething RAT/Loader/Stealer почти всегда скрывается один и тот же набор знакомых техник: загрузчик, закрепление в системе, канал связи...
Как мыслит дизассемблер: внутренняя логика decompiler-инструментов на примере Ghidra и RetDec
Декомпиляция — это не магия, а очень упрямый, скрупулёзный и грязноватый процесс, где каждый байт может оказаться фатальным. В этой статье я разложу по винтикам, как мыслят современные декомпиляторы: как они восстанавливают структуру кода, зачем строят SSA, почему не верят ни одному call’у на...
Меняем промежуточное представление кода на лету в Ghidra
Когда мы разрабатывали модуль ghidra nodejs для инструмента Ghidra, мы поняли, что не всегда получается корректно реализовать опкод V8 (движка JavaScript, используемого Node.js) на языке описания ассемблерных инструкций SLEIGH. В таких средах исполнения, как V8, JVM и прочие, один опкод может...