Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 37 reacties
Submitter: pandit

Google maakt de programmacode-vergelijkingstool BinDiff gratis beschikbaar voor iedereen. De tool kan code gemakkelijk uiteenzetten en verschillen en gelijkenissen tussen twee sets code opsporen. Het programma is interessant voor programmeurs, maar ook voor security-onderzoekers.

BinDiffChristian Blichmann van Google vertelt dat de tool voorheen al in prijs verlaagd was maar nu dus voor iedereen gratis te gebruiken is. Onderaan die blogpost meldt de Google-werknemer echter wel dat voor het gebruik van BinDiff de Hex-Rays IDA Pro-disassembler nodig is. Een licentie daarvan kost de gebruiker nog wel minstens 1019 euro.

BinDiff kan ingezet worden om de samenstellingen van binaries in onder andere x86-, mips-, ARM- en Powerpc-architecturen te vergelijken. BinDiff wordt ook gebruikt om software-updates van anderen te doorgronden. Google zegt zelf ook de software in te zetten om op grote schaal malwaredetectie uit te voeren voor zowel zijn eigen werknemers als zijn gebruikers. BinDiff-ontwikkelaar Zynamics is sinds 2011 eigendom van Google.

Moderatie-faq Wijzig weergave

Reacties (37)

Het verbaast me dat ze nog java Swing gebruiken voor dit soort applicaties. Je zou toch verwachten dat er vandaag de dag betere alternatieven voor zouden zijn :/
Zoals?

Meeste van die Cross-Platform GUI toolkits hebben irritante licenties (ik denk aan Qt).
Qt is zowel verkrijgbaar onder een commerciele licentie als onder de LGPL versies 2.1 en 3. Wat is er irritant aan zoveel keus?
Dit is dan ook een tool gemaakt door een bedrijf (Zynamics) dat is overgenomen door Google. Daar heerst een andere mindset binnen het bedrijf en sowieso andere types klanten dan Google.

Van de andere kant, Swing / Java mag volgens hipsters niet zo sexy zijn tegenwoordig, maar het doet wel wat het doen moet. En BinDiff is een tool, geen game of office applicatie met grafische opsmuk om consumenten lekker te maken.
Vond ik ook wel vreemd, zeker aangezien er 'n perfect alternatief voor bestaat: JavaFX. Smaken verschillen, maar JavaFX ziet er ten opzichte van Swing echt wel 'n stukje moderner uit :)

Langs de andere kant, zolang je je werk ermee gedaan krijgt, maken ze voor mijn part gebruik van ASCII-art :+
JavaFX2 is een prima alternatief voor Swing. Het wordt standaard meegeleverd met de JDK/JRE tegenwoordig. Het heeft wel erg lang geduurd voor er een fatsoenlijk alternatief kwam :)
Christian Blichmann van Google vertelt dat de tool voorheen al in prijs verlaagd was
Ik wist eigenlijk niet dat Google ook software verkocht.. verkopen ze meer software?
Van oudsher verkocht Google zoekmachinesoftware - voor site eigenaren die een zoekfunctie op hun site wensen, en daarbij geen reclames van concurrenten willen zien. Deze software bestaat al een jaar of vijftien.
Veel later is er bijvoorbeeld Google Analytics Premium bijgekomen. Dit is meer een service die in de Google cloud draait, omdat je per jaar betaalt (ik meen US$ 150.000 per jaar).
Telefoonfabrikanten kunnen ook software aanschaffen, welke ze vervolgens kunnen doorverkopen met hun telefoons. Klanten zijn Samsung en dergelijke.

