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.
More information
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 information
- Hacking Tools Github
- Pentest Tools Linux
- Termux Hacking Tools 2019
- Pentest Tools Github
- Hacker Security Tools
- Top Pentest Tools
- World No 1 Hacker Software
- Hacker Search Tools
- Underground Hacker Sites
- Hack Tool Apk
- Hacker Tools Free Download
- Hacking Tools Download
- Termux Hacking Tools 2019
- Hacking Tools 2020
- Pentest Tools Alternative
- Hacking Apps
- Hacking Tools Online
- Physical Pentest Tools
- New Hack Tools
- Nsa Hacker Tools
- Pentest Tools List
- Hacking Tools For Windows Free Download
- Hacker Hardware Tools
- World No 1 Hacker Software
- Hack Tools For Mac
- Hackers Toolbox
- Pentest Tools Apk
- Pentest Tools Linux
- Install Pentest Tools Ubuntu
- Install Pentest Tools Ubuntu
- Hacker Tools 2020
- Hack Tool Apk No Root
- Hacker Tools Software
- Growth Hacker Tools
- Nsa Hack Tools Download
- Hacking Tools Mac
- Hacking Tools For Pc
- Pentest Tools For Windows
- Install Pentest Tools Ubuntu
- Pentest Tools Website Vulnerability
- Pentest Tools Subdomain
- Hacker Tools For Pc
- Pentest Tools For Android
- Pentest Tools Windows
- Pentest Tools Download
- Pentest Tools Subdomain
- Hak5 Tools
- Blackhat Hacker Tools
- Hacking Tools For Beginners
- Hacking Tools For Windows 7
- Github Hacking Tools
- Hacker Tools Hardware
- Pentest Tools For Ubuntu
- Pentest Reporting Tools
- Hacking Tools Kit
- Hacking Tools For Windows
- Pentest Tools Online
- Nsa Hack Tools
- Hack Rom Tools
- Hacker Techniques Tools And Incident Handling
- Nsa Hacker Tools
- Computer Hacker
- Pentest Tools Android
- What Are Hacking Tools
- Hacking Tools Github
- Hacker Search Tools
- Pentest Tools Open Source
- Android Hack Tools Github
- Hacking Tools For Windows Free Download
- Hacker Tools List
- Hacker Security Tools
- Hacker Tools For Windows
- Hacking Tools Github
- Usb Pentest Tools
- What Are Hacking Tools
- Android Hack Tools Github
- Hacker Tools For Mac
- Wifi Hacker Tools For Windows
- Android Hack Tools Github
- Pentest Tools For Ubuntu
- Pentest Tools For Windows
- Pentest Tools Website
- Hacking Tools Usb
- Tools Used For Hacking
- Pentest Tools Find Subdomains
- Hack Tools For Ubuntu
- Ethical Hacker Tools
- New Hacker Tools
- Hack And Tools
- Hacking Tools For Games
- Hacker Tools Hardware
- Hacking Tools For Windows
- Usb Pentest Tools
- Hacker Tools For Mac
- Wifi Hacker Tools For Windows
- Pentest Tools Alternative
- Hack Tools
- Pentest Tools For Android
- Hacking Tools Software
- Hacker
- Hacker Tools Hardware
- Hacking Tools And Software
- Game Hacking
- Pentest Tools Framework
- Hack Tools Online
- Hacking Tools For Windows 7
- Hacking Tools Online
- Hacker Tools Windows
- Hack Tools 2019
- Hak5 Tools
- Pentest Tools Open Source
- Pentest Tools For Mac
- Ethical Hacker Tools
- Pentest Tools Online
- Pentest Tools Android
- Hacker Techniques Tools And Incident Handling
- Pentest Tools Apk
- Hacker Tools Mac
- How To Hack
- Pentest Tools For Ubuntu
- Pentest Recon Tools
- Hacking Tools Free Download
- Easy Hack Tools
- Hacker Tools Mac
- Hack Website Online Tool
- Hacking Tools Pc
- Hacking Tools Mac
- Hacker Tools Apk
- Hack Tool Apk No Root
Post a Comment