Reversing Some C++ Io Operations
In general decompilers are not friendly with c++ let's analyse a simple program to get familiar with it.
Let's implement a simple code that loads a file into a vector and then save the vector with following functions:
Lets identify the typical way in C++ to print to stdout with the operator "<<"
The basic_ostream is initialized writing the word "error" to the cout, and then the operator<< again to add the endl.
The Main function simply calls "vec = load(filename)" but the compiler modified it and passed the vector pointer as a parĂ¡meter. Then it bulds and prints "loaded " << size << " users".
And finally saves the vector to /tmp/pwd and print "saved".
Most of the mess is basically the operator "<<" to concat and print values.
Also note that the vectors and strings are automatically deallocated when exit the function.
And here is the code:
Let's take a look to the load function, which iterates the ifs.getline() and push to the vector.
First of all there is a mess on the function definition, __return_storage_ptr is the vector.
the ifstream object ifs is initialized as a basic_ifstream and then operator! checks if it wasn't possible to open the file and in that case calls err()
We see the memset and a loop, getline read a cstr like line from the file, and then is converted to a string before pushing it to the vector. lVar1 is the stack canary value.
In this situations dont obfuscate with the vector pointer vec initialization at the begining, in this case the logic is quite clear.
The function save is a bit more tricky, but it's no more than a vector iteration and ofs writing.
Looping a simple "for (auto s : *vec)" in the decompiler is quite dense, but we can see clearly two write, the second write DAT_0010400b is a "\n"
As we see, save implememtation is quite straightforward.
Let's implement a simple code that loads a file into a vector and then save the vector with following functions:
- err
- load
- save
- main
Lets identify the typical way in C++ to print to stdout with the operator "<<"
The basic_ostream is initialized writing the word "error" to the cout, and then the operator<< again to add the endl.
The Main function simply calls "vec = load(filename)" but the compiler modified it and passed the vector pointer as a parĂ¡meter. Then it bulds and prints "loaded " << size << " users".
And finally saves the vector to /tmp/pwd and print "saved".
Most of the mess is basically the operator "<<" to concat and print values.
Also note that the vectors and strings are automatically deallocated when exit the function.
And here is the code:
Let's take a look to the load function, which iterates the ifs.getline() and push to the vector.
First of all there is a mess on the function definition, __return_storage_ptr is the vector.
the ifstream object ifs is initialized as a basic_ifstream and then operator! checks if it wasn't possible to open the file and in that case calls err()
We see the memset and a loop, getline read a cstr like line from the file, and then is converted to a string before pushing it to the vector. lVar1 is the stack canary value.
The function save is a bit more tricky, but it's no more than a vector iteration and ofs writing.
Looping a simple "for (auto s : *vec)" in the decompiler is quite dense, but we can see clearly two write, the second write DAT_0010400b is a "\n"
More info
- Hacking Tools Hardware
- Usb Pentest Tools
- Hacking Tools Kit
- Tools 4 Hack
- Pentest Tools Website
- Hacking Tools 2020
- Pentest Tools Port Scanner
- Pentest Tools Linux
- Hacker Tools Hardware
- Pentest Tools For Windows
- Hack Tools
- Tools 4 Hack
- Hack Tools 2019
- Hack Tools 2019
- Hacking Tools For Pc
- Pentest Tools Free
- Hack Rom Tools
- Hacking Tools Mac
- Github Hacking Tools
- Pentest Tools For Ubuntu
- Hack Tools For Pc
- Pentest Tools Subdomain
- Termux Hacking Tools 2019
- Nsa Hack Tools Download
- Pentest Tools For Ubuntu
- Hack And Tools
- Hacking Tools For Mac
- Nsa Hacker Tools
- Hacking Tools For Kali Linux
- Pentest Tools Download
- Pentest Tools Website Vulnerability
- Nsa Hack Tools
- Hacker Tools Software
- Pentest Tools Website Vulnerability
- Hacker Tools Linux
- Best Hacking Tools 2019
- Hackers Toolbox
- Pentest Tools Apk
- Tools For Hacker
- Pentest Tools Download
- Pentest Box Tools Download
- Pentest Tools For Windows
- Hacker Tools Github
- Android Hack Tools Github
- Hacker Tools 2019
- Pentest Tools Linux
- Hack Tools For Games
- Hacker Tools For Ios
- Hacking Tools Software
- Hacker Tools Apk Download
- Hacker Tools Github
- Hacking Tools Mac
- Pentest Reporting Tools
- Pentest Reporting Tools
- Hacking Tools Online
- Nsa Hack Tools
- Nsa Hack Tools
- Beginner Hacker Tools
- Hacker Tools Apk Download
- Pentest Tools Alternative
- Best Hacking Tools 2019
- Nsa Hack Tools
- Hacking Tools 2020
- Ethical Hacker Tools
- Growth Hacker Tools
- How To Make Hacking Tools
- Pentest Tools Free
- Hack Tools For Ubuntu
- Pentest Box Tools Download
- Nsa Hack Tools Download
- Hacking Tools Hardware
- Hacking Apps
- Hacking Tools Free Download
- Hack Tools Mac
- Hacker Tools Software
- Bluetooth Hacking Tools Kali
- Hacker Tools Online
- Pentest Tools Find Subdomains
- Hacking Tools For Beginners
- Pentest Tools Website
- Hacking Apps
- Pentest Tools Review
- Hacking Tools Name
- Hacking Tools 2019
- Hack Tools Download
- Pentest Tools Linux
- Pentest Tools For Windows
- Hack Tool Apk
- Pentest Tools Tcp Port Scanner
- Pentest Tools Online
- Hacking Tools Windows 10
- Pentest Tools Alternative
- How To Make Hacking Tools
- Hack And Tools
- Hacker Tools Free
- Hacking Tools For Games
- Hacker Tools Free Download
- Ethical Hacker Tools
- Hacker Tools
- Hacking Tools Github
- New Hacker Tools
- Pentest Tools Nmap
- Tools 4 Hack
- Hack Website Online Tool
- Hacking Tools 2020
- Pentest Automation Tools
- Hacker Tools Windows
- Pentest Tools Port Scanner
- New Hack Tools
- Pentest Automation Tools
- Hacking Tools Usb
- Hacking Tools Windows
- Hacking Tools Mac
- Pentest Tools Website Vulnerability
- Hack Website Online Tool
- Best Hacking Tools 2020
- Pentest Tools Linux
- Hacking Tools For Beginners
- Hack Tools For Games
0 Comments:
Post a Comment
<< Home