theatrhythm: touchscreen OK
This commit is contained in:
parent
fe7d1269ea
commit
3df21a749e
@ -162,15 +162,18 @@ void createprocess_hook_init() {
|
|||||||
}
|
}
|
||||||
did_init = true;
|
did_init = true;
|
||||||
|
|
||||||
hook_table_apply(
|
createprocess_hook_insert_hook(NULL);
|
||||||
NULL,
|
|
||||||
"kernel32.dll",
|
|
||||||
win32_hooks,
|
|
||||||
_countof(win32_hooks));
|
|
||||||
InitializeCriticalSection(&createproc_lock);
|
InitializeCriticalSection(&createproc_lock);
|
||||||
dprintf("CreateProcess: Init\n");
|
dprintf("CreateProcess: Init\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void createprocess_hook_insert_hook(HMODULE target) {
|
||||||
|
hook_table_apply(
|
||||||
|
target,
|
||||||
|
"kernel32.dll",
|
||||||
|
win32_hooks,
|
||||||
|
_countof(win32_hooks));
|
||||||
|
}
|
||||||
|
|
||||||
static BOOL WINAPI my_CreateProcessA(
|
static BOOL WINAPI my_CreateProcessA(
|
||||||
LPCSTR lpApplicationName,
|
LPCSTR lpApplicationName,
|
||||||
@ -185,6 +188,7 @@ static BOOL WINAPI my_CreateProcessA(
|
|||||||
LPPROCESS_INFORMATION lpProcessInformation
|
LPPROCESS_INFORMATION lpProcessInformation
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
//dprintf("my_CreateProcessA: %s %s\n", lpApplicationName, lpCommandLine);
|
||||||
for (int i = 0; i < process_nsyms_a; i++) {
|
for (int i = 0; i < process_nsyms_a; i++) {
|
||||||
if (strncmp(process_syms_a[i].name, lpCommandLine, strlen(process_syms_a[i].name))) {
|
if (strncmp(process_syms_a[i].name, lpCommandLine, strlen(process_syms_a[i].name))) {
|
||||||
continue;
|
continue;
|
||||||
@ -242,6 +246,38 @@ BOOL my_CreateProcessW(
|
|||||||
LPSTARTUPINFOW lpStartupInfo,
|
LPSTARTUPINFOW lpStartupInfo,
|
||||||
LPPROCESS_INFORMATION lpProcessInformation)
|
LPPROCESS_INFORMATION lpProcessInformation)
|
||||||
{
|
{
|
||||||
|
//dprintf("my_CreateProcessW: %S %S\n", lpApplicationName, lpCommandLine);
|
||||||
|
for (int i = 0; i < process_nsyms_w; i++) {
|
||||||
|
if (wcsncmp(process_syms_w[i].name, lpCommandLine, wcslen(process_syms_w[i].name))) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
dprintf("CreateProcess: Hooking child process %S %S\n", lpApplicationName, lpCommandLine);
|
||||||
|
wchar_t new_cmd[MAX_PATH] = {0};
|
||||||
|
wcscat_s(new_cmd, MAX_PATH, process_syms_w[i].head);
|
||||||
|
|
||||||
|
if (!process_syms_w[i].replace_all) {
|
||||||
|
wcscat_s(new_cmd, MAX_PATH, lpCommandLine);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process_syms_w[i].tail != NULL) {
|
||||||
|
wcscat_s(new_cmd, MAX_PATH, process_syms_w[i].tail);
|
||||||
|
}
|
||||||
|
|
||||||
|
dprintf("CreateProcess: Replaced CreateProcessW %S\n", new_cmd);
|
||||||
|
return next_CreateProcessW(
|
||||||
|
lpApplicationName,
|
||||||
|
new_cmd,
|
||||||
|
lpProcessAttributes,
|
||||||
|
lpThreadAttributes,
|
||||||
|
bInheritHandles,
|
||||||
|
dwCreationFlags,
|
||||||
|
lpEnvironment,
|
||||||
|
lpCurrentDirectory,
|
||||||
|
lpStartupInfo,
|
||||||
|
lpProcessInformation
|
||||||
|
);
|
||||||
|
}
|
||||||
return next_CreateProcessW(
|
return next_CreateProcessW(
|
||||||
lpApplicationName,
|
lpApplicationName,
|
||||||
lpCommandLine,
|
lpCommandLine,
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
void createprocess_hook_insert_hook(HMODULE target);
|
||||||
HRESULT createprocess_push_hook_w(const wchar_t *name, const wchar_t *head, const wchar_t *tail, bool replace_all);
|
HRESULT createprocess_push_hook_w(const wchar_t *name, const wchar_t *head, const wchar_t *tail, bool replace_all);
|
||||||
HRESULT createprocess_push_hook_a(const char *name, const char *head, const char *tail, bool replace_all);
|
HRESULT createprocess_push_hook_a(const char *name, const char *head, const char *tail, bool replace_all);
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ PCCERT_CONTEXT WINAPI hook_CertFindCertificateInStore(
|
|||||||
wcscat_s(cert_path, _countof(cert_path), L"/");
|
wcscat_s(cert_path, _countof(cert_path), L"/");
|
||||||
wcscat_s(cert_path, _countof(cert_path), (wchar_t *)pvFindPara); // use the search string as a name
|
wcscat_s(cert_path, _countof(cert_path), (wchar_t *)pvFindPara); // use the search string as a name
|
||||||
|
|
||||||
dprintf("Cert: Look for override cert at %S", cert_path);
|
dprintf("Cert: Look for override cert at %S\n", cert_path);
|
||||||
|
|
||||||
HANDLE f = CreateFileW((LPCWSTR)pvFindPara, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
HANDLE f = CreateFileW((LPCWSTR)pvFindPara, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
|
|
||||||
|
@ -51,12 +51,19 @@ static DWORD CALLBACK siva_pre_startup(void)
|
|||||||
if (FAILED(hr)) {
|
if (FAILED(hr)) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
hr = siva_dll_init(&siva_hook_cfg.dll, siva_hook_mod);
|
hr = siva_dll_init(&siva_hook_cfg.dll, siva_hook_mod);
|
||||||
|
|
||||||
if (FAILED(hr)) {
|
if (FAILED(hr)) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hr = touch_hook_init(&siva_hook_cfg.touch);
|
||||||
|
|
||||||
|
if (FAILED(hr)) {
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
|
||||||
unity_hook_init();
|
unity_hook_init();
|
||||||
/* Initialize debug helpers */
|
/* Initialize debug helpers */
|
||||||
|
|
||||||
@ -76,8 +83,11 @@ BOOL WINAPI DllMain(HMODULE mod, DWORD cause, void *ctx)
|
|||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
if (cause != DLL_PROCESS_ATTACH) {
|
if (cause == DLL_THREAD_ATTACH && sizeof(uint64_t) == 4) {
|
||||||
dprintf("Connected\n");
|
dprintf("Connected\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cause != DLL_PROCESS_ATTACH) {
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,5 +25,7 @@ shared_library(
|
|||||||
'siva-dll.h',
|
'siva-dll.h',
|
||||||
'unity.c',
|
'unity.c',
|
||||||
'unity.h',
|
'unity.h',
|
||||||
|
'touch.c',
|
||||||
|
'touch.h',
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -4,11 +4,14 @@
|
|||||||
#include "sivahook/touch.h"
|
#include "sivahook/touch.h"
|
||||||
#include "hooklib/createprocess.h"
|
#include "hooklib/createprocess.h"
|
||||||
|
|
||||||
|
#include "util/dprintf.h"
|
||||||
|
|
||||||
HRESULT touch_hook_init(const struct touch_config *cfg)
|
HRESULT touch_hook_init(const struct touch_config *cfg)
|
||||||
{
|
{
|
||||||
if (!cfg->enable) {
|
if (!cfg->enable) {
|
||||||
return S_FALSE;
|
return S_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return createprocess_push_hook_a("NanoTS_PTool_win8.exe", "inject.exe -d -k sivahook.dll ", NULL, false);
|
dprintf("Touch: hook init\n");
|
||||||
|
return createprocess_push_hook_w(L"\"NanoTS_PTool_win8.exe\"", L"inject_32.exe -d -k sivahook_32.dll ", NULL, false);
|
||||||
}
|
}
|
@ -8,6 +8,7 @@
|
|||||||
#include "hooklib/dll.h"
|
#include "hooklib/dll.h"
|
||||||
#include "hooklib/path.h"
|
#include "hooklib/path.h"
|
||||||
#include "hooklib/serial.h"
|
#include "hooklib/serial.h"
|
||||||
|
#include "hooklib/createprocess.h"
|
||||||
#include "hooklib/reg.h"
|
#include "hooklib/reg.h"
|
||||||
#include "hook/procaddr.h"
|
#include "hook/procaddr.h"
|
||||||
|
|
||||||
@ -107,6 +108,7 @@ static HMODULE WINAPI my_LoadLibraryW(const wchar_t *name)
|
|||||||
reg_hook_insert_hooks(result);
|
reg_hook_insert_hooks(result);
|
||||||
proc_addr_insert_hooks(result);
|
proc_addr_insert_hooks(result);
|
||||||
cert_hook_insert_hooks(result);
|
cert_hook_insert_hooks(result);
|
||||||
|
createprocess_hook_insert_hook(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < dep_hooks_len; i++) {
|
for (size_t i = 0; i < dep_hooks_len; i++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user