Dus ja, ze verkopen meer software.
Vergeet de NIK collection niet, en natuurlijk Sketchup (alhoewel ze dat net hebben verkocht aan Trimble.
De "pro" versie van Google Earth (standalone applicatie) was tot een paar jaar geleden ook nog betaald.
Telefoonfabrikanten kunnen ook software aanschaffen, welke ze vervolgens kunnen doorverkopen met hun telefoons. Klanten zijn Samsung en dergelijke.
Als je op Android doelt, dit is geheel gratis zolang je lid bent van de Open Handset Alliance partijen als Samsung kunnen gratis gebruik maken van Android, maar ze moeten een ongeforkte versie van Android draaien. Ze mogen wel visuele aanpassingen maken, maar alle cores funties en core apps moeten aanwezig zijn. Het voordeel tov Amazon android fork is dat je hierdoor gratis gebruik mag maken van alle services en diensten van google. Nadeel is dat je naast je eigen apps, ALTIJD de Google variant erbij naast moet installeren.
Ligt er aan wat jij als software ziet.

Analytics is software voor statistieken, daar is ook een betaald model voor.
Adwords is software om advertenties in te regelen.

Geen software op dvd maar saas.
Volgens mij begrijp je niet helemaal waar dit voor gebruikt wordt. Het idee van BinDiff is dat je twee binaries kunt vergelijken en zo kunt zien of (en wat) de overeenkonsten en verschillen zijn tussen de twee binaries. Stel je hebt een programma gedownload van een website en de volgende dag verschijnt er een versie van diezelfde software maar dan met een backdoor. Met een programma als BinDiff kun je dan snel de twee binaries vergelijken om te zien welke stukken code er gewijzigd zijn en wat die aangepaste code precies doet. De diff van Eclipse en NetBeans wordt niet gebruikt om binaries te disassemblen maar om verschillen in de programmacode te laten zien voordat ze gecompiled zijn, en dat is een wezenlijk verschil.
nee, met die gewone diff tools kan je geen binaries vergelijken, alleen source (text) files
Ja het kan wel, maar dan zie je niet duidelijk de verschillen, en al helemaal niet wat het inhoud.
Je kan een diff doen op de disassembly van de binaries maar dat is lang niet zo overzichtelijk als wat ik deze tool lijk te zien doen met hun "flowchart" feature.
Dan begrijp je niet wat deze tool doet.. je vergelijkt appels met peren.
Dat ligt er maar aan wat je manier van controleren is. Er zijn ook andere Tools welke dit kunnen. Mijn voorbeeld was het meest plain simpele verhaal om te beginnen met easy Diff.
Gaat niet om broncode vergelijking maar juist gecompileerde binaries. Dat is wel iets andere koek dat platte tekst vergelijken.
Er bestaat vast wel een hex-editor die 2 bestanden byte-wise vergelijkt en de niet overeenkomende bytes een andere kleur geeft. Dan heb je het nog niet gedisassembled maar al bijna hetzelfde resultaat. (Volgens mij heb je daar sowieso pas wat aan als je allerlei machine-specifieke parameters mee geeft.)

Jammer dat de content op dat plaatje niet te lezen is.
"Dan heb je het nog niet gedisassembled maar al bijna hetzelfde resultaat"

Wat!?! Gecompileerde byte codes and dissambled code is volgens jou bijna hetzelfde resultaat? Volgens mij heb je geen idee waar je over praat.
Wat is volgens jou het verschil dan? Volgens mij alleen de manier van weergeven. Alle byte-reeksen die een instructie + parameters voorstellen vervangen met een human-readable instructie zodat je niet tegen spaghetti aankijkt.. Voor een echt bruikbare weergave moet je programma volgens mij de parameters die gebruikt zijn bij het compileren waaronder de hele specificatie van de target instructieset kennen.
Disassembleren is een "beetje" meer dan alleen machine language "terug" zetten naar human readable assembly. Zo zijn veel binairies afhankelijk van externe libraries en systeem specifieke eigenschapen die de layout van je applicatie bepalen. Een "simpele" z80 kan je wel los dissableren maar eentegenwoordige windows app vereist een boel extras en niet de data is computer taal.

Die IDA tool is echt top, ondersteunt ook heel wat instructie sets en binaire vormen als windows PE, elf en meer. Tuurlijk vergis ik me in wat exacte termen. De demo werkt prima en Radare is een opensource concurent die je zeker ook moet testen. Handige van bijvoorbeeld ida is dat je een binaire applicatie zelfs kan debuggen met de gedyssableerde code. Dus dan word de code nog "levendiger".

Zelf bezig met de xbox classic en zonder alle sourcecode is dit erg handig te leren hoe MS connectie legt met een xbox live server.
Ollydbg heeft ook vergelijkbare tools (plugins), maar Ida overtreffen ze daar niet mee
Van gehoord, hopelijk zette dit soort dingen zich voort. Wat ik vooral hoop is dat Ida of een bepaalde standaard is om naar en daarna vooruit te werken of om juist een andere weg in te slaan. ollydbg is windows, miss werkt ie onder wine, maar als ik wat google zijn er zat projecten. De kunst is er een onder de knie krijgen en daarna weten waneer je welk gereedschap gebruiken moet.

Dat Google dit gratis maakt vind ik nice, maar mischien zegt het ook wat over Google's visie voor het product. Hopelijk word het goed overgenomen/gebruikt in andere software pakketen en kunnen we naar hartelust verschillen zoeken in gedissambleerde code :D
Wel een binary bevat een header met symbol tables, segments, link informatie die de image loader van je OS gebruikt om address space, stack, heap en andere kernelstructuren op te zetten vooraleer het controle geeft aan het startpunt van het programma.
Als ik het plaatje goed begrijp gaat het hier om een vergelijking van assembly of assembly-achtige code. Daarnaast ziet het ernaar uit dat het programma ook het visualiseren van structuren als loops en jumps ondersteunt. Dat bevat een hoop meer leesbare informatie voor een ontwikkelaar dan een bytesgewijze vergelijking in een hex-editor.
Het vergelijken van bytes is verre van vergelijkbaar. Al is het alleen maar omdat je dan nog geen flauw idee hebt wat een bepaald verschil doet.

Zoals ik het lees kan BinDiff ook verschillen tussen een x64 en een ARM versie tonen. Qua bytes zullen die in de verste verte niet overeen komen terwijl er functioneel geen verschil hoeft te zijn.
"Jammer dat de content op dat plaatje niet te lezen is. "
Dan google je toch even op 'bindiff example' of iets dergelijks?
Er zijn veel meer en betere alternatieven, starting with Eclipse / NetBeans (of welke andere Ecplise based IDE) en diff er maar op los.

Snap deze tools van Google niet zo en vertrouw ze voor geen meter ;)
Euhm, volgens mij zijn Eclipse/NetBeans geen disassemblers wat bindiv volgens mij wel is. Bindiv is dan weer niet bedoeld als een IDE (denk ik). Het enige alternatief wat disassemblers betreft is IDA Pro volgens mij, maar dat is betaalde software.
Google-werknemer echter wel dat voor het gebruik van BinDiff de Hex-Rays IDA Pro-disassembler nodig is.
IDA Pro is dus niet echt een alternatief te noemen, staat in het artikel dat je dat juist nodig hebt om bindiff te gebruiken. Verder heb je inderdaad gelijk.
meldt de Google-werknemer echter wel dat voor het gebruik van BinDiff de Hex-Rays IDA Pro-disassembler nodig is
En als je nou geen gecompileerde code vergelijkt? Of een java/.NET prog? Of een prog dat helemaal niet gecompileerd hoeft te worden?
Voor dat laatste zou ik gewoon WinMerge o.i.d. pakken.

