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

Unified Diff: sandbox/win/wow_helper/wow_helper.cc

Issue 1851213002: Remove sandbox on Windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix nacl compile issues Created 4 years, 9 months 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 | « sandbox/win/wow_helper/target_code.cc ('k') | sandbox/win/wow_helper/wow_helper.exe » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sandbox/win/wow_helper/wow_helper.cc
diff --git a/sandbox/win/wow_helper/wow_helper.cc b/sandbox/win/wow_helper/wow_helper.cc
deleted file mode 100644
index af76cbc1358fc2e612df3e82a13b0aaf7b53e04b..0000000000000000000000000000000000000000
--- a/sandbox/win/wow_helper/wow_helper.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright (c) 2006-2008 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.
-
-// Wow_helper.exe is a simple Win32 64-bit executable designed to help to
-// sandbox a 32 bit application running on a 64 bit OS. The basic idea is to
-// perform a 64 bit interception of the target process and notify the 32-bit
-// broker process whenever a DLL is being loaded. This allows the broker to
-// setup the interceptions (32-bit) properly on the target.
-
-#include <windows.h>
-#include <stddef.h>
-
-#include <string>
-
-#include "sandbox/win/wow_helper/service64_resolver.h"
-#include "sandbox/win/wow_helper/target_code.h"
-
-namespace sandbox {
-
-// Performs the interception of NtMapViewOfSection on the 64-bit version of
-// ntdll.dll. 'thunk' is the buffer on the address space of process 'child',
-// that will be used to store the information about the patch.
-int PatchNtdll(HANDLE child, void* thunk, size_t thunk_bytes) {
- wchar_t* ntdll_name = L"ntdll.dll";
- HMODULE ntdll_base = ::GetModuleHandle(ntdll_name);
- if (!ntdll_base)
- return 100;
-
- Service64ResolverThunk resolver(child);
- size_t used = resolver.GetThunkSize();
- char* code = reinterpret_cast<char*>(thunk) + used;
- NTSTATUS ret = resolver.Setup(ntdll_base, NULL, "NtMapViewOfSection", NULL,
- code, thunk, thunk_bytes, NULL);
- if (!NT_SUCCESS(ret))
- return 101;
-
- size_t size = reinterpret_cast<char*>(&TargetEnd) -
- reinterpret_cast<char*>(&TargetNtMapViewOfSection);
-
- if (size + used > thunk_bytes)
- return 102;
-
- SIZE_T written;
- if (!::WriteProcessMemory(child, code, &TargetNtMapViewOfSection, size,
- &written))
- return 103;
-
- if (size != written)
- return 104;
-
- return 0;
-}
-
-} // namespace sandbox
-
-// We must receive two arguments: the process id of the target to intercept and
-// the address of a page of memory on that process that will be used for the
-// interception. We receive the address because the broker will cleanup the
-// patch when the work is performed.
-//
-// It should be noted that we don't wait until the real work is done; this
-// program quits as soon as the 64-bit interception is performed.
-int wWinMain(HINSTANCE, HINSTANCE, wchar_t* command_line, int) {
- static_assert(sizeof(void*) > sizeof(DWORD), "unsupported 32 bits");
- if (!command_line)
- return 1;
-
- wchar_t* next;
- DWORD process_id = wcstoul(command_line, &next, 0);
- if (!process_id)
- return 2;
-
- DWORD access = PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE;
- HANDLE child = ::OpenProcess(access, FALSE, process_id);
- if (!child)
- return 3;
-
- DWORD buffer = wcstoul(next, NULL, 0);
- if (!buffer)
- return 4;
-
- void* thunk = reinterpret_cast<void*>(static_cast<ULONG_PTR>(buffer));
-
- const size_t kPageSize = 4096;
- return sandbox::PatchNtdll(child, thunk, kPageSize);
-}
« no previous file with comments | « sandbox/win/wow_helper/target_code.cc ('k') | sandbox/win/wow_helper/wow_helper.exe » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698