Skip to content

Commit

Permalink
1. Make sure chrome_elf.dll imports nothing besides kernel32, advapi3…
Browse files Browse the repository at this point in the history
…2, and some msvc libs (DEBUG builds)

2. Add gyp action and test to ensure chrome_elf.dll is always the first entry in chrome.exe's import table.

Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=242834

Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=243048

Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=245197

Review URL: https://codereview.chromium.org/109483003

git-svn-id: http://src.chromium.org/svn/trunk/src/build@245312 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
  • Loading branch information
caitkp@chromium.org committed Jan 16, 2014
1 parent 5aee2b9 commit 6d78c04
Showing 1 changed file with 46 additions and 0 deletions.
46 changes: 46 additions & 0 deletions win/reorder-imports.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#!/usr/bin/env python
# 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.

import glob
import optparse
import os
import shutil
import subprocess
import sys

def reorder_imports(input_dir, output_dir):
"""Run swapimports.exe on the initial chrome.exe, and write to the output
directory. Also copy over any related files that might be needed
(pdbs, manifests etc.).
"""
input_image = '--input-image=%s' % (os.path.join(input_dir, 'chrome.exe'))
output_image = '--output-image=%s' % (os.path.join(output_dir, 'chrome.exe'))

swap_exe = os.path.join(
__file__,
'..\\..\\..\\third_party\\syzygy\\binaries\\exe\\swapimport.exe')
subprocess.call(
[swap_exe, input_image, output_image, '--overwrite', 'chrome_elf.dll'])

for fname in glob.iglob(os.path.join(input_dir, 'chrome.exe.*')):
shutil.copy(fname, os.path.join(output_dir, os.path.basename(fname)))
return 0


def main(argv):
usage = 'reorder_imports.py -i <input_dir> -o <output_dir>'
parser = optparse.OptionParser(usage=usage)
parser.add_option('-i', '--input', help='reorder chrome.exe in DIR',
metavar='DIR')
parser.add_option('-o', '--output', help='write new chrome.exe to DIR',
metavar='DIR')
opts, args = parser.parse_args()

if not opts.input or not opts.output:
parser.error('Please provide and input and output directory')
return reorder_imports(opts.input, opts.output)

if __name__ == "__main__":
sys.exit(main(sys.argv[1:]))

0 comments on commit 6d78c04

Please sign in to comment.