Skip to content
  • pennymac's avatar
    [Chrome ELF] New NT registry API. · 84fd669f
    pennymac authored
    This CL is part of a chain of CLs:
    1) "MITIGATION_EXTENSION_POINT_DISABLE support for children" (https://codereview.chromium.org/1835003003)
    2) "MITIGATION_EXTENSION_POINT_DISABLE emergency off finch" (https://codereview.chromium.org/1836523004/)
    -> THIS
    4) "Early browser security support" (https://codereview.chromium.org/1656453002)
    5) "Turn on MITIGATION_EXTENSION_POINT_DISABLE" (https://codereview.chromium.org/1854323002)
    
    Added new chrome_elf_reg utility for a registry API that doesn't touch advapi32 (useful from DllMain).
    Direct calls to ntdll.  Updated Chrome ELF to always use this new registry API.
    
    Adjusted the existing DLL blacklist to use a REG_MULTI_SZ comma-separated list instead of lots of individual reg values.
    
    Small changes to organize file structure and functional components under chrome_elf.  Old common code now sits under "hook_util", "nt_registry", "breakpad", "dll_hash", and "blacklist".
    
    Fairly big changes to the chrome_elf tests (blacklist_test.cc, blacklist_test_main_dll.cc and
    chrome_elf_util_unittest.cc) were needed.  Since ntdll bypasses any registry redirection
    (that tests use to keep the hive safe and isolated), I added in a way for the tests to access
    the redirection path (and pass that information on to the test DLL).  This way the NT reg
    API can work with redirection during tests.
    
    Tests:
    1) chrome_elf_unittests, chrome_elf_util_unittest.cc: ChromeElfUtilTest.NTRegistry is new
    (...but run all tests to exercise the new API being used by blacklist and utils).
    2) unit_tests, chrome_elf_init_unittest_win.cc: ChromeBlacklistTrialTest*
    
    BUG=557798
    CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win10_chromium_x64_rel_ng
    
    Review-Url: https://codereview.chromium.org/1841573002
    Cr-Commit-Position: refs/heads/master@{#405307}
    84fd669f