418 lines
9.8 KiB
C
418 lines
9.8 KiB
C
/*
|
|
* Copyright 2004-2020 Sandboxie Holdings, LLC
|
|
* Copyright 2020 David Xanatos, xanasoft.com
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Sandboxie Application Programming Interface
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
#ifndef _MY_SBIEAPI_H
|
|
#define _MY_SBIEAPI_H
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
#ifndef SBIEAPI_EXPORT
|
|
#define SBIEAPI_EXPORT __declspec(dllexport)
|
|
#endif
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Sandboxie API Defines
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
#include "core/drv/api_flags.h"
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
// Sandboxie API Calls
|
|
//---------------------------------------------------------------------------
|
|
|
|
SBIEAPI_EXPORT
|
|
long SbieApi_Ioctl(ULONG64* parms);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_Call(ULONG api_code, LONG arg_num, ...);
|
|
|
|
SBIEAPI_EXPORT LONG SbieApi_GetVersion(
|
|
WCHAR *version_string); // WCHAR [16]
|
|
|
|
SBIEAPI_EXPORT LONG SbieApi_GetVersionEx(
|
|
WCHAR* version_string, // WCHAR [16]
|
|
ULONG* abi_version);
|
|
|
|
/*SBIEAPI_EXPORT
|
|
LONG SbieApi_GetWork(
|
|
ULONG SessionId,
|
|
void *Buffer,
|
|
ULONG *Length);*/
|
|
|
|
SBIEAPI_EXPORT
|
|
ULONG SbieApi_GetMessage(
|
|
ULONG* MessageNum,
|
|
ULONG SessionId,
|
|
ULONG *MessageId,
|
|
ULONG *Pid,
|
|
wchar_t *Buffer,
|
|
ULONG Length);
|
|
|
|
SBIEAPI_EXPORT LONG SbieApi_Log(
|
|
ULONG msgid, const WCHAR *format, ...);
|
|
|
|
SBIEAPI_EXPORT LONG SbieApi_LogEx(
|
|
ULONG session_id, ULONG msgid, const WCHAR *format, ...);
|
|
|
|
SBIEAPI_EXPORT LONG SbieApi_vLogEx(
|
|
ULONG session_id, ULONG msgid, const WCHAR *format, va_list va_args);
|
|
|
|
SBIEAPI_EXPORT LONG SbieApi_LogMsgEx(
|
|
ULONG session_id, ULONG msgid, const WCHAR* msg_data, USHORT msg_len);
|
|
|
|
SBIEAPI_EXPORT LONG SbieApi_LogMsgExt(
|
|
ULONG session_id, ULONG msgid, const WCHAR** strings);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_GetHomePath(
|
|
WCHAR *NtPath, ULONG NtPathMaxLen,
|
|
WCHAR *DosPath, ULONG DosPathMaxLen);
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_QueryProcess(
|
|
HANDLE ProcessId,
|
|
WCHAR *out_box_name_wchar34, // WCHAR [34]
|
|
WCHAR *out_image_name_wchar96, // WCHAR [96]
|
|
WCHAR *out_sid_wchar96, // WCHAR [96]
|
|
ULONG *out_session_id); // ULONG
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_QueryProcessEx(
|
|
HANDLE ProcessId,
|
|
ULONG image_name_len_in_wchars,
|
|
WCHAR *out_box_name_wchar34, // WCHAR [34]
|
|
WCHAR *out_image_name_wcharXXX, // WCHAR [?]
|
|
WCHAR *out_sid_wchar96, // WCHAR [96]
|
|
ULONG *out_session_id); // ULONG
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_QueryProcessEx2(
|
|
HANDLE ProcessId,
|
|
ULONG image_name_len_in_wchars,
|
|
WCHAR *out_box_name_wchar34, // WCHAR [34]
|
|
WCHAR *out_image_name_wcharXXX, // WCHAR [?]
|
|
WCHAR *out_sid_wchar96, // WCHAR [96]
|
|
ULONG *out_session_id, // ULONG
|
|
ULONG64 *out_create_time); // ULONG64
|
|
|
|
SBIEAPI_EXPORT
|
|
ULONG64 SbieApi_QueryProcessInfo(
|
|
HANDLE ProcessId,
|
|
ULONG info_type);
|
|
|
|
SBIEAPI_EXPORT
|
|
ULONG64 SbieApi_QueryProcessInfoEx(
|
|
HANDLE ProcessId,
|
|
ULONG info_type,
|
|
ULONG64 ext_data);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_QueryProcessInfoStr(
|
|
HANDLE ProcessId,
|
|
ULONG info_type,
|
|
WCHAR *out_str,
|
|
ULONG *inout_str_len);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_QueryBoxPath(
|
|
const WCHAR *box_name, // WCHAR [34]
|
|
WCHAR *out_file_path,
|
|
WCHAR *out_key_path,
|
|
WCHAR *out_ipc_path,
|
|
ULONG *inout_file_path_len,
|
|
ULONG *inout_key_path_len,
|
|
ULONG *inout_ipc_path_len);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_QueryProcessPath(
|
|
HANDLE ProcessId,
|
|
WCHAR *out_file_path,
|
|
WCHAR *out_key_path,
|
|
WCHAR *out_ipc_path,
|
|
ULONG *inout_file_path_len,
|
|
ULONG *inout_key_path_len,
|
|
ULONG *inout_ipc_path_len);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_QueryPathList(
|
|
ULONG path_code,
|
|
ULONG *path_len,
|
|
WCHAR *path_str,
|
|
HANDLE process_id,
|
|
BOOLEAN prepend_level);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_EnumProcessEx(
|
|
const WCHAR* box_name, // WCHAR [34]
|
|
BOOLEAN all_sessions,
|
|
ULONG which_session, // -1 for current session
|
|
ULONG* boxed_pids, // ULONG [512]
|
|
ULONG* boxed_count);
|
|
|
|
#define SbieApi_EnumProcess(box_name,boxed_pids) \
|
|
SbieApi_EnumProcessEx(box_name,FALSE,-1,boxed_pids, NULL)
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_SessionLeader(
|
|
HANDLE TokenHandle,
|
|
HANDLE *ProcessId);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_DisableForceProcess(
|
|
ULONG *NewState,
|
|
ULONG *OldState);
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_MonitorControl(
|
|
ULONG *NewState,
|
|
ULONG *OldState);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_MonitorPut(
|
|
ULONG Type,
|
|
const WCHAR *Name);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_MonitorPut2(
|
|
ULONG Type,
|
|
const WCHAR *Name,
|
|
BOOLEAN bCheckObjectExists);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_MonitorPutMsg(
|
|
ULONG Type,
|
|
const WCHAR *Message);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_MonitorPut2Ex(
|
|
ULONG Type,
|
|
ULONG NameLen,
|
|
const WCHAR *Name,
|
|
BOOLEAN bCheckObjectExists,
|
|
BOOLEAN bIsMessage);
|
|
|
|
//SBIEAPI_EXPORT
|
|
//LONG SbieApi_MonitorGet(
|
|
// ULONG *Type,
|
|
// WCHAR *Name); // WCHAR [256]
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_MonitorGetEx(
|
|
ULONG *Type,
|
|
ULONG *Pid,
|
|
ULONG *Tid,
|
|
WCHAR *Name); // WCHAR [256]
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_HookTramp(void *Source, void *Trampoline);
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
//SBIEAPI_EXPORT
|
|
LONG SbieApi_RenameFile(
|
|
HANDLE FileHandle,
|
|
const WCHAR *TargetDir, const WCHAR *TargetName,
|
|
BOOLEAN ReplaceIfExists);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_GetFileName(
|
|
HANDLE FileHandle,
|
|
WCHAR *NameBuf,
|
|
ULONG *NameLen,
|
|
ULONG *ObjType);
|
|
|
|
//SBIEAPI_EXPORT
|
|
LONG SbieApi_OpenFile(
|
|
HANDLE *FileHandle,
|
|
const WCHAR *Path);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_CheckInternetAccess(
|
|
HANDLE ProcessId,
|
|
const WCHAR *DeviceName32,
|
|
BOOLEAN IssueMessage);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_GetBlockedDll(
|
|
WCHAR *DllNameBuf,
|
|
ULONG DllNameLen);
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
//SBIEAPI_EXPORT
|
|
LONG SbieApi_OpenKey(
|
|
HANDLE *KeyHandle,
|
|
const WCHAR *Path);
|
|
|
|
//SBIEAPI_EXPORT
|
|
LONG SbieApi_SetLowLabelKey(
|
|
const WCHAR *Path);
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
//SBIEAPI_EXPORT
|
|
LONG SbieApi_CreateDirOrLink(
|
|
const WCHAR *ObjectName, const WCHAR *TargetName);
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
//SBIEAPI_EXPORT
|
|
LONG SbieApi_DuplicateObject(
|
|
HANDLE *TargetHandle,
|
|
HANDLE OtherProcessHandle,
|
|
HANDLE SourceHandle,
|
|
ACCESS_MASK DesiredAccess,
|
|
ULONG Options);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_OpenProcess(
|
|
HANDLE *ProcessHandle,
|
|
HANDLE ProcessId);
|
|
|
|
//SBIEAPI_EXPORT
|
|
LONG SbieApi_OpenDeviceMap(
|
|
HANDLE *DirectoryHandle);
|
|
|
|
//SBIEAPI_EXPORT
|
|
LONG SbieApi_QuerySymbolicLink(
|
|
WCHAR *NameBuf,
|
|
ULONG NameLen);
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_ReloadConf(ULONG session_id, ULONG flags);
|
|
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_QueryConf(
|
|
const WCHAR *section_name, // WCHAR [66]
|
|
const WCHAR *setting_name, // WCHAR [66]
|
|
ULONG setting_index,
|
|
WCHAR *out_buffer,
|
|
ULONG buffer_len);
|
|
|
|
#define SbieApi_QueryConfAsIs(bx, st, idx, buf, buflen) \
|
|
SbieApi_QueryConf((bx), (st), ((idx) | CONF_GET_NO_EXPAND), buf, buflen)
|
|
|
|
SBIEAPI_EXPORT
|
|
BOOLEAN SbieApi_QueryConfBool(
|
|
const WCHAR *section_name, // WCHAR [66]
|
|
const WCHAR *setting_name, // WCHAR [66]
|
|
BOOLEAN def);
|
|
|
|
SBIEAPI_EXPORT
|
|
ULONG SbieApi_QueryConfNumber(
|
|
const WCHAR *section_name, // WCHAR [66]
|
|
const WCHAR *setting_name, // WCHAR [66]
|
|
ULONG def);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_EnumBoxes(
|
|
LONG index, // initialize to -1
|
|
WCHAR *box_name); // WCHAR [34]
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_EnumBoxesEx(
|
|
LONG index, // initialize to -1
|
|
WCHAR *box_name, // WCHAR [34]
|
|
BOOLEAN ignore_hidden);
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_IsBoxEnabled(
|
|
const WCHAR *box_name); // WCHAR [34]
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_SetUserName(
|
|
const WCHAR *SidString,
|
|
const WCHAR *UserName);
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_GetUnmountHive(
|
|
WCHAR *path); // WCHAR [256]
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
SBIEAPI_EXPORT
|
|
LONG SbieApi_ProcessExemptionControl(
|
|
HANDLE process_id,
|
|
ULONG action_id,
|
|
ULONG *NewState,
|
|
ULONG *OldState);
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
SBIEAPI_EXPORT
|
|
void* SbieDll_GetSysFunction(
|
|
const WCHAR* name);
|
|
|
|
SBIEAPI_EXPORT
|
|
BOOL SbieDll_RunStartExe(
|
|
const WCHAR* cmd,
|
|
const wchar_t* boxname);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _MY_SBIEAPI_H */
|