Jag har försökt ta reda på detta under ganska lång tid nu och skulle verkligen behöva lite hjälp. För det första lite intro:
Jag kör den senaste versionen av radare2 från Github på en 64bit Ubuntu 16.04 och har följande exempelprogram r2_test.cpp
:
#include <cstdio>int main (int argc, char * argv []) {int num; medan (1) {printf ("Ange ett nummer:"); scanf ("% d", &num); printf ("Du angav:% d \ n", num); } returnera 0;}
Det jag försöker uppnå är att felsöka detta program med radare2 och två terminaler på ett sätt som jag kör radare2 i terminalfönstret T1
och har programmen in / ut i terminalfönstret rarun2
.
Så för mitt första försök läser jag man-sidan för rarun2, speciellt delen med omdirigering av IO till en annan terminal och efter identifiering av T2
-terminalen som / dev / pts / 17
Jag skapade följande test.rr2
-fil:
#! / usr / bin / rarun2stdio = / dev / pts / 17
I T2
terminal har jag sedan kört sleep 999999
och i terminal T1
Jag kör r2 -R test.rr2 -d a.out
och när kommandot dc
körs inuti radare2 är programmets in- / utgång i terminal T1 vilket inte är vad jag ville ha. Jag har också provat variationer som att göra
test.rr2
lika
#! / Usr / bin / rarun2stdin = / dev / pts / 17stdout = / dev / pts / 17
eller
#! / Usr / bin / rarun2stdio = / dev / pts / 17stdin = / dev / pts / 17stdout = / dev / pts / 17
men resultatet var alltid detsamma.
För mitt andra försök, efter lite forskning och läsning, försökte jag köra radare2 på följande sätt: T2
, men processen som debugges inuti radare2 är det rarun2-verktyget och eftersom min kunskap om Linux och reverse engineering på det inte är så bra, gör jag inte vet inte riktigt hur man går vidare till felsökning av a.out
-processen.
Så, för att sammanfatta, jag skulle verkligen uppskatta om någon kunde dela här om den här typen av felsökning kan vara gjort med radare2 och, om det går, hur man uppnår det? Jag har också provat det med nc
, men jag har inte gjort några framsteg i det här ämnet med det.