Otázka:
Reverzní Patche (binární rozdíl)
Stolas
2013-07-23 19:13:22 UTC
view on stackexchange narkive permalink

Ví někdo z vás o nedávném nástroji pro bindiff pomocí ImmunityDebugger? Vím o BinDiff od Zynamics a PatchDiff pro IDA. Ale opravdu chci takový nástroj v ImmDBG. Také vím o Radare's bindiffer a funkci v mona.py (ale to je více s oblastmi paměti).

Teď používám HexEditor a diff používám toto. Pak vyhledám offset + základní adresu pomocí Immunity. To již není možné, protože jsem nedávno začal obracet větší opravy.

(Pro úplnost, pro aktualizace firmwaru používám Binwalk. A měli byste také :))

Myslím, že Immunity Debugger postrádá mnoho funkcí dostupných v IDA API, které používají PatchDiff i Zynamics BinDiff. Možná budete chtít upravit PatchDiff, abyste zjistili, zda toho lze dosáhnout (je to open source).
Co přesně se snažíte dosáhnout? Zvýraznit rozdíl v hexadecimálním zobrazení?
Pochybuji, že imunita postrádá funkce. Jak těžké může být rozdíl? =) A kvůli výzkumu zranitelnosti chci, aby byly moje různé opravy produktivnější. Teď jsem rozdíl pomocí hex editoru, najít offset v ImmDbg a najít, co se změnilo opcodes. Pokud mohu kombinovat nástroje do jednoho, udělám to. O tom, že PatchDiff je otevřený zdroj. Možná se pokusím napsat nějaký Imm Plugin, abych PatchDiffing dostal na požadovanou úroveň. (ale raději obrátím, než zapíšu kód)
Chybí mu funkce, to je jisté: Máte prototyp všech funkcí v binárním formátu? Jak zjistí funkce v binárním souboru? Domnívá se, že lze funkci rozdělit na různé malé bloky? Jak jsou spravovány základní bloky? Rozbije kód podmíněný skok? Jak dobré je hledání spínacích struktur? Opravdu mu chybí mnoho informací. Pokud jde o to, „jak těžké může být rozdíl“, možná má Rolf Rolles zájem položit tuto otázku.
Tyto funkce chybí, ale pochybuji (opravte mě, pokud se mýlím), že jsou pro BinDiffing vyžadovány. Musím říct, že jsem OBROVSKÝ fanoušek IDA. Diffing lze provést například pomocí Meld. Ale to je řešení toho chudáka;)
Stolasi, zdá se, že nejasné, co je to binární diffing nebo jak to funguje. Když řekneme „binární diffování“ v kontextu BinDiff, DarunGrim, PatchDiff atd., Nemluvíme konkrétně o rozdílu zahrnujícím surové bajty spustitelného souboru nebo o použití „diff“ na surové demontáži. Tyto nástroje vytvářejí grafické demontované znázornění dvou binárních souborů a poté je porovnávají. Kvalita nástroje diff tedy závisí na demontážním programu. To je důvod, proč komentátoři stále zmiňují IDA, a proč si stále črtám obočí na váš návrh použít hexadecimální editor, Meld nebo diff.
Musím říct, že stěží vážím. Stejně jako u mé „metody“ je spousta práce, aby bylo vše provedeno správně. Zkusím DarunGrim.
Četl jsem Nicolas A. Economou (CoreImpact) 2009 Binary Diffing a vidím, kde jsem se pokazil.
Jeden odpovědět:
Stolas
2013-09-07 02:49:38 UTC
view on stackexchange narkive permalink

Odpověď leží v komentářích, přečtěte si Binary Diffing od Nicolase A. Economou (CoreImpact) 2009, abyste zjistili proč.

Dobrý Binary Diffing je ve skutečnosti mnohem těžší téma, které dělá mnohem víc než porovnávat bajty nebo bity.

Vytvoření binárního rozdílu pomocí objdump a meld opravdu není správná cesta. Přečtěte si dokument CoreImpact a zobrazí se některé problémy s binárním rozdílem.



Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...