Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(417)

Unified Diff: syzygy/pe/pe_utils.h

Issue 2535563002: Added all code for integrity check transform (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « syzygy/pe/pe_relinker.cc ('k') | syzygy/pe/pe_utils.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: syzygy/pe/pe_utils.h
diff --git a/syzygy/pe/pe_utils.h b/syzygy/pe/pe_utils.h
index a727053487964a305a66bc1cc10bf3e3dee4221d..03ab8fcdd5d5438ae641c9c0eb8df2dca095fc6a 100644
--- a/syzygy/pe/pe_utils.h
+++ b/syzygy/pe/pe_utils.h
@@ -19,6 +19,8 @@
#include <winnt.h>
#include "syzygy/block_graph/block_graph.h"
+#include "syzygy/core/address.h"
+#include "syzygy/pe/pe_file_writer.h"
namespace pe {
@@ -31,6 +33,19 @@ enum SectionType {
kSectionUnknown
};
+// The file ranges of each section. This is populated by
+// CalculateSectionRanges and is a map from section index (as ordered in
+// the image layout) to section ranges on disk.
+typedef core::AddressRange<core::FileOffsetAddress, size_t> FileRange;
+typedef std::map<size_t, FileRange> SectionIndexFileRangeMap;
+
+// This stores an address-space from RVAs to section indices and is populated
+// by CalculateSectionRanges. This can be used to map from a block's
+// address to the index of its section. This is needed for finalizing
+// references.
+typedef core::AddressSpace<core::RelativeAddress, size_t, size_t>
+SectionIndexSpace;
+
// Typical section names.
extern const char kCodeSectionName[];
extern const char kReadOnlyDataSectionName[];
@@ -191,6 +206,19 @@ typedef std::map<ReferenceDest, ReferenceDest> ReferenceMap;
// @param redirects A map of original to redirected destinations.
void RedirectReferences(const ReferenceMap& redirects);
+template <class Type>
+bool UpdateReference(size_t start, Type new_value, std::vector<uint8_t>* data);
+
+bool ResolveReferences(core::AbsoluteAddress image_base,
+ const block_graph::BlockGraph::Block* block,
+ core::RelativeAddress addr,
+ const core::FileOffsetAddress file_offs,
+ SectionIndexFileRangeMap section_file_range_map,
+ SectionIndexSpace section_index_space,
+ bool write_references_in_place,
+ std::vector<uint8_t>* buffer,
+ const ImageLayout& image_layout);
+
} // namespace pe
#include "syzygy/pe/pe_utils_impl.h"
« no previous file with comments | « syzygy/pe/pe_relinker.cc ('k') | syzygy/pe/pe_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698