Optymalizacja kodu assemblera pod względem rozmiaru

Zapraszam do przeczytania mojego małego artykułu na temat optymalizacji kodu assemblera pod względem wielkości. Kilka przydatnych sztuczek przydaje się przy reversingu aplikacji, gdy trzeba zmieścić kod w ograniczonej przestrzeni lub przy kodowaniu shellcodów.

Artykuł dostępny na:

https://dev.to/pelock/assembly-code-size-optimization-tricks-2abd

PS. Polecam również prezentujący różne ciekawe sztuczki nieosiągalne dla kompilatorów HLL

http://mark.masmcode.com/

Simple Polymorphic Engine – SPE32

Simple Polymorphic Engine SPE32 to prosty silnik polimorficzny napisany w assemblerze dla MASM32, dzięki któremu można się dowiedzieć jak w ogóle zbudowane są silniki polimorficzne oraz jak funkcjonują.

Kod polimorficzny w oknie debuggera x86dbg
Inna generacja kodu polimorficznego, tym razem z tzw. junkami

Kod źródłowy i przykład użycia:

https://github.com/PELock/Simple-Polymorphic-Engine-SPE32

System ochrony oprogramowania przed złamaniem

Artykuł prezentujący metody analizy oprogramowania tzw. inżynierii wstecznej, łamania oprogramowania (tzw. cracking) oraz stworzenie programu zabezpieczającego w C++ i assemblerze, wykorzystującego opisane metody ochrony aplikacji przed złamaniem.

Debugger SoftICE

Link:

https://www.pelock.com/pl/artykuly/system-ochrony-oprogramowania-przed-zlamaniem

Męczarnie przy deobfuskacji

Ile czasu potrzebne jest, aby wykonać deobfuskację kodu assemblera zabezpieczonego moim Obfuscatorem?

Obfuskator

Autorowi Binary NinjaJoshowi Watsonowi zajęło to 11 streamingowych epizodów i 26 godzin roboczych, żeby zdeobfuskować 5 linijek kodu assemblera zabezpieczonych Obfuscatorem (pracował nad przykładem dostępnym tutaj).

W 7 epizodzie sam przyznał, że oszukiwał i pisał kod pomiędzy nagrywaniem streamów, z innych ciekawych cytatów można wymienić:

I’m tired dealing with it

Josh Watson

Frustrating

Josh Watson

Wszystkie epizody:

https://www.twitch.tv/videos/366032780 0:49 – 1:48
https://www.twitch.tv/videos/366240933 1:55
https://www.twitch.tv/videos/366736858 2:51
https://www.twitch.tv/videos/366738393 2:47
https://www.twitch.tv/videos/375816563 3:12
https://www.twitch.tv/videos/373060356 3:07
https://www.twitch.tv/videos/375806158 1:47
https://www.twitch.tv/videos/385612137 3:03
https://www.twitch.tv/videos/385613601 2:51
https://www.twitch.tv/videos/385615821 2:55
https://www.twitch.tv/videos/387072436 1:12

Kawał solidne roboty, jednak dokładnie taki jest cel obfuskacji kodu, ponieważ uzmysławia jak wiele czasu potrzeba do analizy nawet 5 linijek kodu poddanych zabezpieczeniu.

Obfuscator dla Assemblera

Ukazała się zaktualizowana wersja mojego Obfuscatora dla kodu źródłowego assemblera. Aktualizacja jest niewielka, gdyż dotyczy zmiany komunikacji z serwerem docelowym (końcówka WebAPI) poprzez szyfrowany protokół HTTPS zamiast HTTP.

Obfuscator

Dla czytelników SecNews darmowy kod aktywacyjny

28F2-4D58-4652-7BE1

Bierzcie i korzystajcie z niego dopóki jest aktywny 🙂