SeekableReadStream *PEResources::getResource(const PEResourceID &type, const PEResourceID &name) { std::vector<PEResourceID> langList = getLangList(type, name); if (langList.empty()) return 0; const Resource &resource = _resources.find(type)->second.find(name)->second.find(langList[0])->second; // fun stuff _exe->seek(resource.offset); return _exe->readStream(resource.size); }
File *PEResources::getResource(const WinResourceID &type, const WinResourceID &name) { Array<WinResourceID> langList = getLangList(type, name); if (langList.empty()) return 0; const Resource &resource = _resources[type][name][langList[0]]; byte *data = (byte *)malloc(resource.size); _exe->seek(resource.offset); _exe->read(data, resource.size); File *file = new File(); file->open(data, resource.size); return file; }