Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool DirExist(char *dirName_in)
- {
- DWORD ftyp = GetFileAttributes(dirName_in);
- if (ftyp == INVALID_FILE_ATTRIBUTES)
- return false;
- if (ftyp & FILE_ATTRIBUTE_DIRECTORY)
- return true;
- return false;
- }
- CMDRESULT cbInstrSavedata(int argc, char* argv[])
- {
- if(IsArgumentsLessThan(argc, 4))
- return STATUS_ERROR;
- duint addr, size;
- if(!valfromstring(argv[2], &addr, false) || !valfromstring(argv[3], &size, false))
- return STATUS_ERROR;
- Memory<unsigned char*> data(size);
- if(!MemRead(addr, data(), data.size()))
- {
- dputs(QT_TRANSLATE_NOOP("DBG", "Failed to read memory..."));
- return STATUS_ERROR;
- }
- // static string
- std::string _name = ".\minidump";
- // check folder
- if (!DirExist((char*)_name.c_str()))
- CreateDirectory(_name.c_str(), NULL);
- // convert adrr to str
- std::stringstream stream;
- stream << std::setfill('0') << std::setw(sizeof(duint) * 2) << std::hex << addr;
- // update path
- _name.append("");
- _name.append(stream.str());
- _name.append(".mem");
- if(!FileHelper::WriteAllData(_name, data(), data.size()))
- {
- dputs(QT_TRANSLATE_NOOP("DBG", "Failed to write file..."));
- return STATUS_ERROR;
- }
- #ifdef _WIN64
- dprintf(QT_TRANSLATE_NOOP("DBG", "%p[% llX] written to "%s" !\n"), addr, size, _name.c_str());
- #else //x86
- dprintf(QT_TRANSLATE_NOOP("DBG", "%p[% X] written to "%s" !\n"), addr, size, _name.c_str());
- #endif
- return STATUS_CONTINUE;
- }
Advertisement
Add Comment
Please, Sign In to add comment