Chromium Code Reviews| Index: chrome/browser/safe_browsing/module_integrity_verifier.h |
| diff --git a/chrome/browser/safe_browsing/module_integrity_verifier.h b/chrome/browser/safe_browsing/module_integrity_verifier.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..a400c9097e314a48e7971430150d472a6ba965ea |
| --- /dev/null |
| +++ b/chrome/browser/safe_browsing/module_integrity_verifier.h |
| @@ -0,0 +1,43 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef CHROME_BROWSER_SAFE_BROWSING_MODULE_INTEGRITY_VERIFIER_H_ |
| +#define CHROME_BROWSER_SAFE_BROWSING_MODULE_INTEGRITY_VERIFIER_H_ |
| + |
| +#include <windows.h> |
|
grt (UTC plus 2)
2014/07/29 19:32:23
both of these are no longer needed if you switch a
krstnmnlsn
2014/07/30 14:34:35
Great!
|
| +#include <psapi.h> |
| + |
| +#include "base/files/file_path.h" |
|
grt (UTC plus 2)
2014/07/29 19:32:23
remove
krstnmnlsn
2014/07/30 14:34:35
Done.
|
| +#include "base/files/memory_mapped_file.h" |
|
grt (UTC plus 2)
2014/07/29 19:32:23
remove
krstnmnlsn
2014/07/30 14:34:36
Done.
|
| +#include "base/scoped_native_library.h" |
|
grt (UTC plus 2)
2014/07/29 19:32:23
remove
krstnmnlsn
2014/07/30 14:34:35
Had meant to remove these!
|
| +#include "base/win/pe_image.h" |
|
grt (UTC plus 2)
2014/07/29 19:32:23
forward-declare PEImage and PEImageAsData rather t
krstnmnlsn
2014/07/30 14:34:35
Done.
|
| + |
| +namespace safe_browsing { |
| + |
| +// This enum defines the possible module states VerifyModule can return. |
| +enum ModuleState { |
| + MODULE_STATE_UNKNOWN, |
| + MODULE_STATE_UNMODIFIED, |
| + MODULE_STATE_MODIFIED, |
| +}; |
| + |
| +// Helper to grab the addresses and size of the code section of a PEImage. |
| +// Returns two addresses: one for the dll loaded as a library, the other for the |
| +// dll loaded as data. |
| +bool GetCodeAddrsAndSize(const base::win::PEImage& mem_peimage, |
| + const base::win::PEImageAsData& disk_peimage, |
| + BYTE** mem_code_addr, |
|
grt (UTC plus 2)
2014/07/29 19:32:22
is there any reason not to use const uint8_t* in p
krstnmnlsn
2014/07/30 14:34:35
Nope, done.
|
| + BYTE** disk_code_addr, |
| + SIZE_T* code_size); |
|
grt (UTC plus 2)
2014/07/29 19:32:23
uint32_t (VirtualSize is always a 32-bit unsigned
krstnmnlsn
2014/07/30 14:34:35
Done.
|
| + |
| +// Helper to count the number of bytes differing between two pointers. |
| +int CountBytesDiffInPtr(intptr_t num_a, intptr_t num_b); |
|
grt (UTC plus 2)
2014/07/29 19:32:23
uintptr_t
krstnmnlsn
2014/07/30 14:34:35
Done.
|
| + |
| +// Examines the code section of the given module in memory and on disk, looking |
| +// for unexpected differences. |
| +ModuleState VerifyModule(const wchar_t* module_name); |
| + |
| +} // namespace safe_browsing |
| + |
| +#endif // CHROME_BROWSER_SAFE_BROWSING_MODULE_INTEGRITY_VERIFIER_H_ |