Monday, January 22, 2024

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:

  • 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.

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.




Continue reading
  1. Best Hacking Tools 2020
  2. Hacking Tools
  3. Pentest Tools Android
  4. Hacking Tools 2019
  5. Nsa Hacker Tools
  6. Kik Hack Tools
  7. Pentest Tools For Windows
  8. Hacker Search Tools
  9. Tools Used For Hacking
  10. Hackrf Tools
  11. Tools Used For Hacking
  12. Hacker Tools For Pc
  13. Android Hack Tools Github
  14. Best Pentesting Tools 2018
  15. Pentest Tools For Windows
  16. Pentest Tools Find Subdomains
  17. Pentest Recon Tools
  18. How To Make Hacking Tools
  19. Hacking Tools For Games
  20. Hacking Tools 2020
  21. Pentest Tools Windows
  22. Hacking Tools Hardware
  23. Pentest Tools Find Subdomains
  24. Hacking Tools For Mac
  25. Hacker Security Tools
  26. Hacker Tools Github
  27. Pentest Tools For Windows
  28. Pentest Tools Review
  29. What Are Hacking Tools
  30. Hacker Tool Kit
  31. Hacking Tools For Kali Linux
  32. Android Hack Tools Github
  33. Hack Apps
  34. Hackrf Tools
  35. Pentest Tools Kali Linux
  36. Pentest Tools For Windows
  37. Hacking Tools Software
  38. Pentest Tools Review
  39. Hacker Tools Linux
  40. Pentest Tools Github
  41. Hackers Toolbox
  42. Hacker Tools For Mac
  43. New Hack Tools
  44. Top Pentest Tools
  45. Growth Hacker Tools
  46. How To Install Pentest Tools In Ubuntu
  47. Pentest Tools For Ubuntu
  48. Hacking Tools For Windows 7
  49. Tools For Hacker
  50. Pentest Tools Free
  51. What Are Hacking Tools
  52. Hacking Tools Software
  53. Hacking Tools Usb
  54. New Hacker Tools
  55. Pentest Tools Kali Linux
  56. Black Hat Hacker Tools
  57. Hack Tools Online
  58. Hacking Tools Name
  59. Hacker Security Tools
  60. Pentest Tools Website
  61. Hacking Tools Download
  62. Hacking Tools Name
  63. Pentest Tools Review
  64. Kik Hack Tools
  65. Hacking Tools For Windows
  66. Hacker Tools Free Download
  67. Hacker Tools Github
  68. Tools Used For Hacking
  69. Hacker Tools
  70. Pentest Tools Find Subdomains
  71. Hack Tool Apk No Root
  72. Hacker Hardware Tools
  73. Pentest Tools Apk
  74. Hacking Tools For Windows 7
  75. Usb Pentest Tools
  76. Hack Tool Apk
  77. Pentest Tools Tcp Port Scanner
  78. Hackers Toolbox

No comments: