Friday, January 26, 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.




More info

  1. Hacker Tools Online
  2. Hacker Tools Free Download
  3. Github Hacking Tools
  4. Hacking Tools For Windows 7
  5. Hack Tools For Pc
  6. New Hacker Tools
  7. Hacking Tools Github
  8. Pentest Tools
  9. Hacking Tools Software
  10. Hacker
  11. Best Hacking Tools 2019
  12. Hackrf Tools
  13. Bluetooth Hacking Tools Kali
  14. Game Hacking
  15. Wifi Hacker Tools For Windows
  16. Nsa Hack Tools Download
  17. How To Make Hacking Tools
  18. Hacker Tools List
  19. Hack Tools For Pc
  20. Hacker Search Tools
  21. Wifi Hacker Tools For Windows
  22. Hacking Tools Windows
  23. Physical Pentest Tools
  24. Black Hat Hacker Tools
  25. Tools 4 Hack
  26. Pentest Tools Website
  27. Pentest Box Tools Download
  28. Free Pentest Tools For Windows
  29. Ethical Hacker Tools
  30. What Are Hacking Tools
  31. Hacker Tools 2019
  32. Pentest Tools
  33. Hacker Tool Kit
  34. Pentest Tools Find Subdomains
  35. Growth Hacker Tools
  36. Best Hacking Tools 2019
  37. Hacking Tools Windows
  38. Growth Hacker Tools
  39. Pentest Tools Nmap
  40. Pentest Tools Android
  41. Pentest Tools Apk
  42. Hacking Tools
  43. Hacker Tool Kit
  44. Black Hat Hacker Tools
  45. Pentest Recon Tools
  46. Hack Website Online Tool
  47. Pentest Tools Subdomain
  48. Game Hacking
  49. New Hacker Tools
  50. Usb Pentest Tools
  51. Hacker Techniques Tools And Incident Handling
  52. Hacking Tools Hardware
  53. Pentest Tools For Windows
  54. Hack Tools For Windows
  55. Hacking Tools For Windows
  56. Hacking Tools Software
  57. Hack And Tools
  58. Hacking Tools Mac
  59. Hacking Apps
  60. Hacker Search Tools
  61. Hacker Tools Online
  62. Hacking Tools Windows
  63. Hack Tools Online
  64. Hacking Tools 2019
  65. Pentest Tools Subdomain
  66. Hacker Tools For Windows
  67. Hack And Tools
  68. Hacking Tools For Beginners
  69. Hacker Techniques Tools And Incident Handling
  70. Hack Apps
  71. Usb Pentest Tools
  72. Hacker Tools 2020

No comments:

Post a Comment