Guest User

Untitled

a guest
Aug 31st, 2016
1,701
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. bool DirExist(char *dirName_in)
  2. {
  3. DWORD ftyp = GetFileAttributes(dirName_in);
  4. if (ftyp == INVALID_FILE_ATTRIBUTES)
  5. return false;
  6. if (ftyp & FILE_ATTRIBUTE_DIRECTORY)
  7. return true;
  8. return false;
  9. }
  10.  
  11. CMDRESULT cbInstrSavedata(int argc, char* argv[])
  12. {
  13. if(IsArgumentsLessThan(argc, 4))
  14. return STATUS_ERROR;
  15. duint addr, size;
  16. if(!valfromstring(argv[2], &addr, false) || !valfromstring(argv[3], &size, false))
  17. return STATUS_ERROR;
  18.  
  19. Memory<unsigned char*> data(size);
  20. if(!MemRead(addr, data(), data.size()))
  21. {
  22. dputs(QT_TRANSLATE_NOOP("DBG", "Failed to read memory..."));
  23. return STATUS_ERROR;
  24. }
  25.  
  26. // static string
  27. std::string _name = ".\minidump";
  28.  
  29. // check folder
  30. if (!DirExist((char*)_name.c_str()))
  31. CreateDirectory(_name.c_str(), NULL);
  32.  
  33. // convert adrr to str
  34. std::stringstream stream;
  35. stream << std::setfill('0') << std::setw(sizeof(duint) * 2) << std::hex << addr;
  36.  
  37. // update path
  38. _name.append("");
  39. _name.append(stream.str());
  40. _name.append(".mem");
  41.  
  42. if(!FileHelper::WriteAllData(_name, data(), data.size()))
  43. {
  44. dputs(QT_TRANSLATE_NOOP("DBG", "Failed to write file..."));
  45. return STATUS_ERROR;
  46. }
  47. #ifdef _WIN64
  48. dprintf(QT_TRANSLATE_NOOP("DBG", "%p[% llX] written to "%s" !\n"), addr, size, _name.c_str());
  49. #else //x86
  50. dprintf(QT_TRANSLATE_NOOP("DBG", "%p[% X] written to "%s" !\n"), addr, size, _name.c_str());
  51. #endif
  52.  
  53. return STATUS_CONTINUE;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment