Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  4 3203
Jeg har en større programvare som jeg ønsker å reverse engineere. Programvaren er closed source, og jeg tviler produsenten er villig til å utgi kildekode for å la meg endre på den. Programvaren er laget til Linux og mest sannsynlig skrevet i C eller C++ da binærfilene avslører at den er kompilert i GCC. Programvaren innholder heller ingen debuggings symboler.

Siden dette er det første store prosjektet jeg reverse engineerer, så trenger jeg litt veiledning rundt gode verktøy som brukes til å debugge. Jeg ønsker hovedsakelig verktøy som kan skape et visuelt bilde av hvilke funksjoner som kaller hvilke funksjoner o.l.

Hvilke verktøy anbefaler du til reverse engineering i linux?
Sist endret av 0xFF; 21. august 2015 kl. 13:35.
hva slags cpu er det?

Har reversa endel funksjoner for ppc og emedded systemer.
Du bør vel ha litt kunskap om "Application Binary Interface" for arkitekturen og assembler self.
En grei debugger, sett brakpoints på kjente steder, gjerne ved systemkall. Sjekk kalltre og lær å
lese stacken. Hva som blir kalt fra hvor er jo bare addresser om det ikke er debug info. Tror linux
bruker elf. objdump og nm er kjekke gnu verktøy om enn ikke visuelle.

Selv om det er ent større programvare er det vel ett eller flere subsystem du er interessert i eller hva
er motivasjonen? Knekke lisensiering for å kunne buke programpakka? Rette feil? Generelt å lære reverse
engineering?

Kanskje en ide og begynne med en mindre pakke...
War room
0xFF's Avatar
Trådstarter Donor
Sitat av Tenag Vis innlegg
hva slags cpu er det?

Har reversa endel funksjoner for ppc og emedded systemer.
Du bør vel ha litt kunskap om "Application Binary Interface" for arkitekturen og assembler self.
En grei debugger, sett brakpoints på kjente steder, gjerne ved systemkall. Sjekk kalltre og lær å
lese stacken. Hva som blir kalt fra hvor er jo bare addresser om det ikke er debug info. Tror linux
bruker elf. objdump og nm er kjekke gnu verktøy om enn ikke visuelle.

Selv om det er ent større programvare er det vel ett eller flere subsystem du er interessert i eller hva
er motivasjonen? Knekke lisensiering for å kunne buke programpakka? Rette feil? Generelt å lære reverse
engineering?

Kanskje en ide og begynne med en mindre pakke...
Vis hele sitatet...
Jeg har litt erfaring med reverse engineering av «små» programvarer. Ja, linux bruker elf og ja jeg er kjent med objdump, men å drive å disassemble 60-70 library filer for å tegne et visuelt kart for hånd er noe jeg hadde lyst til å unngå.

Motivasjonen er flerdelt, finne ut hvilken type kryptering den bruker på databasen + krypteringsnøkkelen til databasen. Lære mer om reverse engineering. Og siden du nevner det, så kan det godt tenkes at jeg også prøver å knekke lisensieringen, men dette er da ikkje prioritet, da jeg hovedsakelig er på jakt etter dataen som ligger lagret i databasen som følger med programvaren.

EDIT: Jeg vil tippe programvaren enten kjører på x86 eller x86_64.
Sist endret av 0xFF; 21. august 2015 kl. 18:02.
Sitat av 0xFF Vis innlegg
Jeg ønsker hovedsakelig verktøy som kan skape et visuelt bilde av hvilke funksjoner som kaller hvilke funksjoner o.l.
Vis hele sitatet...
Mulig du kan dra nytte av Valgrind + Callgrind. Den viser deg hvilke funksjoner som blir kalt fra hvor, og hvor mye CPU-tid de bruker.

Kode

$ valgrind --tool=callgrind /path/to/executable
Du kan lese av resultatfilen vha. KCacheGrind.
Sist endret av slicer; 21. august 2015 kl. 18:05. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Mitt forslag: Remote debugging med IDA Pro. IDA har en debugging-server for linux som du kan koble til fra IDA Pro. IDA Pro kan for øvrig kjøres fra Windows, Linux og Mac OS X.

Den har også funksjonalitet for å visualisere hele callgraphen til et program.