1// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef SANDBOX_SANDBOX_POC_POCDLL_EXPORTS_H__
6#define SANDBOX_SANDBOX_POC_POCDLL_EXPORTS_H__
7
8#include <windows.h>
9
10#ifdef POCDLL_EXPORTS
11#define POCDLL_API __declspec(dllexport) __cdecl
12#else
13#define POCDLL_API __declspec(dllimport) __cdecl
14#endif
15
16extern "C" {
17// Tries to open several known system path and outputs
18// the result.
19// "log" is the handle of the log file.
20void POCDLL_API TestFileSystem(HANDLE log);
21
22// Tries to find all handles open in the process and prints the name of the
23// resource references by the handle along with the access right.
24// "log" is the handle of the log file.
25void POCDLL_API TestGetHandle(HANDLE log);
26
27// Creates a lot of threads until it cannot create more. The goal of this
28// function is to determine if it's possible to crash the machine when we
29// flood the machine with new threads
30// "log" is the handle of the log file.
31void POCDLL_API TestThreadBombing(HANDLE log);
32
33// Takes all cpu of the machine. For each processor on the machine we assign
34// a thread. This thread will compute a mathematical expression over and over
35// to take all cpu.
36// "log" is the handle of the log file.
37// Note: here we are using the affinity to find out how many processors are on
38// the machine and to force a thread to run only on a given processor.
39void POCDLL_API TestTakeAllCpu(HANDLE log);
40
41// Creates memory in the heap until it fails 5 times in a row and prints the
42// amount of memory created. This function is used to find out if it's possible
43// to take all memory on the machine and crash the system.
44// "log" is the handle of the log file.
45void POCDLL_API TestUseAllMemory(HANDLE log);
46
47// Creates millions of kernel objects. This function is used to find out if it's
48// possible to crash the system if we create too many kernel objects and if we
49// hold too many handles. All those kernel objects are unnamed.
50// "log" is the handle of the log file.
51void POCDLL_API TestCreateObjects(HANDLE log);
52
53// Receives a hwnd and tries to close it. This is the callback for EnumWindows.
54// It will be called for each window(hwnd) on the system.
55// "log" is the handle of the log file.
56// Always returns TRUE to tell the system that we want to continue the
57// enumeration.
58void POCDLL_API TestCloseHWND(HANDLE log);
59
60// Tries to listen on the port 88.
61// "log" is the handle of the log file.
62void POCDLL_API TestNetworkListen(HANDLE log);
63
64// Lists all processes on the system and tries to open them
65// "log" is the handle of the log file.
66void POCDLL_API TestProcesses(HANDLE log);
67
68// Lists all threads on the system and tries to open them
69// "log" is the handle of the log file.
70void POCDLL_API TestThreads(HANDLE log);
71
72// Tries to open some known system registry key and outputs the result.
73// "log" is the handle of the log file.
74void POCDLL_API TestRegistry(HANDLE log);
75
76// Records all keystrokes typed for 15 seconds and then display them.
77// "log" is the handle of the log file.
78void POCDLL_API TestSpyKeys(HANDLE log);
79
80// Tries to read pixels on the monitor and output if the operation
81// failes or succeeded.
82// "log" is the handle of the log file.
83void POCDLL_API TestSpyScreen(HANDLE log);
84
85// Runs all tests except those who are invasive
86void POCDLL_API Run(HANDLE log);
87}
88
89#endif  // SANDBOX_SANDBOX_POC_POCDLL_EXPORTS_H__
90