Wel jammer dat er zo'n duur pakket als IDA Pro nodig is om er gebruik van te kunnen maken :(
Als ik het zo bekijk is deze tool meer dan een line-by-line merge tool. Ik zie een grafiek; dat heb ik nog nooit gezien in een merge tool. M.a.w., het lijkt erop dat bindiff logica vergelijkt, en windiff (e.a.) gewoon domweg regels code.
Voor elk stuk gereedschap geldt dat het bepaalde toepassingen heeft. Als je besluit om nooit met schroeven te werken heb je geen schroevendraaier in je gereedschapskist nodig.

Je hebt immers niet altijd de mogelijkheid om te vergelijken op het niveau van ongecompileerde sourcecode of Java bytecode. Het voorbeeld van malware is eerder al genoemd waarbij een analyse gemaakt wordt van malware in een bestaand programma.
Een andere toepassing is bij de ontwikkeling van een compiler. Je zou wellicht de output van je compiler tussen twee revisies willen vergelijken om te zien of je wijzigingen het gewenste effect hebben. Zo zijn er nog veel meer toepassingen te verzinnen waar dit het juiste stuk gereedschap voor is.

Maar zelfs als je op niveau van broncode zou vergelijken dan kan het concept van een call graph, zoals het in bovenstaand screenshot te zien is, wel interessant. Diff vergelijken op text niveau is niet nieuw en een call graph ook niet maar de combinatie kan interessante nieuwe inzichten geven.

Het is natuurlijk jammer dat er een duur pakket als IDA pro nodig is om dit te kunnen gebruiken maar als Google niet al zelf met alternatieven komt zou het mij niet verbazen als anderen hierdoor ge´nspireerd worden en alsnog met betaalbare of wellicht zelfs gratis alternatieven zullen komen.

Op dit item kan niet meer gereageerd worden.



Samsung Galaxy S7 edge Athom Homey Apple iPhone SE Raspberry Pi 3 Apple iPad Pro Wi-Fi (2016) HTC 10 Hitman (2016) LG G5

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True