diff --git a/_export_dir_wrapper_8cpp_source.html b/_export_dir_wrapper_8cpp_source.html index 76590f1b..7c647f76 100644 --- a/_export_dir_wrapper_8cpp_source.html +++ b/_export_dir_wrapper_8cpp_source.html @@ -515,7 +515,7 @@ $(function() { codefold.init(0); });
ExportEntryWrapper::getForwarder
char * getForwarder()
Definition ExportDirWrapper.cpp:307
ExportEntryWrapper::getName
virtual QString getName()
Definition ExportDirWrapper.cpp:221
PEFile
Definition PEFile.h:45
-
PEFile::isReproBuild
bool isReproBuild()
Definition PEFile.h:264
+
PEFile::isReproBuild
bool isReproBuild()
Definition PEFile.h:287
pe_util::forwarderNameLen
size_t forwarderNameLen(const char *ptr, size_t max_len)
Definition Util.cpp:113
pe_util::isStrLonger
bool isStrLonger(const char *inp, size_t maxLen)
Definition Util.cpp:38
diff --git a/_file_hdr_wrapper_8cpp_source.html b/_file_hdr_wrapper_8cpp_source.html index 177d6c54..68b6809f 100644 --- a/_file_hdr_wrapper_8cpp_source.html +++ b/_file_hdr_wrapper_8cpp_source.html @@ -339,7 +339,7 @@ $(function() { codefold.init(0); });
PEElementWrapper::m_PE
PEFile * m_PE
Definition PENodeWrapper.h:17
PEFile
Definition PEFile.h:45
PEFile::peFileHdrOffset
offset_t peFileHdrOffset() const
Definition PEFile.h:75
-
PEFile::isReproBuild
bool isReproBuild()
Definition PEFile.h:264
+
PEFile::isReproBuild
bool isReproBuild()
Definition PEFile.h:287
util
Definition FileHdrWrapper.cpp:7
util::getDateString
QString getDateString(const quint64 timestamp)
Definition FileHdrWrapper.cpp:8
diff --git a/_mapped_exe_8h_source.html b/_mapped_exe_8h_source.html index 29b8b7c8..64f1bec1 100644 --- a/_mapped_exe_8h_source.html +++ b/_mapped_exe_8h_source.html @@ -150,8 +150,7 @@ $(function() { codefold.init(0); });
54
55 virtual ~MappedExe(void) { }
-
56
-
57};
+
56};
_getNumValue
INT_TYPE _getNumValue(void *ptr)
Definition AbstractByteBuffer.cpp:291
bufsize_t
uint32_t bufsize_t
Definition AbstractByteBuffer.h:14
diff --git a/_p_e_file_8cpp_source.html b/_p_e_file_8cpp_source.html index fcd6f75c..bbf45469 100644 --- a/_p_e_file_8cpp_source.html +++ b/_p_e_file_8cpp_source.html @@ -574,7 +574,7 @@ $(function() { codefold.init(0); });
440{
441 WatchedLocker lock(&m_peMutex, PE_SHOW_LOCK, __FUNCTION__);
442 SectionHdrWrapper *sec = this->_getSecHdr(secId);
-
443 if (sec == NULL) {
+
443 if (!sec) {
444 Logger::append(Logger::D_WARNING, "No such section");
445 return NULL;
446 }
@@ -620,188 +620,186 @@ $(function() { codefold.init(0); });
484
-
485bool PEFile::canAddNewSection()
+
485bool PEFile::_canAddNewSection()
486{
487 ExeNodeWrapper* sec = dynamic_cast<ExeNodeWrapper*>(getWrapper(PEFile::WR_SECTIONS));
488 if (sec == NULL || sec->canAddEntry() == false) {
489 return false;
490 }
491 const size_t secCount = hdrSectionsNum();
-
492 if (secCount == SectHdrsWrapper::SECT_COUNT_MAX) return false; //limit exceeded
-
493
-
494 //TODO: some more checks? overlay?
-
495 return true;
-
496}
+
492 if (secCount == SectHdrsWrapper::SECT_COUNT_MAX) {
+
493 return false; //limit exceeded
+
494 }
+
495 //TODO: some more checks? overlay?
+
496 return true;
+
497}
-
497
498
-
499SectionHdrWrapper* PEFile::addNewSection(QString name, bufsize_t size, bufsize_t v_size)
+
499SectionHdrWrapper* PEFile::addNewSection(QString name, bufsize_t r_size, bufsize_t v_size)
500{
-
501 if (canAddNewSection() == false) return NULL;
-
502
-
503 ExeNodeWrapper* sec = dynamic_cast<ExeNodeWrapper*>(getWrapper(PEFile::WR_SECTIONS));
-
504 if (!v_size) v_size = size;
-
505
-
506 bufsize_t roundedRawEnd = buf_util::roundupToUnit(getMappedSize(Executable::RAW), getAlignment(Executable::RAW));
-
507 bufsize_t roundedVirtualEnd = buf_util::roundupToUnit(getMappedSize(Executable::RVA), getAlignment(Executable::RVA));
-
508 bufsize_t newSize = roundedRawEnd + size;
-
509 bufsize_t newVirtualSize = roundedVirtualEnd + v_size;
-
510
-
511 if (setVirtualSize(newVirtualSize) == false) {
-
512 Logger::append(Logger::D_ERROR, "Failed to change virtual size");
-
513 return NULL;
-
514 }
-
515
-
516 if (resize(newSize) == false) {
-
517 Logger::append(Logger::D_ERROR, "Failed to resize");
-
518 return NULL;
-
519 }
-
520 // fetch again after resize:
-
521 sec = dynamic_cast<ExeNodeWrapper*>(getWrapper(PEFile::WR_SECTIONS));
-
522 if (sec == NULL) {
-
523 return NULL;
-
524 }
-
525
-
526 IMAGE_SECTION_HEADER secHdr;
-
527 ::memset(&secHdr, 0, sizeof(IMAGE_SECTION_HEADER));
-
528
-
529 //name copy:
-
530 const size_t nameLen = name.length();
-
531 const size_t bufSize = sizeof(secHdr.Name);
-
532 const size_t copySize = (nameLen < bufSize) ? nameLen : bufSize;
-
533 if (copySize) {
-
534 ::memcpy(secHdr.Name, name.toStdString().c_str(), copySize);
-
535 }
-
536
-
537 secHdr.PointerToRawData = static_cast<DWORD>(roundedRawEnd);
-
538 secHdr.VirtualAddress = static_cast<DWORD>(roundedVirtualEnd);
-
539 secHdr.SizeOfRawData = size;
-
540 secHdr.Misc.VirtualSize = v_size;
-
541
-
542 SectionHdrWrapper wr(this, &secHdr);
-
543 SectionHdrWrapper* secHdrWr = dynamic_cast<SectionHdrWrapper*>(sec->addEntry(&wr));
-
544 return secHdrWr;
-
545}
+
501 if (!r_size && !v_size) return nullptr; //nothing to add
+
502
+
503 bufsize_t newSize = 0;
+
504 bufsize_t roundedRawEnd = 0;
+
505 bufsize_t roundedVirtualEnd = 0;
+
506 SectionHdrWrapper* secHdrWr = nullptr;
+
507 { //scope0
+
508 WatchedLocker lock(&m_peMutex, PE_SHOW_LOCK, __FUNCTION__);
+
509 if (!_canAddNewSection()) {
+
510 return nullptr;
+
511 }
+
512 ExeNodeWrapper* sec = dynamic_cast<ExeNodeWrapper*>(getWrapper(PEFile::WR_SECTIONS));
+
513 if (!v_size) {
+
514 v_size = r_size;
+
515 }
+
516 roundedRawEnd = buf_util::roundupToUnit(getMappedSize(Executable::RAW), getAlignment(Executable::RAW));
+
517 roundedVirtualEnd = buf_util::roundupToUnit(getMappedSize(Executable::RVA), getAlignment(Executable::RVA));
+
518 newSize = roundedRawEnd + r_size;
+
519 const bufsize_t newVirtualSize = roundedVirtualEnd + v_size;
+
520 if (setVirtualSize(newVirtualSize) == false) {
+
521 Logger::append(Logger::D_ERROR, "Failed to change virtual size to: %X", newVirtualSize);
+
522 return nullptr;
+
523 }
+
524 } //scope0
+
525
+
526 // the PE file is resized and rewrapped:
+
527 if (resize(newSize) == false) {
+
528 Logger::append(Logger::D_ERROR, "Failed to resize");
+
529 return nullptr;
+
530 }
+
531
+
532 { //scope1
+
533 WatchedLocker lock(&m_peMutex, PE_SHOW_LOCK, __FUNCTION__);
+
534 // fetch again after resize:
+
535 ExeNodeWrapper* sec = dynamic_cast<ExeNodeWrapper*>(getWrapper(PEFile::WR_SECTIONS));
+
536 if (!sec) {
+
537 return nullptr;
+
538 }
+
539
+
540 IMAGE_SECTION_HEADER secHdr;
+
541 ::memset(&secHdr, 0, sizeof(IMAGE_SECTION_HEADER));
+
542
+
543 //name copy:
+
544 const size_t nameLen = name.length();
+
545 const size_t bufSize = sizeof(secHdr.Name);
+
546 const size_t copySize = (nameLen < bufSize) ? nameLen : bufSize;
+
547 if (copySize) {
+
548 ::memcpy(secHdr.Name, name.toStdString().c_str(), copySize);
+
549 }
+
550 secHdr.PointerToRawData = static_cast<DWORD>(roundedRawEnd);
+
551 secHdr.VirtualAddress = static_cast<DWORD>(roundedVirtualEnd);
+
552 secHdr.SizeOfRawData = r_size;
+
553 secHdr.Misc.VirtualSize = v_size;
+
554
+
555 SectionHdrWrapper wr(this, &secHdr);
+
556 secHdrWr = dynamic_cast<SectionHdrWrapper*>(sec->addEntry(&wr));
+
557 }
+
558 return secHdrWr;
+
559}
-
546
-
-
547SectionHdrWrapper* PEFile::getLastSection()
-
548{
-
549 size_t secCount = this->_getSectionsCount(true);
-
550 if (secCount == 0) return NULL;
-
551 return this->_getSecHdr(secCount - 1);
-
552}
+
560
+
+ +
562{
+
563 size_t secCount = this->_getSectionsCount(true);
+
564 return (secCount > 0) ? this->_getSecHdr(secCount - 1) : nullptr;
+
565}
-
553
-
- -
555{
- -
557
-
558 /* check sections bounds */
-
559 const size_t secCounter = this->_getSectionsCount(true);
-
560 if (!secCounter) {
-
561 // if PE file has no sections, full file will be mapped
-
562 return getMappedSize(aType);
-
563 }
-
564 for (size_t i = 0; i < secCounter; i++) {
- -
566 if (!sec) continue;
-
567
-
568 offset_t secLastMapped= sec->getContentOffset(aType, true);
-
569 if (secLastMapped == INVALID_ADDR) continue;
+
566
+
+ +
568{
+
570
-
571 const size_t size = (aType == Executable::RAW) ? sec->getMappedRawSize() : sec->getMappedVirtualSize();
-
572 if (size == 0) continue; // exclude not mapped sections
-
573
-
574 secLastMapped += size;
- - -
577 }
-
578 }
-
579
-
580 /* check header bounds */
-
581 /* section headers: */
- - -
584 }
-
585 // PE hdrs ending:
-
586 const offset_t peHdrsEnd = this->core.peSignatureOffset() + sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER) + this->core.peNtHeadersSize();
-
587 if (lastMapped < peHdrsEnd) {
- -
589 }
-
590 // OptionalHdr -> SizeOfHeaders:
- -
592 if (lastMapped < ntHeadersEndOffset) {
- -
594 }
-
595 return lastMapped;
-
596}
-
-
597
-
- -
599{
- -
601 if (secHdr == NULL) return NULL;
-
602
-
603 //TODO: check overlay...
- - -
606
-
607 offset_t secROffset = secHdr->getContentOffset(Executable::RAW, false);
-
608 if (secROffset == INVALID_ADDR) {
-
609 return NULL;
-
610 }
-
611 const bufsize_t secNewRSize = newSize - secROffset; //include overlay in section
-
612
- -
614
-
615 const offset_t secVOffset = secHdr->getContentOffset(Executable::RVA, false);
-
616 const bufsize_t secVSize = secHdr->getContentSize(Executable::RVA, false);
-
617
-
618 // if the previous virtual size is smaller than the new raw size, then update it:
-
619 if (secVSize < secNewRSize) {
- -
621
-
622 // if the virtual size of section has changed,
-
623 // update the Size of Image (saved in the header):
- -
625 this->setVirtualSize(newVSize);
-
626 }
-
627
-
628 //update raw size:
-
629 this->resize(newSize);
-
630 //finally, retrieve the resized section:
-
631 return getLastSection();
-
632}
+
571 /* check sections bounds */
+
572 const size_t secCounter = this->_getSectionsCount(true);
+
573 if (!secCounter) {
+
574 // if PE file has no sections, full file will be mapped
+
575 return getMappedSize(aType);
+
576 }
+
577 for (size_t i = 0; i < secCounter; i++) {
+ +
579 if (!sec) continue;
+
580
+
581 offset_t secLastMapped= sec->getContentOffset(aType, true);
+
582 if (secLastMapped == INVALID_ADDR) continue;
+
583
+
584 const size_t size = (aType == Executable::RAW) ? sec->getMappedRawSize() : sec->getMappedVirtualSize();
+
585 if (size == 0) continue; // exclude not mapped sections
+
586
+
587 secLastMapped += size;
+ + +
590 }
+
591 }
+
592
+
593 /* check header bounds */
+
594 /* section headers: */
+ + +
597 }
+
598 // PE hdrs ending:
+
599 const offset_t peHdrsEnd = this->core.peSignatureOffset() + sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER) + this->core.peNtHeadersSize();
+
600 if (lastMapped < peHdrsEnd) {
+ +
602 }
+
603 // OptionalHdr -> SizeOfHeaders:
+ +
605 if (lastMapped < ntHeadersEndOffset) {
+ +
607 }
+
608 return lastMapped;
+
609}
+
610
+
+ +
612{
+
613 bufsize_t newSize = 0;
+
614
+
615 { //scope0
+ + +
618 if (!secHdr) return nullptr;
+
619
+
620 //TODO: check overlay...
+ + +
623
+
624 const offset_t secROffset = secHdr->getContentOffset(Executable::RAW, false);
+
625 if (secROffset == INVALID_ADDR) {
+
626 return NULL;
+
627 }
+
628 const bufsize_t secNewRSize = newSize - secROffset; //include overlay in section
+ +
630
+
631 const offset_t secVOffset = secHdr->getContentOffset(Executable::RVA, false);
+
632 const bufsize_t secVSize = secHdr->getContentSize(Executable::RVA, false);
633
-
- -
635{
- -
637 if (ddir[pe::DIR_BOUND_IMPORT].VirtualAddress == 0 && ddir[pe::DIR_BOUND_IMPORT].Size == 0) {
-
638 // No bound imports already, nothing to do here!
-
639 return true;
-
640 }
-
641 ddir[pe::DIR_BOUND_IMPORT].VirtualAddress = 0;
-
642 ddir[pe::DIR_BOUND_IMPORT].Size = 0;
-
643 DataDirEntryWrapper *bImp = this->getDataDirEntry(pe::DIR_BOUND_IMPORT);
-
644 if (bImp == NULL) {
-
645 //printf("No Bound imports wrapper!\n");
-
646 return false; // todo: throw error?
-
647 }
-
648 bool isOk = bImp->wrap();
-
649 //TODO: change timestamp for all library entries from (-1 : BOUND) to 0 : NOT BOUND
-
650 return isOk;
-
651}
+
634 // if the previous virtual size is smaller than the new raw size, then update it:
+
635 if (secVSize < secNewRSize) {
+ +
637
+
638 // if the virtual size of section has changed,
+
639 // update the Size of Image (saved in the header):
+ +
641 this->setVirtualSize(newVSize);
+
642 }
+
643
+
644 }
+
645
+
646 //update raw size:
+
647 this->resize(newSize);
+
648 //finally, retrieve the resized section:
+
649 return getLastSection();
+
650}
-
652
-
- -
654{
+
651
+
+ +
653{
+
656 return false; //not my section
657 }
@@ -815,49 +813,70 @@ $(function() { codefold.init(0); });
665}
666
-
667//protected:
-
668
-
- -
670{
- -
672 offset_t start = sec->getContentOffset(aType, true);
-
673 bufsize_t size = sec->getContentSize(aType, true);
-
674 if (start == INVALID_ADDR || size == 0) {
-
675 return NULL;
-
676 }
-
677 return new BufferView(this, start, size);
-
678}
+
+ +
668{
+ +
670 if (ddir[pe::DIR_BOUND_IMPORT].VirtualAddress == 0 && ddir[pe::DIR_BOUND_IMPORT].Size == 0) {
+
671 // No bound imports already, nothing to do here!
+
672 return true;
+
673 }
+
674 ddir[pe::DIR_BOUND_IMPORT].VirtualAddress = 0;
+
675 ddir[pe::DIR_BOUND_IMPORT].Size = 0;
+
676 DataDirEntryWrapper *bImp = this->getDataDirEntry(pe::DIR_BOUND_IMPORT);
+
677 if (bImp == NULL) {
+
678 //printf("No Bound imports wrapper!\n");
+
679 return false; // todo: throw error?
+
680 }
+
681 bool isOk = bImp->wrap();
+
682 //TODO: change timestamp for all library entries from (-1 : BOUND) to 0 : NOT BOUND
+
683 return isOk;
+
684}
-
679
-
- -
681{
-
682 size_t initialSize = entrypoints.size();
-
683
-
684 ExportDirWrapper* exports = dynamic_cast<ExportDirWrapper*>(this->getWrapper(PEFile::WR_DIR_ENTRY + pe::DIR_EXPORT));
-
685 if (!exports) return 0;
-
686
-
687 const size_t entriesCnt = exports->getEntriesCount();
-
688 if (entriesCnt == 0) return 0;
-
689
-
690 for (int i = 0; i < entriesCnt; i++) {
-
691 ExportEntryWrapper* entry = dynamic_cast<ExportEntryWrapper*>(exports->getEntryAt(i));
-
692 if (!entry) continue;
-
693
- -
695 if (forwarder.length()) {
-
696 continue;
-
697 }
-
698 offset_t rva = entry->getFuncRva();
-
699 offset_t offset = this->convertAddr(rva, Executable::RVA, aType);
-
700 if (offset == INVALID_ADDR) {
-
701 continue;
-
702 }
-
703 entrypoints.insert(offset, entry->getName());
-
704 }
-
705 return entrypoints.size() - initialSize;
-
706}
+
685
+
686//protected:
+
687
+
+ +
689{
+ +
691 offset_t start = sec->getContentOffset(aType, true);
+
692 bufsize_t size = sec->getContentSize(aType, true);
+
693 if (start == INVALID_ADDR || size == 0) {
+
694 return NULL;
+
695 }
+
696 return new BufferView(this, start, size);
+
697}
+
+
698
+
+ +
700{
+
701 size_t initialSize = entrypoints.size();
+
702
+
703 ExportDirWrapper* exports = dynamic_cast<ExportDirWrapper*>(this->getWrapper(PEFile::WR_DIR_ENTRY + pe::DIR_EXPORT));
+
704 if (!exports) return 0;
+
705
+
706 const size_t entriesCnt = exports->getEntriesCount();
+
707 if (entriesCnt == 0) return 0;
+
708
+
709 for (int i = 0; i < entriesCnt; i++) {
+
710 ExportEntryWrapper* entry = dynamic_cast<ExportEntryWrapper*>(exports->getEntryAt(i));
+
711 if (!entry) continue;
+
712
+ +
714 if (forwarder.length()) {
+
715 continue;
+
716 }
+
717 offset_t rva = entry->getFuncRva();
+
718 offset_t offset = this->convertAddr(rva, Executable::RVA, aType);
+
719 if (offset == INVALID_ADDR) {
+
720 continue;
+
721 }
+
722 entrypoints.insert(offset, entry->getName());
+
723 }
+
724 return entrypoints.size() - initialSize;
+
725}
INT_TYPE _getNumValue(void *ptr)
uint32_t bufsize_t
@@ -926,25 +945,25 @@ $(function() { codefold.init(0); });
virtual Executable * build(AbstractByteBuffer *buf)
Definition PEFile.cpp:31
virtual bool signatureMatches(AbstractByteBuffer *buf)
Definition PEFile.cpp:4
-
DataDirEntryWrapper * dataDirEntries[pe::DIR_ENTRIES_COUNT]
Definition PEFile.h:326
-
QMutex m_peMutex
Definition PEFile.h:327
+
DataDirEntryWrapper * dataDirEntries[pe::DIR_ENTRIES_COUNT]
Definition PEFile.h:354
+
QMutex m_peMutex
Definition PEFile.h:355
virtual bufsize_t getMappedSize(Executable::addr_type aType)
Definition PEFile.cpp:290
-
BufferView * _createSectionView(SectionHdrWrapper *sec)
Definition PEFile.cpp:669
-
size_t getExportsMap(QMap< offset_t, QString > &entrypoints, Executable::addr_type aType=Executable::RVA)
Definition PEFile.cpp:680
-
SectHdrsWrapper * sects
Definition PEFile.h:323
-
SectionHdrWrapper * _getSecHdr(size_t index) const
Definition PEFile.h:296
-
bool unbindImports()
Definition PEFile.cpp:634
+
BufferView * _createSectionView(SectionHdrWrapper *sec)
Definition PEFile.cpp:688
+
size_t getExportsMap(QMap< offset_t, QString > &entrypoints, Executable::addr_type aType=Executable::RVA)
Definition PEFile.cpp:699
+
SectHdrsWrapper * sects
Definition PEFile.h:351
+
SectionHdrWrapper * _getSecHdr(size_t index) const
Definition PEFile.h:322
+
bool unbindImports()
Definition PEFile.cpp:667
offset_t peDataDirOffset()
Definition PEFile.cpp:278
virtual offset_t getEntryPoint(Executable::addr_type addrType=Executable::RVA)
Definition PEFile.cpp:308
void _init(AbstractByteBuffer *v_buf)
Definition PEFile.cpp:116
offset_t getMinSecRVA()
Definition PEFile.cpp:265
-
friend class SectHdrsWrapper
Definition PEFile.h:329
-
FileHdrWrapper * fHdr
Definition PEFile.h:321
-
size_t _getSecIndex(SectionHdrWrapper *sec) const
Definition PEFile.h:291
-
ResourcesAlbum * album
Definition PEFile.h:325
+
friend class SectHdrsWrapper
Definition PEFile.h:357
+
FileHdrWrapper * fHdr
Definition PEFile.h:349
+
size_t _getSecIndex(SectionHdrWrapper *sec) const
Definition PEFile.h:317
+
ResourcesAlbum * album
Definition PEFile.h:353
bool setEntryPoint(offset_t entry, Executable::addr_type aType)
Definition PEFile.cpp:323
pe::RICH_DANS_HEADER * getRichHeaderBgn(pe::RICH_SIGNATURE *sign)
Definition PEFile.cpp:209
-
SectionHdrWrapper * extendLastSection(bufsize_t addedSize)
Definition PEFile.cpp:598
+
SectionHdrWrapper * extendLastSection(bufsize_t addedSize)
Definition PEFile.cpp:611
@ WR_DIR_ENTRY
Definition PEFile.h:55
@ WR_DATADIR
Definition PEFile.h:53
@ WR_OPTIONAL_HDR
Definition PEFile.h:52
@@ -952,23 +971,25 @@ $(function() { codefold.init(0); });
@ WR_DOS_HDR
Definition PEFile.h:49
@ WR_SECTIONS
Definition PEFile.h:54
@ WR_RICH_HDR
Definition PEFile.h:50
-
PECore core
Definition PEFile.h:313
+
PECore core
Definition PEFile.h:346
void initDirEntries()
Definition PEFile.cpp:173
virtual void wrap()
Definition PEFile.cpp:193
-
SectionHdrWrapper * getLastSection()
Definition PEFile.cpp:547
-
OptHdrWrapper * optHdr
Definition PEFile.h:322
-
bool dumpSection(SectionHdrWrapper *sec, QString fileName)
Definition PEFile.cpp:653
-
offset_t _getLastMapped(Executable::addr_type aType)
Definition PEFile.cpp:554
+
SectionHdrWrapper * getLastSection()
Definition PEFile.h:187
+
OptHdrWrapper * optHdr
Definition PEFile.h:350
+
bool dumpSection(SectionHdrWrapper *sec, QString fileName)
Definition PEFile.cpp:652
+
offset_t _getLastMapped(Executable::addr_type aType)
Definition PEFile.cpp:567
virtual offset_t rvaToRaw(offset_t rva)
Definition PEFile.cpp:399
BufferView * createSectionView(size_t secNum)
Definition PEFile.cpp:439
bool setHdrSectionsNum(size_t newNum)
Definition PEFile.cpp:341
bool setVirtualSize(bufsize_t newSize)
Definition PEFile.cpp:352
+
bool _canAddNewSection()
Definition PEFile.cpp:485
void wrapCore()
Definition PEFile.cpp:180
DataDirEntryWrapper * getDataDirEntry(pe::dir_entry eType)
Definition PEFile.cpp:433
-
SectionHdrWrapper * _getSecHdrAtOffset(offset_t offset, Executable::addr_type aType, bool recalculate=false, bool verbose=false)
Definition PEFile.h:301
+
SectionHdrWrapper * _getSecHdrAtOffset(offset_t offset, Executable::addr_type aType, bool recalculate=false, bool verbose=false)
Definition PEFile.h:327
bool moveDataDirEntry(pe::dir_entry id, offset_t newOffset, Executable::addr_type addType=Executable::RAW)
Definition PEFile.cpp:450
+
SectionHdrWrapper * _getLastSection()
Definition PEFile.cpp:561
virtual void clearWrappers()
Definition PEFile.cpp:162
-
offset_t _secHdrsEndOffset()
Definition PEFile.h:277
+
offset_t _secHdrsEndOffset()
Definition PEFile.h:303
IMAGE_DATA_DIRECTORY * getDataDirectory()
Definition PEFile.cpp:284
virtual offset_t rawToRva(offset_t raw)
Definition PEFile.cpp:371
bufsize_t hdrsSize()
Definition PEFile.h:81
@@ -976,9 +997,8 @@ $(function() { codefold.init(0); });
PEFile(AbstractByteBuffer *v_buf)
Definition PEFile.cpp:105
virtual bufsize_t getAlignment(Executable::addr_type aType) const
Definition PEFile.h:68
pe::RICH_SIGNATURE * getRichHeaderSign()
Definition PEFile.cpp:236
-
bool canAddNewSection()
Definition PEFile.cpp:485
static long computeChecksum(BYTE *buffer, size_t bufferSize, offset_t checksumOffset)
Definition PEFile.cpp:45
-
DosHdrWrapper * dosHdrWrapper
Definition PEFile.h:319
+
DosHdrWrapper * dosHdrWrapper
Definition PEFile.h:347
size_t _getSectionsCount(bool useMapped=true) const
Definition PEFile.cpp:363
SectionHdrWrapper * addNewSection(QString name, bufsize_t size, bufsize_t v_size=0)
Definition PEFile.cpp:499
diff --git a/_p_e_file_8h_source.html b/_p_e_file_8h_source.html index 0eea4d93..14aefc45 100644 --- a/_p_e_file_8h_source.html +++ b/_p_e_file_8h_source.html @@ -237,239 +237,271 @@ $(function() { codefold.init(0); });
136
137 // mutex protected
- +
139 {
- -
142 return NULL; //not my section
-
143 }
-
144 const bufsize_t buf_size = sec->getContentSize(Executable::RAW, true);
-
145 if (!buf_size) return NULL;
-
146
-
147 offset_t start = sec->getContentOffset(Executable::RAW, true);
-
148 BYTE *ptr = this->getContentAt(start, buf_size);
-
149 return ptr;
-
150 }
+ +
142 return this->_getSecHdrAtOffset(ep, Executable::RVA, true, false);
+
143 }
-
151 // mutex protected
-
- -
153 {
- - -
156 return false; //not my section
-
157 }
- -
159 if (!secView) return false;
-
160
-
161 bool isOk = secView->fillContent(0);
-
162 delete secView;
-
163 return isOk;
-
164 }
+
144
+
145 // mutex protected
+
+ +
147 {
+ + +
150 return NULL; //not my section
+
151 }
+
152 const bufsize_t buf_size = sec->getContentSize(Executable::RAW, true);
+
153 if (!buf_size) return NULL;
+
154
+
155 offset_t start = sec->getContentOffset(Executable::RAW, true);
+
156 BYTE *ptr = this->getContentAt(start, buf_size);
+
157 return ptr;
+
158 }
-
165
- -
171
-
172/* resource operations */
+
159
+
160 // mutex protected
+ +
162 //---
+
163
+
164 // mutex protected
+
+ +
166 {
+ + +
169 return false; //not my section
+
170 }
+ +
172 if (!secView) return false;
173
-
-
174 ResourcesContainer* getResourcesOfType(pe::resource_type typeId)
-
175 {
-
176 return (this->album == NULL) ? NULL : album->getResourcesOfType(typeId);
+
174 bool isOk = secView->fillContent(0);
+
175 delete secView;
+
176 return isOk;
177 }
-
178
- -
180
- -
182 //---
-
183 //modifications:
- -
185 bool moveDataDirEntry(pe::dir_entry id, offset_t newOffset, Executable::addr_type addType = Executable::RAW); //throws CustomException
-
186
- -
188 bool canAddNewSection();
- - -
191 bool unbindImports();
+
178
+
179 // mutex protected
+ +
185
+
186 // mutex protected
+
192
-
193 /* wrappers for fetching commonly used directories */
+
193 // mutex protected
- +
195 {
-
196 return dynamic_cast<ImportDirWrapper*>(getWrapper(PEFile::WR_DIR_ENTRY + pe::DIR_IMPORT));
-
197 }
+ +
197 return this->_canAddNewSection();
+
198 }
-
198
-
- -
200 {
-
201 return dynamic_cast<DelayImpDirWrapper*>(getWrapper(PEFile::WR_DIR_ENTRY + pe::DIR_DELAY_IMPORT));
-
202 }
+
199
+
200 // mutex protected
+ +
202
+
203 // NOT mutex protected
+ +
205
+
206 // mutex protected
+
207 bool dumpSection(SectionHdrWrapper *sec, QString fileName);
+
208
+
209/* resource operations */
+
210
+
+
211 ResourcesContainer* getResourcesOfType(pe::resource_type typeId)
+
212 {
+
213 return (this->album == NULL) ? NULL : album->getResourcesOfType(typeId);
+
214 }
-
203
-
- -
205 {
-
206 return dynamic_cast<ExportDirWrapper*>(getWrapper(PEFile::WR_DIR_ENTRY + pe::DIR_EXPORT));
-
207 }
+
215
+ +
217
+
218 //modifications:
+ +
220 bool moveDataDirEntry(pe::dir_entry id, offset_t newOffset, Executable::addr_type addType = Executable::RAW); //throws CustomException
+
221
+
222 bool unbindImports();
+
223
+
224 /* wrappers for fetching commonly used directories */
+
+ +
226 {
+
227 return dynamic_cast<ImportDirWrapper*>(getWrapper(PEFile::WR_DIR_ENTRY + pe::DIR_IMPORT));
+
228 }
-
208
-
209 /* All Entry Points of the application, including: main EP, Exports, TLS Callbacks */
-
- -
211 {
-
212 size_t initialSize = entrypoints.size();
-
213
- -
215 this->getExportsMap(entrypoints, aType);
-
216
-
217 return entrypoints.size() - initialSize;
-
218 }
+
229
+
+ +
231 {
+
232 return dynamic_cast<DelayImpDirWrapper*>(getWrapper(PEFile::WR_DIR_ENTRY + pe::DIR_DELAY_IMPORT));
+
233 }
-
219
-
220 /* wrappers:
-
221 */
-
-
222 bool hasDirectory(pe::dir_entry dirNum)
-
223 {
-
224 return this->getDataDirEntry(dirNum) ? true : false;
-
225 }
+
234
+
+ +
236 {
+
237 return dynamic_cast<ExportDirWrapper*>(getWrapper(PEFile::WR_DIR_ENTRY + pe::DIR_EXPORT));
+
238 }
-
226
-
- -
228 {
-
229 return this->getAlignment(Executable::RAW);
-
230 }
+
239
+
240 /* All Entry Points of the application, including: main EP, Exports, TLS Callbacks */
+
+ +
242 {
+
243 size_t initialSize = entrypoints.size();
+
244
+ +
246 this->getExportsMap(entrypoints, aType);
+
247
+
248 return entrypoints.size() - initialSize;
+
249 }
-
231
-
- -
233 {
-
234 return this->getAlignment(Executable::RVA);
-
235 }
-
-
236
-
237
-
- -
239 {
-
240 this->setVirtualSize(newSize);
-
241 }
-
-
242
-
- -
244 {
- -
246 return this->_getSecHdrAtOffset(ep, Executable::RVA, true, false);
-
247 }
-
-
248
-
249 bool dumpSection(SectionHdrWrapper *sec, QString fileName);
250
-
- -
252 {
- -
254 if (newSize > currentSize) {
-
255 return true;
-
256 }
- -
258 if (newSize < hEnd) {
-
259 return false; // the resize will harm headers!
-
260 }
-
261 return true;
-
262 }
+
251 /* wrappers:
+
252 */
+
+
253 bool hasDirectory(pe::dir_entry dirNum)
+
254 {
+
255 return this->getDataDirEntry(dirNum) ? true : false;
+
256 }
-
263
-
- -
265 {
-
266 bool isRepro = false;
-
267 DebugDirWrapper* dbgDir = dynamic_cast<DebugDirWrapper*>(dataDirEntries[pe::DIR_DEBUG]);
-
268 if (dbgDir && dbgDir->isRepro()) {
-
269 isRepro = true;
-
270 }
-
271 return isRepro;
+
257
+
+ +
259 {
+
260 return this->getAlignment(Executable::RAW);
+
261 }
+
+
262
+
+ +
264 {
+
265 return this->getAlignment(Executable::RVA);
+
266 }
+
+
267
+
268
+
+ +
270 {
+
271 this->setVirtualSize(newSize);
272 }
273
-
274protected:
-
275 void wrapCore();
-
276
-
- -
278 {
-
279 const offset_t offset = secHdrsOffset();
-
280 if (offset == INVALID_ADDR) {
-
281 return INVALID_ADDR;
-
282 }
- -
284 return offset + secHdrSize;
+
+ +
275 {
+ +
277 if (newSize > currentSize) {
+
278 return true;
+
279 }
+ +
281 if (newSize < hEnd) {
+
282 return false; // the resize will harm headers!
+
283 }
+
284 return true;
285 }
286
- -
288
-
289 size_t _getSectionsCount(bool useMapped = true) const;
-
290
-
- -
292 {
- -
294 }
+
+ +
288 {
+
289 bool isRepro = false;
+
290 DebugDirWrapper* dbgDir = dynamic_cast<DebugDirWrapper*>(dataDirEntries[pe::DIR_DEBUG]);
+
291 if (dbgDir && dbgDir->isRepro()) {
+
292 isRepro = true;
+
293 }
+
294 return isRepro;
+
295 }
-
295
-
- -
297 {
-
298 return (sects) ? sects->_getSecHdr(index) : NULL;
-
299 }
+
296
+
297protected:
+
298 void wrapCore();
+
299
+ +
301 bool _canAddNewSection();
+
302
+
+ +
304 {
+
305 const offset_t offset = secHdrsOffset();
+
306 if (offset == INVALID_ADDR) {
+
307 return INVALID_ADDR;
+
308 }
+ +
310 return offset + secHdrSize;
+
311 }
-
300
-
- -
302 {
-
303 return (sects) ? sects->getSecHdrAtOffset(offset, aType, recalculate, verbose) : NULL;
-
304 }
+
312
+ +
314
+
315 size_t _getSectionsCount(bool useMapped = true) const;
+
316
+
+ +
318 {
+ +
320 }
-
305
- - -
308
-
309 virtual void clearWrappers();
-
310
- -
312 void initDirEntries();
- -
314 //---
-
315 //modifications:
-
316 bool setHdrSectionsNum(size_t newNum);
- -
318
- -
320
- - - -
324
- -
326 DataDirEntryWrapper* dataDirEntries[pe::DIR_ENTRIES_COUNT];
- -
328
-
329friend class SectHdrsWrapper;
-
330friend class SectionHdrWrapper;
-
331};
+
321
+
+ +
323 {
+
324 return (sects) ? sects->_getSecHdr(index) : NULL;
+
325 }
-
332
+
326
+
+ +
328 {
+
329 return (sects) ? sects->getSecHdrAtOffset(offset, aType, recalculate, verbose) : NULL;
+
330 }
+
+
331
+ +
333
+ +
335
+
336 virtual void clearWrappers();
+
337
+ +
339 void initDirEntries();
+
340
+
341 //---
+
342 //modifications:
+
343 bool setHdrSectionsNum(size_t newNum);
+ +
345
+ + +
348
+ + + +
352
+ +
354 DataDirEntryWrapper* dataDirEntries[pe::DIR_ENTRIES_COUNT];
+ +
356
+
357friend class SectHdrsWrapper;
+
358friend class SectionHdrWrapper;
+
359};
+
+
360
INT_TYPE _getNumValue(void *ptr)
uint32_t bufsize_t
const offset_t INVALID_ADDR
@@ -536,36 +568,36 @@ $(function() { codefold.init(0); });
QString typeName()
Definition PEFile.h:39
virtual bool signatureMatches(AbstractByteBuffer *buf)
Definition PEFile.cpp:4
-
DataDirEntryWrapper * dataDirEntries[pe::DIR_ENTRIES_COUNT]
Definition PEFile.h:326
-
QMutex m_peMutex
Definition PEFile.h:327
+
DataDirEntryWrapper * dataDirEntries[pe::DIR_ENTRIES_COUNT]
Definition PEFile.h:354
+
QMutex m_peMutex
Definition PEFile.h:355
virtual bufsize_t getMappedSize(Executable::addr_type aType)
Definition PEFile.cpp:290
-
BufferView * _createSectionView(SectionHdrWrapper *sec)
Definition PEFile.cpp:669
-
size_t getExportsMap(QMap< offset_t, QString > &entrypoints, Executable::addr_type aType=Executable::RVA)
Definition PEFile.cpp:680
-
DelayImpDirWrapper * getDelayedImports()
Definition PEFile.h:199
-
offset_t secHdrsEndOffset()
Definition PEFile.h:166
-
bufsize_t getSectionAlignment() const
Definition PEFile.h:232
+
BufferView * _createSectionView(SectionHdrWrapper *sec)
Definition PEFile.cpp:688
+
size_t getExportsMap(QMap< offset_t, QString > &entrypoints, Executable::addr_type aType=Executable::RVA)
Definition PEFile.cpp:699
+
DelayImpDirWrapper * getDelayedImports()
Definition PEFile.h:230
+
offset_t secHdrsEndOffset()
Definition PEFile.h:180
+
bufsize_t getSectionAlignment() const
Definition PEFile.h:263
offset_t peFileHdrOffset() const
Definition PEFile.h:75
-
SectHdrsWrapper * sects
Definition PEFile.h:323
-
SectionHdrWrapper * _getSecHdr(size_t index) const
Definition PEFile.h:296
+
SectHdrsWrapper * sects
Definition PEFile.h:351
+
SectionHdrWrapper * _getSecHdr(size_t index) const
Definition PEFile.h:322
bufsize_t peNtHeadersSize() const
Definition PEFile.h:77
-
bool hasDirectory(pe::dir_entry dirNum)
Definition PEFile.h:222
+
bool hasDirectory(pe::dir_entry dirNum)
Definition PEFile.h:253
virtual ~PEFile()
Definition PEFile.h:63
-
bool unbindImports()
Definition PEFile.cpp:634
+
bool unbindImports()
Definition PEFile.cpp:667
offset_t peDataDirOffset()
Definition PEFile.cpp:278
virtual offset_t getEntryPoint(Executable::addr_type addrType=Executable::RVA)
Definition PEFile.cpp:308
offset_t secHdrsOffset() const
Definition PEFile.h:79
void _init(AbstractByteBuffer *v_buf)
Definition PEFile.cpp:116
-
ExportDirWrapper * getExports()
Definition PEFile.h:204
+
ExportDirWrapper * getExports()
Definition PEFile.h:235
offset_t getMinSecRVA()
Definition PEFile.cpp:265
offset_t getLastMapped(Executable::addr_type aType)
Definition PEFile.h:98
-
FileHdrWrapper * fHdr
Definition PEFile.h:321
-
size_t _getSecIndex(SectionHdrWrapper *sec) const
Definition PEFile.h:291
-
ResourcesAlbum * album
Definition PEFile.h:325
+
FileHdrWrapper * fHdr
Definition PEFile.h:349
+
size_t _getSecIndex(SectionHdrWrapper *sec) const
Definition PEFile.h:317
+
ResourcesAlbum * album
Definition PEFile.h:353
bool setEntryPoint(offset_t entry, Executable::addr_type aType)
Definition PEFile.cpp:323
pe::RICH_DANS_HEADER * getRichHeaderBgn(pe::RICH_SIGNATURE *sign)
Definition PEFile.cpp:209
-
virtual size_t getAllEntryPoints(QMap< offset_t, QString > &entrypoints, Executable::addr_type aType=Executable::RVA)
Definition PEFile.h:210
+
virtual size_t getAllEntryPoints(QMap< offset_t, QString > &entrypoints, Executable::addr_type aType=Executable::RVA)
Definition PEFile.h:241
virtual offset_t getImageBase(bool recalculate=false)
Definition PEFile.h:69
-
SectionHdrWrapper * extendLastSection(bufsize_t addedSize)
Definition PEFile.cpp:598
+
SectionHdrWrapper * extendLastSection(bufsize_t addedSize)
Definition PEFile.cpp:611
WRAPPERS
Definition PEFile.h:47
@ WR_DIR_ENTRY
Definition PEFile.h:55
@ WR_DATADIR
Definition PEFile.h:53
@@ -577,50 +609,52 @@ $(function() { codefold.init(0); });
@ WR_SECTIONS
Definition PEFile.h:54
@ WR_RICH_HDR
Definition PEFile.h:50
@ COUNT_WRAPPERS
Definition PEFile.h:57
-
PECore core
Definition PEFile.h:313
+
PECore core
Definition PEFile.h:346
size_t getSectionsCount(bool useMapped=true)
Definition PEFile.h:110
void initDirEntries()
Definition PEFile.cpp:173
virtual void wrap()
Definition PEFile.cpp:193
-
SectionHdrWrapper * getLastSection()
Definition PEFile.cpp:547
-
OptHdrWrapper * optHdr
Definition PEFile.h:322
-
bool dumpSection(SectionHdrWrapper *sec, QString fileName)
Definition PEFile.cpp:653
-
offset_t _getLastMapped(Executable::addr_type aType)
Definition PEFile.cpp:554
+
SectionHdrWrapper * getLastSection()
Definition PEFile.h:187
+
OptHdrWrapper * optHdr
Definition PEFile.h:350
+
bool dumpSection(SectionHdrWrapper *sec, QString fileName)
Definition PEFile.cpp:652
+
offset_t _getLastMapped(Executable::addr_type aType)
Definition PEFile.cpp:567
virtual offset_t rvaToRaw(offset_t rva)
Definition PEFile.cpp:399
BufferView * createSectionView(size_t secNum)
Definition PEFile.cpp:439
ResourcesAlbum * getResourcesAlbum() const
Definition PEFile.h:83
offset_t peOptHdrOffset() const
Definition PEFile.h:78
bool setHdrSectionsNum(size_t newNum)
Definition PEFile.cpp:341
bool setVirtualSize(bufsize_t newSize)
Definition PEFile.cpp:352
+
bool _canAddNewSection()
Definition PEFile.cpp:485
void wrapCore()
Definition PEFile.cpp:180
DataDirEntryWrapper * getDataDirEntry(pe::dir_entry eType)
Definition PEFile.cpp:433
-
SectionHdrWrapper * _getSecHdrAtOffset(offset_t offset, Executable::addr_type aType, bool recalculate=false, bool verbose=false)
Definition PEFile.h:301
-
bool clearContent(SectionHdrWrapper *sec)
Definition PEFile.h:152
+
SectionHdrWrapper * _getSecHdrAtOffset(offset_t offset, Executable::addr_type aType, bool recalculate=false, bool verbose=false)
Definition PEFile.h:327
+
bool clearContent(SectionHdrWrapper *sec)
Definition PEFile.h:165
bool moveDataDirEntry(pe::dir_entry id, offset_t newOffset, Executable::addr_type addType=Executable::RAW)
Definition PEFile.cpp:450
+
SectionHdrWrapper * _getLastSection()
Definition PEFile.cpp:561
virtual void clearWrappers()
Definition PEFile.cpp:162
size_t getSecIndex(SectionHdrWrapper *sec)
Definition PEFile.h:117
-
offset_t _secHdrsEndOffset()
Definition PEFile.h:277
+
offset_t _secHdrsEndOffset()
Definition PEFile.h:303
SectionHdrWrapper * getSecHdr(size_t index)
Definition PEFile.h:124
IMAGE_DATA_DIRECTORY * getDataDirectory()
Definition PEFile.cpp:284
virtual offset_t rawToRva(offset_t raw)
Definition PEFile.cpp:371
bufsize_t hdrsSize()
Definition PEFile.h:81
size_t hdrSectionsNum() const
Definition PEFile.cpp:332
-
ImportDirWrapper * getImports()
Definition PEFile.h:194
-
SectionHdrWrapper * getEntrySection()
Definition PEFile.h:243
-
void setImageSize(size_t newSize)
Definition PEFile.h:238
+
ImportDirWrapper * getImports()
Definition PEFile.h:225
+
SectionHdrWrapper * getEntrySection()
Definition PEFile.h:138
+
void setImageSize(size_t newSize)
Definition PEFile.h:269
PEFile(AbstractByteBuffer *v_buf)
Definition PEFile.cpp:105
offset_t peNtHdrOffset() const
Definition PEFile.h:76
-
bufsize_t getFileAlignment() const
Definition PEFile.h:227
+
bufsize_t getFileAlignment() const
Definition PEFile.h:258
virtual bufsize_t getAlignment(Executable::addr_type aType) const
Definition PEFile.h:68
virtual exe_bits getBitMode()
Definition PEFile.h:72
-
BYTE * getSecContent(SectionHdrWrapper *sec)
Definition PEFile.h:138
+
BYTE * getSecContent(SectionHdrWrapper *sec)
Definition PEFile.h:146
pe::RICH_SIGNATURE * getRichHeaderSign()
Definition PEFile.cpp:236
-
bool canResize(bufsize_t newSize)
Definition PEFile.h:251
-
bool canAddNewSection()
Definition PEFile.cpp:485
+
bool canResize(bufsize_t newSize)
Definition PEFile.h:274
+
bool canAddNewSection()
Definition PEFile.h:194
static long computeChecksum(BYTE *buffer, size_t bufferSize, offset_t checksumOffset)
Definition PEFile.cpp:45
-
DosHdrWrapper * dosHdrWrapper
Definition PEFile.h:319
-
ResourcesContainer * getResourcesOfType(pe::resource_type typeId)
Definition PEFile.h:174
+
DosHdrWrapper * dosHdrWrapper
Definition PEFile.h:347
+
ResourcesContainer * getResourcesOfType(pe::resource_type typeId)
Definition PEFile.h:211
exe_bits getHdrBitMode()
Definition PEFile.h:94
-
bool isReproBuild()
Definition PEFile.h:264
+
bool isReproBuild()
Definition PEFile.h:287
SectionHdrWrapper * getSecHdrAtOffset(offset_t offset, Executable::addr_type aType, bool recalculate=false, bool verbose=false)
Definition PEFile.h:131
size_t _getSectionsCount(bool useMapped=true) const
Definition PEFile.cpp:363
SectionHdrWrapper * addNewSection(QString name, bufsize_t size, bufsize_t v_size=0)
Definition PEFile.cpp:499
diff --git a/_resource_dir_wrapper_8cpp_source.html b/_resource_dir_wrapper_8cpp_source.html index ff549b20..d77af7ac 100644 --- a/_resource_dir_wrapper_8cpp_source.html +++ b/_resource_dir_wrapper_8cpp_source.html @@ -524,7 +524,7 @@ $(function() { codefold.init(0); });
BYTE * getContentAt(offset_t offset, bufsize_t size, bool allowExceptions=false)
Definition Executable.h:57
-
bool isReproBuild()
Definition PEFile.h:264
+
bool isReproBuild()
Definition PEFile.h:287
diff --git a/_sect_hdrs_wrapper_8cpp_source.html b/_sect_hdrs_wrapper_8cpp_source.html index 5978a7e3..cf751a15 100644 --- a/_sect_hdrs_wrapper_8cpp_source.html +++ b/_sect_hdrs_wrapper_8cpp_source.html @@ -766,7 +766,7 @@ $(function() { codefold.init(0); });
virtual offset_t getRawSize() const
Definition Executable.h:54
virtual bufsize_t getImageSize()
Definition Executable.h:66
virtual bufsize_t getMappedSize(Executable::addr_type aType)
Definition PEFile.cpp:290
-
SectionHdrWrapper * _getSecHdr(size_t index) const
Definition PEFile.h:296
+
SectionHdrWrapper * _getSecHdr(size_t index) const
Definition PEFile.h:322
offset_t secHdrsOffset() const
Definition PEFile.h:79
bool setHdrSectionsNum(size_t newNum)
Definition PEFile.cpp:341
size_t hdrSectionsNum() const
Definition PEFile.cpp:332
diff --git a/class_p_e_file-members.html b/class_p_e_file-members.html index 7988f42b..117af935 100644 --- a/class_p_e_file-members.html +++ b/class_p_e_file-members.html @@ -78,8 +78,10 @@ $(function() {

This is the complete list of members for PEFile, including all inherited members.

- - + + + + @@ -95,7 +97,7 @@ $(function() { - + @@ -140,7 +142,7 @@ $(function() { - + diff --git a/class_p_e_file.html b/class_p_e_file.html index de571df8..b0458143 100644 --- a/class_p_e_file.html +++ b/class_p_e_file.html @@ -233,22 +233,16 @@ Public Member Functions + + + + - - - - - - - - - - @@ -257,6 +251,16 @@ Public Member Functions + + + + + + + + + + @@ -275,10 +279,6 @@ Public Member Functions - - - - @@ -405,6 +405,10 @@ Static Public Member Functions Protected Member Functions + + + + @@ -659,6 +663,81 @@ Here is the call graph for this function:

Member Function Documentation

+ +

◆ _canAddNewSection()

+ +
+
+
_createSectionView(SectionHdrWrapper *sec)PEFileprotected
_getLastMapped(Executable::addr_type aType)PEFileprotected
_canAddNewSection()PEFileprotected
_createSectionView(SectionHdrWrapper *sec)PEFileprotected
_getLastMapped(Executable::addr_type aType)PEFileprotected
_getLastSection()PEFileprotected
_getSecHdr(size_t index) constPEFileinlineprotected
_getSecHdrAtOffset(offset_t offset, Executable::addr_type aType, bool recalculate=false, bool verbose=false)PEFileinlineprotected
_getSecIndex(SectionHdrWrapper *sec) constPEFileinlineprotected
BITS_32 enum valueExecutable
BITS_64 enum valueExecutable
bufExecutableprotected
canAddNewSection()PEFile
canAddNewSection()PEFileinline
canResize(bufsize_t newSize)PEFileinlinevirtual
clearContent(SectionHdrWrapper *sec)PEFileinline
clearWrappers()PEFileprotectedvirtual
getImageSize()Executableinlinevirtual
getImports()PEFileinline
getLastMapped(Executable::addr_type aType)PEFileinline
getLastSection()PEFile
getLastSection()PEFileinline
getMappedSize(Executable::addr_type aType)PEFilevirtual
getMaxSizeFromOffset(offset_t startOffset)AbstractByteBuffer
getMaxSizeFromPtr(BYTE *ptr)AbstractByteBufferinline
 
SectionHdrWrappergetSecHdrAtOffset (offset_t offset, Executable::addr_type aType, bool recalculate=false, bool verbose=false)
 
SectionHdrWrappergetEntrySection ()
 
BYTEgetSecContent (SectionHdrWrapper *sec)
 
BufferViewcreateSectionView (size_t secNum)
 
bool clearContent (SectionHdrWrapper *sec)
 
offset_t secHdrsEndOffset ()
 
ResourcesContainergetResourcesOfType (pe::resource_type typeId)
 
DataDirEntryWrappergetDataDirEntry (pe::dir_entry eType)
 
BufferViewcreateSectionView (size_t secNum)
 
bool setEntryPoint (offset_t entry, Executable::addr_type aType)
 
bool moveDataDirEntry (pe::dir_entry id, offset_t newOffset, Executable::addr_type addType=Executable::RAW)
 
SectionHdrWrappergetLastSection ()
 
bool canAddNewSection ()
 
SectionHdrWrapperextendLastSection (bufsize_t addedSize)
 
bool dumpSection (SectionHdrWrapper *sec, QString fileName)
 
ResourcesContainergetResourcesOfType (pe::resource_type typeId)
 
DataDirEntryWrappergetDataDirEntry (pe::dir_entry eType)
 
bool setEntryPoint (offset_t entry, Executable::addr_type aType)
 
bool moveDataDirEntry (pe::dir_entry id, offset_t newOffset, Executable::addr_type addType=Executable::RAW)
 
bool unbindImports ()
 
ImportDirWrappergetImports ()
 
void setImageSize (size_t newSize)
 
SectionHdrWrappergetEntrySection ()
 
bool dumpSection (SectionHdrWrapper *sec, QString fileName)
 
bool canResize (bufsize_t newSize)
 
bool isReproBuild ()
void wrapCore ()
 
SectionHdrWrapper_getLastSection ()
 
bool _canAddNewSection ()
 
offset_t _secHdrsEndOffset ()
 
offset_t _getLastMapped (Executable::addr_type aType)
+ + + + +
+ + + + + + + +
bool PEFile::_canAddNewSection ()
+
+protected
+
+ +

Definition at line 485 of file PEFile.cpp.

+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+

◆ _createSectionView()

@@ -682,7 +761,7 @@ Here is the call graph for this function:
-

Definition at line 669 of file PEFile.cpp.

+

Definition at line 688 of file PEFile.cpp.

Here is the call graph for this function:
@@ -724,7 +803,7 @@ Here is the call graph for this function:
-

Definition at line 554 of file PEFile.cpp.

+

Definition at line 567 of file PEFile.cpp.

Here is the call graph for this function:
@@ -817,6 +896,90 @@ Here is the call graph for this function:
+
+
+ +

◆ _getLastSection()

+ +
+
+ + + + + +
+ + + + + + + +
SectionHdrWrapper * PEFile::_getLastSection ()
+
+protected
+
+ +

Definition at line 561 of file PEFile.cpp.

+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
@@ -842,7 +1005,7 @@ Here is the call graph for this function:
-

Definition at line 296 of file PEFile.h.

+

Definition at line 322 of file PEFile.h.

Here is the call graph for this function:
@@ -896,7 +1059,7 @@ Here is the call graph for this function:
-

Definition at line 301 of file PEFile.h.

+

Definition at line 327 of file PEFile.h.

Here is the call graph for this function:
@@ -936,7 +1099,7 @@ Here is the call graph for this function:
-

Definition at line 291 of file PEFile.h.

+

Definition at line 317 of file PEFile.h.

Here is the call graph for this function:
@@ -1146,7 +1309,7 @@ Here is the call graph for this function:
-

Definition at line 277 of file PEFile.h.

+

Definition at line 303 of file PEFile.h.

Here is the call graph for this function:
@@ -1236,6 +1399,7 @@ Here is the call graph for this function:
+

scope1

Definition at line 499 of file PEFile.cpp.

@@ -1243,99 +1407,99 @@ Here is the call graph for this function:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
@@ -1346,6 +1510,9 @@ Here is the call graph for this function:
+ + + + + +
@@ -1354,55 +1521,63 @@ Here is the call graph for this function:
bool PEFile::canAddNewSection
+
+inline
-

Definition at line 485 of file PEFile.cpp.

+

Definition at line 194 of file PEFile.h.

Here is the call graph for this function:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
@@ -1433,7 +1608,7 @@ Here is the call graph for this function:

Reimplemented from MappedExe.

-

Definition at line 251 of file PEFile.h.

+

Definition at line 274 of file PEFile.h.

Here is the call graph for this function:
@@ -1485,7 +1660,7 @@ Here is the call graph for this function:
-

Definition at line 152 of file PEFile.h.

+

Definition at line 165 of file PEFile.h.

Here is the call graph for this function:
@@ -1667,7 +1842,7 @@ Here is the call graph for this function:
-

Definition at line 653 of file PEFile.cpp.

+

Definition at line 652 of file PEFile.cpp.

Here is the call graph for this function:
@@ -1712,100 +1887,105 @@ Here is the call graph for this function:
+

scope0

-

Definition at line 598 of file PEFile.cpp.

+

Definition at line 611 of file PEFile.cpp.

Here is the call graph for this function:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
@@ -1881,7 +2061,7 @@ Here is the call graph for this function:

Reimplemented from Executable.

-

Definition at line 210 of file PEFile.h.

+

Definition at line 241 of file PEFile.h.

Here is the call graph for this function:
@@ -2119,7 +2299,7 @@ Here is the call graph for this function:
-

Definition at line 199 of file PEFile.h.

+

Definition at line 230 of file PEFile.h.

Here is the call graph for this function:
@@ -2244,7 +2424,7 @@ Here is the call graph for this function:
-

Definition at line 243 of file PEFile.h.

+

Definition at line 138 of file PEFile.h.

Here is the call graph for this function:
@@ -2337,7 +2517,7 @@ Here is the call graph for this function:
-

Definition at line 204 of file PEFile.h.

+

Definition at line 235 of file PEFile.h.

Here is the call graph for this function:
@@ -2380,7 +2560,7 @@ Here is the call graph for this function:
-

Definition at line 680 of file PEFile.cpp.

+

Definition at line 699 of file PEFile.cpp.

Here is the call graph for this function:
@@ -2511,7 +2691,7 @@ Here is the call graph for this function:
-

Definition at line 227 of file PEFile.h.

+

Definition at line 258 of file PEFile.h.

Here is the call graph for this function:
@@ -2634,7 +2814,7 @@ Here is the call graph for this function:
-

Definition at line 194 of file PEFile.h.

+

Definition at line 225 of file PEFile.h.

Here is the call graph for this function:
@@ -2776,6 +2956,9 @@ Here is the call graph for this function:
+ + + + + +
@@ -2784,64 +2967,72 @@ Here is the call graph for this function:
SectionHdrWrapper * PEFile::getLastSection
+
+inline
-

Definition at line 547 of file PEFile.cpp.

+

Definition at line 187 of file PEFile.h.

Here is the call graph for this function:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
@@ -3019,7 +3210,7 @@ Here is the call graph for this function:
-

Definition at line 174 of file PEFile.h.

+

Definition at line 211 of file PEFile.h.

Here is the call graph for this function:
@@ -3142,7 +3333,7 @@ Here is the call graph for this function:
-

Definition at line 138 of file PEFile.h.

+

Definition at line 146 of file PEFile.h.

Here is the call graph for this function:
@@ -3337,7 +3528,7 @@ Here is the call graph for this function:
-

Definition at line 232 of file PEFile.h.

+

Definition at line 263 of file PEFile.h.

Here is the call graph for this function:
@@ -3456,7 +3647,7 @@ Here is the call graph for this function:
-

Definition at line 222 of file PEFile.h.

+

Definition at line 253 of file PEFile.h.

Here is the call graph for this function:
@@ -3632,7 +3823,7 @@ Here is the call graph for this function:
-

Definition at line 264 of file PEFile.h.

+

Definition at line 287 of file PEFile.h.

Here is the call graph for this function:
@@ -4148,7 +4339,7 @@ Here is the call graph for this function:
-

Definition at line 166 of file PEFile.h.

+

Definition at line 180 of file PEFile.h.

Here is the call graph for this function:
@@ -4449,7 +4640,7 @@ Here is the call graph for this function:
-

Definition at line 238 of file PEFile.h.

+

Definition at line 269 of file PEFile.h.

Here is the call graph for this function:
@@ -4595,7 +4786,7 @@ Here is the call graph for this function:
-

Definition at line 634 of file PEFile.cpp.

+

Definition at line 667 of file PEFile.cpp.

Here is the call graph for this function:
@@ -4816,7 +5007,7 @@ Here is the call graph for this function:
-

Definition at line 329 of file PEFile.h.

+

Definition at line 357 of file PEFile.h.

@@ -4840,7 +5031,7 @@ Here is the call graph for this function:
-

Definition at line 330 of file PEFile.h.

+

Definition at line 358 of file PEFile.h.

@@ -4865,7 +5056,7 @@ Here is the call graph for this function:
-

Definition at line 325 of file PEFile.h.

+

Definition at line 353 of file PEFile.h.

@@ -4889,7 +5080,7 @@ Here is the call graph for this function:
-

Definition at line 313 of file PEFile.h.

+

Definition at line 346 of file PEFile.h.

@@ -4913,7 +5104,7 @@ Here is the call graph for this function:
-

Definition at line 326 of file PEFile.h.

+

Definition at line 354 of file PEFile.h.

@@ -4937,7 +5128,7 @@ Here is the call graph for this function:
-

Definition at line 319 of file PEFile.h.

+

Definition at line 347 of file PEFile.h.

@@ -4961,7 +5152,7 @@ Here is the call graph for this function:
-

Definition at line 321 of file PEFile.h.

+

Definition at line 349 of file PEFile.h.

@@ -4985,7 +5176,7 @@ Here is the call graph for this function:
-

Definition at line 327 of file PEFile.h.

+

Definition at line 355 of file PEFile.h.

@@ -5009,7 +5200,7 @@ Here is the call graph for this function:
-

Definition at line 322 of file PEFile.h.

+

Definition at line 350 of file PEFile.h.

@@ -5033,7 +5224,7 @@ Here is the call graph for this function:
-

Definition at line 323 of file PEFile.h.

+

Definition at line 351 of file PEFile.h.

diff --git a/class_p_e_file_a698d54ae96d87128727289e73f9e8f19_cgraph.map b/class_p_e_file_a698d54ae96d87128727289e73f9e8f19_cgraph.map index d1e2b207..37a34848 100644 --- a/class_p_e_file_a698d54ae96d87128727289e73f9e8f19_cgraph.map +++ b/class_p_e_file_a698d54ae96d87128727289e73f9e8f19_cgraph.map @@ -1,89 +1,93 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/class_p_e_file_a698d54ae96d87128727289e73f9e8f19_cgraph.md5 b/class_p_e_file_a698d54ae96d87128727289e73f9e8f19_cgraph.md5 index f43c8e8f..7ba6900e 100644 --- a/class_p_e_file_a698d54ae96d87128727289e73f9e8f19_cgraph.md5 +++ b/class_p_e_file_a698d54ae96d87128727289e73f9e8f19_cgraph.md5 @@ -1 +1 @@ -fda0d302fc6686b1b0e789518f9f089f \ No newline at end of file +61d32922e8fd126673019b56d0a0409f \ No newline at end of file diff --git a/class_p_e_file_a698d54ae96d87128727289e73f9e8f19_cgraph.png b/class_p_e_file_a698d54ae96d87128727289e73f9e8f19_cgraph.png index c6dbb2c0..3a1c8ec6 100644 Binary files a/class_p_e_file_a698d54ae96d87128727289e73f9e8f19_cgraph.png and b/class_p_e_file_a698d54ae96d87128727289e73f9e8f19_cgraph.png differ diff --git a/class_p_e_file_a72cfa6fb099cf7e82f6f33220740b4df_cgraph.map b/class_p_e_file_a72cfa6fb099cf7e82f6f33220740b4df_cgraph.map index 13b3c87e..aa005811 100644 --- a/class_p_e_file_a72cfa6fb099cf7e82f6f33220740b4df_cgraph.map +++ b/class_p_e_file_a72cfa6fb099cf7e82f6f33220740b4df_cgraph.map @@ -1,52 +1,55 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/class_p_e_file_a72cfa6fb099cf7e82f6f33220740b4df_cgraph.md5 b/class_p_e_file_a72cfa6fb099cf7e82f6f33220740b4df_cgraph.md5 index 3a7ad73d..b5980faf 100644 --- a/class_p_e_file_a72cfa6fb099cf7e82f6f33220740b4df_cgraph.md5 +++ b/class_p_e_file_a72cfa6fb099cf7e82f6f33220740b4df_cgraph.md5 @@ -1 +1 @@ -60aeac7d42bcabca89bb453e2d97dff4 \ No newline at end of file +207c27fe76a9c28936cba307517fe684 \ No newline at end of file diff --git a/class_p_e_file_a72cfa6fb099cf7e82f6f33220740b4df_cgraph.png b/class_p_e_file_a72cfa6fb099cf7e82f6f33220740b4df_cgraph.png index 5f8859c7..ee3833a6 100644 Binary files a/class_p_e_file_a72cfa6fb099cf7e82f6f33220740b4df_cgraph.png and b/class_p_e_file_a72cfa6fb099cf7e82f6f33220740b4df_cgraph.png differ diff --git a/class_p_e_file_a8be09a9bc04414f9a76aa1b71bc8866f_cgraph.map b/class_p_e_file_a8be09a9bc04414f9a76aa1b71bc8866f_cgraph.map new file mode 100644 index 00000000..7eb57fd8 --- /dev/null +++ b/class_p_e_file_a8be09a9bc04414f9a76aa1b71bc8866f_cgraph.map @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/class_p_e_file_a8be09a9bc04414f9a76aa1b71bc8866f_cgraph.md5 b/class_p_e_file_a8be09a9bc04414f9a76aa1b71bc8866f_cgraph.md5 new file mode 100644 index 00000000..3c04cf68 --- /dev/null +++ b/class_p_e_file_a8be09a9bc04414f9a76aa1b71bc8866f_cgraph.md5 @@ -0,0 +1 @@ +64c13c98cf3293add27b1051b87bc882 \ No newline at end of file diff --git a/class_p_e_file_a8be09a9bc04414f9a76aa1b71bc8866f_cgraph.png b/class_p_e_file_a8be09a9bc04414f9a76aa1b71bc8866f_cgraph.png new file mode 100644 index 00000000..a38af0fc Binary files /dev/null and b/class_p_e_file_a8be09a9bc04414f9a76aa1b71bc8866f_cgraph.png differ diff --git a/class_p_e_file_aa28b46bc7b1cab7f5b631d096b03d6f9_cgraph.map b/class_p_e_file_aa28b46bc7b1cab7f5b631d096b03d6f9_cgraph.map new file mode 100644 index 00000000..b55de731 --- /dev/null +++ b/class_p_e_file_aa28b46bc7b1cab7f5b631d096b03d6f9_cgraph.map @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/class_p_e_file_aa28b46bc7b1cab7f5b631d096b03d6f9_cgraph.md5 b/class_p_e_file_aa28b46bc7b1cab7f5b631d096b03d6f9_cgraph.md5 new file mode 100644 index 00000000..20aab54a --- /dev/null +++ b/class_p_e_file_aa28b46bc7b1cab7f5b631d096b03d6f9_cgraph.md5 @@ -0,0 +1 @@ +11135f75e17dc16404f4a4126fd8945f \ No newline at end of file diff --git a/class_p_e_file_aa28b46bc7b1cab7f5b631d096b03d6f9_cgraph.png b/class_p_e_file_aa28b46bc7b1cab7f5b631d096b03d6f9_cgraph.png new file mode 100644 index 00000000..1f3ee5bb Binary files /dev/null and b/class_p_e_file_aa28b46bc7b1cab7f5b631d096b03d6f9_cgraph.png differ diff --git a/class_p_e_file_ae4e53b490f606ebec77317b0b7e7f996_cgraph.map b/class_p_e_file_ae4e53b490f606ebec77317b0b7e7f996_cgraph.map index 8e0aff04..ed125d66 100644 --- a/class_p_e_file_ae4e53b490f606ebec77317b0b7e7f996_cgraph.map +++ b/class_p_e_file_ae4e53b490f606ebec77317b0b7e7f996_cgraph.map @@ -1,43 +1,46 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/class_p_e_file_ae4e53b490f606ebec77317b0b7e7f996_cgraph.md5 b/class_p_e_file_ae4e53b490f606ebec77317b0b7e7f996_cgraph.md5 index aededc27..78018a52 100644 --- a/class_p_e_file_ae4e53b490f606ebec77317b0b7e7f996_cgraph.md5 +++ b/class_p_e_file_ae4e53b490f606ebec77317b0b7e7f996_cgraph.md5 @@ -1 +1 @@ -02e6dcb7d6695684043239b6b1335217 \ No newline at end of file +d32bd9e401a73b73ec2350f3dd45afb5 \ No newline at end of file diff --git a/class_p_e_file_ae4e53b490f606ebec77317b0b7e7f996_cgraph.png b/class_p_e_file_ae4e53b490f606ebec77317b0b7e7f996_cgraph.png index 4389b331..315a8e76 100644 Binary files a/class_p_e_file_ae4e53b490f606ebec77317b0b7e7f996_cgraph.png and b/class_p_e_file_ae4e53b490f606ebec77317b0b7e7f996_cgraph.png differ diff --git a/class_p_e_file_afdb1b254ee5f6d557c4d850196abd6e3_cgraph.map b/class_p_e_file_afdb1b254ee5f6d557c4d850196abd6e3_cgraph.map index 36ae3f2d..f659f5a8 100644 --- a/class_p_e_file_afdb1b254ee5f6d557c4d850196abd6e3_cgraph.map +++ b/class_p_e_file_afdb1b254ee5f6d557c4d850196abd6e3_cgraph.map @@ -1,95 +1,95 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/class_p_e_file_afdb1b254ee5f6d557c4d850196abd6e3_cgraph.md5 b/class_p_e_file_afdb1b254ee5f6d557c4d850196abd6e3_cgraph.md5 index e045e85d..83a6584e 100644 --- a/class_p_e_file_afdb1b254ee5f6d557c4d850196abd6e3_cgraph.md5 +++ b/class_p_e_file_afdb1b254ee5f6d557c4d850196abd6e3_cgraph.md5 @@ -1 +1 @@ -ca6be5dc60cf2b08bc3f12c56f01cf00 \ No newline at end of file +e6673c6fc9d49e66270aab30061ea717 \ No newline at end of file diff --git a/class_p_e_file_afdb1b254ee5f6d557c4d850196abd6e3_cgraph.png b/class_p_e_file_afdb1b254ee5f6d557c4d850196abd6e3_cgraph.png index d7586f37..9059fe21 100644 Binary files a/class_p_e_file_afdb1b254ee5f6d557c4d850196abd6e3_cgraph.png and b/class_p_e_file_afdb1b254ee5f6d557c4d850196abd6e3_cgraph.png differ diff --git a/functions.html b/functions.html index 7a7efadb..5adc565a 100644 --- a/functions.html +++ b/functions.html @@ -75,8 +75,10 @@ $(function() {
Here is a list of all class members with links to the classes they belong to:

- _ -