From fd2ad4424c126d9bede960d524fd46cafdd74fb2 Mon Sep 17 00:00:00 2001 From: Kevin Trocolli Date: Wed, 21 Feb 2024 03:43:44 -0500 Subject: [PATCH] update cert hooks --- Package.mk | 12 ++++-------- hooklib/path.c | 7 +++++++ idmac/idmac.c | 18 +++++++++++++----- idmac/jvs.c | 5 +++++ initpki | 28 ++++++++++++++++++++++++++++ pki/PREMIUM.cer | 18 ++++++++++++++++++ pki/PREMIUM.csr | 16 ++++++++++++++++ pki/PREMIUM.key | 28 ++++++++++++++++++++++++++++ pki/billing.pub | 0 pki/ca.cer | 21 +++++++++++++++++++++ pki/ca.crt | 0 pki/ca.key | 28 ++++++++++++++++++++++++++++ pki/cert.p12 | Bin 0 -> 3202 bytes pki/nesys.cer | 18 ++++++++++++++++++ pki/nesys.csr | 16 ++++++++++++++++ pki/nesys.key | 28 ++++++++++++++++++++++++++++ pki/nesys.srl | 1 + pki/server.cer | 18 ++++++++++++++++++ pki/server.csr | 16 ++++++++++++++++ pki/server.key | 28 ++++++++++++++++++++++++++++ platform/cert.c | 27 +++++++++++++++++++++++++-- platform/config.c | 2 +- platform/syscfg.c | 2 +- sivahook/dllmain.c | 4 ++-- subprojects/capnhook.wrap | 2 +- 25 files changed, 323 insertions(+), 20 deletions(-) create mode 100644 initpki create mode 100644 pki/PREMIUM.cer create mode 100644 pki/PREMIUM.csr create mode 100644 pki/PREMIUM.key delete mode 100644 pki/billing.pub create mode 100644 pki/ca.cer delete mode 100644 pki/ca.crt create mode 100644 pki/ca.key create mode 100644 pki/cert.p12 create mode 100644 pki/nesys.cer create mode 100644 pki/nesys.csr create mode 100644 pki/nesys.key create mode 100644 pki/nesys.srl create mode 100644 pki/server.cer create mode 100644 pki/server.csr create mode 100644 pki/server.key diff --git a/Package.mk b/Package.mk index 4f89543..bfc92b8 100644 --- a/Package.mk +++ b/Package.mk @@ -1,7 +1,6 @@ $(BUILD_DIR_ZIP)/siva.zip: $(V)echo ... $@ $(V)mkdir -p $(BUILD_DIR_ZIP)/siva - $(V)mkdir -p $(BUILD_DIR_ZIP)/siva/DEVICE $(V)cp $(BUILD_DIR_32)/subprojects/capnhook/inject/inject.exe \ $(BUILD_DIR_32)/sivahook/sivahook.dll \ $(BUILD_DIR_ZIP)/siva @@ -17,24 +16,21 @@ $(BUILD_DIR_ZIP)/siva.zip: $(BUILD_DIR_ZIP)/siva $(V)mv $(BUILD_DIR_ZIP)/siva/iDmacDrv.dll \ $(BUILD_DIR_ZIP)/siva/iDmacDrv64.dll - $(V)cp pki/billing.pub \ - pki/ca.crt \ - $(BUILD_DIR_ZIP)/siva/DEVICE + $(V)cp pki/cert.p12 \ + $(BUILD_DIR_ZIP)/siva $(V)strip $(BUILD_DIR_ZIP)/siva/*.{exe,dll} $(V)cd $(BUILD_DIR_ZIP)/siva ; zip -r ../siva.zip * $(BUILD_DIR_ZIP)/ll3.zip: $(V)echo ... $@ $(V)mkdir -p $(BUILD_DIR_ZIP)/ll3 - $(V)mkdir -p $(BUILD_DIR_ZIP)/ll3/DEVICE $(V)cp $(BUILD_DIR_64)/subprojects/capnhook/inject/inject.exe \ $(BUILD_DIR_64)/ll3hook/ll3hook.dll \ $(DIST_DIR)/ll3/taitools.ini \ $(DIST_DIR)/ll3/start.bat \ $(BUILD_DIR_ZIP)/ll3 - $(V)cp pki/billing.pub \ - pki/ca.crt \ - $(BUILD_DIR_ZIP)/ll3/DEVICE + $(V)cp pki/cert.p12 \ + $(BUILD_DIR_ZIP)/ll3 $(V)strip $(BUILD_DIR_ZIP)/ll3/*.{exe,dll} $(V)cd $(BUILD_DIR_ZIP)/ll3 ; zip -r ../ll3.zip * diff --git a/hooklib/path.c b/hooklib/path.c index eed458a..46b2c54 100644 --- a/hooklib/path.c +++ b/hooklib/path.c @@ -10,6 +10,8 @@ #include "hook/table.h" #include "hooklib/path.h" +#include "hook/procaddr.h" +#include "util/dprintf.h" /* Helpers */ @@ -347,6 +349,11 @@ static void path_hook_init(void) void path_hook_insert_hooks(HMODULE target) { + proc_addr_table_push( + target, + "kernel32.dll", + path_hook_syms, + _countof(path_hook_syms)); hook_table_apply( target, "kernel32.dll", diff --git a/idmac/idmac.c b/idmac/idmac.c index 2e1084f..2ed28e1 100644 --- a/idmac/idmac.c +++ b/idmac/idmac.c @@ -27,8 +27,8 @@ DWORD hook_iDmacDrvOpen(int dev_num, DWORD *dev_handle, DWORD *other_ptr); DWORD hook_iDmacDrvClose(HANDLE a1, DWORD *lp); int hook_iDmacDrvDmaRead(HANDLE a1, LPVOID lp, UINT_PTR ucb, unsigned int *a4); int hook_iDmacDrvDmaWrite(HANDLE a1, void *lp, UINT_PTR ucb, unsigned int *a4); -int hook_iDmacDrvRegisterRead(HANDLE a1, DWORD BytesReturned, LPVOID lp, unsigned int *a4); -int hook_iDmacDrvRegisterWrite(HANDLE a1, DWORD BytesReturned, int a3, DWORD *lp); +int hook_iDmacDrvRegisterRead(HANDLE a1, DWORD register_id, DWORD* lp, unsigned int *a4); +int hook_iDmacDrvRegisterWrite(HANDLE a1, DWORD register_id, int a3, DWORD *lp); int hook_iDmacDrvRegisterBufferRead(HANDLE a1, DWORD BytesReturned, LPVOID lp, UINT_PTR ucb, DWORD *a5); int hook_iDmacDrvRegisterBufferWrite(HANDLE a1, DWORD BytesReturned, void *lp, UINT_PTR ucb, DWORD *a5); int hook_iDmacDrvMemoryRead(HANDLE a1, DWORD BytesReturned, LPVOID lp, DWORD *a4); @@ -186,14 +186,22 @@ int hook_iDmacDrvDmaWrite(HANDLE a1, void *lp, UINT_PTR ucb, unsigned int *a4) return 0; } -int hook_iDmacDrvRegisterRead(HANDLE a1, DWORD BytesReturned, LPVOID lp, unsigned int *a4) +int hook_iDmacDrvRegisterRead(HANDLE a1, DWORD register_id, DWORD* lp, unsigned int *a4) { //dprintf("hook_iDmacDrvRegisterRead: This code should not run!\n"); - //memset(lp, 0, 0x14); + if (register_id == 0x4140) { // get coin slot 1 + *lp = 0; + } + if (register_id == 0x4144) { // get coin slot 2 + *lp = 0; + } + if (register_id == 0x4120 && (GetAsyncKeyState(VK_DELETE) & 0x8000)) { // get keys + *lp = 0x40; + } return 0; } -int hook_iDmacDrvRegisterWrite(HANDLE a1, DWORD BytesReturned, int a3, DWORD *lp) +int hook_iDmacDrvRegisterWrite(HANDLE a1, DWORD register_id, int a3, DWORD *lp) { //dprintf("hook_iDmacDrvRegisterWrite: This code should not run!\n"); return 0; diff --git a/idmac/jvs.c b/idmac/jvs.c index d76fabb..4236c28 100644 --- a/idmac/jvs.c +++ b/idmac/jvs.c @@ -102,6 +102,11 @@ static HRESULT jvs_handle_irp_locked(struct irp *irp) hr = uart_handle_irp(&jvs_uart, irp); + if (irp->ioctl == IOCTL_SERIAL_GET_MODEMSTATUS) { + irp->modem_state = MS_CTS_ON; + return S_OK; + } + if (FAILED(hr) || irp->op != IRP_OP_WRITE) { return hr; } diff --git a/initpki b/initpki new file mode 100644 index 0000000..683ea40 --- /dev/null +++ b/initpki @@ -0,0 +1,28 @@ +#!/bin/bash + +mkdir -p pki + +# Generate Root Certificate and Key +openssl req -newkey rsa:2048 -nodes -keyout pki/ca.key -x509 -days 3650 -out pki/ca.cer -subj "/C=JP/ST=A/L=A/CN=Taito Arcade Machine CA" +# -addext "subjectAltName = DNS:cert.nesys.jp,DNS:cert3.nesys.jp,DNS:data.nesys.jp,DNS:proxy.nesys.jp,DNS:nesys.taito.co.jp,DNS:fjm170920zero.nesica.net" + +# Generate Nesys CSR and key +openssl req -newkey rsa:2048 -nodes -keyout pki/nesys.key -out pki/nesys.csr -subj "/C=JP/ST=A/L=A/CN=nesys" +# -addext "subjectAltName = DNS:cert.nesys.jp,DNS:cert3.nesys.jp,DNS:data.nesys.jp,DNS:proxy.nesys.jp,DNS:nesys.taito.co.jp,DNS:fjm170920zero.nesica.net" -days 3650 + +# Generate Nesys cert +openssl x509 -req -sha256 -days 3650 -in pki/nesys.csr -CA pki/ca.cer -CAkey pki/ca.key -out pki/nesys.cer -set_serial 0 + +# Generate client CSR and key +openssl req -newkey rsa:2048 -nodes -keyout pki/PREMIUM.key -out pki/PREMIUM.csr -subj "/C=JP/ST=A/L=A/CN=PREMIUM" +#-addext "subjectAltName = DNS:cert.nesys.jp,DNS:cert3.nesys.jp,DNS:data.nesys.jp,DNS:proxy.nesys.jp,DNS:nesys.taito.co.jp,DNS:fjm170920zero.nesica.net" + +# Generate client cert +openssl x509 -req -sha256 -days 3650 -in pki/PREMIUM.csr -CA pki/nesys.cer -CAkey pki/nesys.key -out pki/PREMIUM.cer -set_serial 0 + +# Generate server cert and key +openssl req -newkey rsa:2048 -nodes -keyout pki/server.key -out pki/server.csr -subj "/C=JP/ST=A/L=A/CN=*.nesys.jp" +openssl x509 -req -sha256 -days 3650 -in pki/server.csr -CA pki/nesys.cer -CAkey pki/nesys.key -out pki/server.cer -set_serial 0 + +# Pack the nesys CA and key into a p12 +openssl pkcs12 -export -in pki/PREMIUM.cer -inkey pki/PREMIUM.key -certfile pki/nesys.cer -name "Nesica" -out pki/cert.p12 \ No newline at end of file diff --git a/pki/PREMIUM.cer b/pki/PREMIUM.cer new file mode 100644 index 0000000..ec60d95 --- /dev/null +++ b/pki/PREMIUM.cer @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE----- +MIIC4DCCAcgCAQAwDQYJKoZIhvcNAQELBQAwNTELMAkGA1UEBhMCSlAxCjAIBgNV +BAgMAUExCjAIBgNVBAcMAUExDjAMBgNVBAMMBW5lc3lzMB4XDTI0MDIyMTAwNDcw +N1oXDTM0MDIxODAwNDcwN1owNzELMAkGA1UEBhMCSlAxCjAIBgNVBAgMAUExCjAI +BgNVBAcMAUExEDAOBgNVBAMMB1BSRU1JVU0wggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQC8r+G6iwuoHnz1FaBMJKDgV7ZnITlzmlN/3dFI+pvlpWa9ttdG +o5/teD/55IKIVlbwGd4pIzKy6HHEejWP3dJRmaPAg14hD397r2KKdVebBEPH/DtS +hlPVHtdLNFHoqBQXxutBtSL7j4AukTcxx/H0aIQ+9T342IFhJ//VRUN8rFjjyjMC +rSxHL4VPSYKqKFtTJAY4vfHSNRKBVNQJKJXA7DVJFnQTvALpSK3vTA7qGqKUx7Vl +7g3lHyoTKUfKzCNo8ARZsJspmlmFOKdR2vIh/Z/tzI/Ugp3nvSjbKndM7EK3u9IB +I83GIM+ouf9vBY0Zgr/uZjscURWlkXDE0ifvAgMBAAEwDQYJKoZIhvcNAQELBQAD +ggEBADdY4wDumvnbpdjUI66fWKeLtgZV7W3KdzryxstnYkHyffQ1fNHJlP7C3Y60 +sIF7ggweuRDdEq6ADgdzWQ1Qd/ngYQgNqBgGOmrPKQajFnf3AjeJvQbiW/AmkX7c +o3GoqXV62caD5JHqV/jS8qPmmBHvymVrT8AWecRU/d/k0e+bamdenMAqPON7A+NN +QHIeKC+zaE/rrauODAND2LfiVjLCJ9cBIm/8wIrSP8bc/+SuFI5chRm4W7b2E6iz +Yll1Jx6eKQxUQIjX/gNbDIHCbKVnm9HLRBJwCs3DfcME2if6SMVgWRMFJDKBgy+Y +EXE5ZLdXTjg2hg9/uQIaRA+73Dw= +-----END CERTIFICATE----- diff --git a/pki/PREMIUM.csr b/pki/PREMIUM.csr new file mode 100644 index 0000000..e9dade0 --- /dev/null +++ b/pki/PREMIUM.csr @@ -0,0 +1,16 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIICfDCCAWQCAQAwNzELMAkGA1UEBhMCSlAxCjAIBgNVBAgMAUExCjAIBgNVBAcM +AUExEDAOBgNVBAMMB1BSRU1JVU0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQC8r+G6iwuoHnz1FaBMJKDgV7ZnITlzmlN/3dFI+pvlpWa9ttdGo5/teD/5 +5IKIVlbwGd4pIzKy6HHEejWP3dJRmaPAg14hD397r2KKdVebBEPH/DtShlPVHtdL +NFHoqBQXxutBtSL7j4AukTcxx/H0aIQ+9T342IFhJ//VRUN8rFjjyjMCrSxHL4VP +SYKqKFtTJAY4vfHSNRKBVNQJKJXA7DVJFnQTvALpSK3vTA7qGqKUx7Vl7g3lHyoT +KUfKzCNo8ARZsJspmlmFOKdR2vIh/Z/tzI/Ugp3nvSjbKndM7EK3u9IBI83GIM+o +uf9vBY0Zgr/uZjscURWlkXDE0ifvAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEA +EmY4+uARSH5nPSHBBCRnwtGLs/0sU/dZDl6lC4aUz36aL+qPyQMuOhZ/P2muvb0r +9+IvqXhfvh7VpwNsJYWTj3K3fD6tCL789MDbp5gJcflTSqFxrFwV4rjibIa5fpBk +q6NCT7uQOJdEZwPJohaIBZXGLELktJCU5Z0Odhg+cm5BcxNqm7i8gcC3LL9CypnI +R9Heluo2LTKGwrLHr8QjexUM8vcKNSGRsVE/ujTiTjm62UaIdEbFipwc6reZY37O +FbjvXDQFuYZ+yTaX4cih9JHDMwh7g1GzMDT5+M+k+qtVttEhxsrSAnp/kq+CfGV/ +5wBFbKlQfM4bHEuNmTXFow== +-----END CERTIFICATE REQUEST----- diff --git a/pki/PREMIUM.key b/pki/PREMIUM.key new file mode 100644 index 0000000..573d6c8 --- /dev/null +++ b/pki/PREMIUM.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC8r+G6iwuoHnz1 +FaBMJKDgV7ZnITlzmlN/3dFI+pvlpWa9ttdGo5/teD/55IKIVlbwGd4pIzKy6HHE +ejWP3dJRmaPAg14hD397r2KKdVebBEPH/DtShlPVHtdLNFHoqBQXxutBtSL7j4Au +kTcxx/H0aIQ+9T342IFhJ//VRUN8rFjjyjMCrSxHL4VPSYKqKFtTJAY4vfHSNRKB +VNQJKJXA7DVJFnQTvALpSK3vTA7qGqKUx7Vl7g3lHyoTKUfKzCNo8ARZsJspmlmF +OKdR2vIh/Z/tzI/Ugp3nvSjbKndM7EK3u9IBI83GIM+ouf9vBY0Zgr/uZjscURWl +kXDE0ifvAgMBAAECggEAbM5/vLKx5iCuriXqaf41RylNZesi1icIP5QKO6tIewUG +WiA1w+ZXMvlE6zV6kGQ5fftswQwrEEA6WrKecHfZ8HRImZsnjKkDOq/Ig09nVV0A +OTKagtwzO5KtVBC3qxJBg/SRdTKfGbGGmVPkIDDMtcQPfr6tHfK7qOsH/FQUtq8s +/sr0EDdBqGKeOi0MtmXOY32BejCqrEhiUEMI8YpBfndvDMWrYv0QIgdjLqw0Daz0 +WW3/LchZJz/NQrGcpeOskQxXsPOqOlDxBKHnhREnkKzUcfaGeK8evAdk1VWrPlKD +d4qmxbzLe1GwyF+ClozLZK9n3NtVBrPdEx2v8FCkAQKBgQD16aIBr7H+mav6gG+x +FLWaVnJ7o6PpUdorkTyZx+8VT+0yVBk5JgT4XcL4jVIa4pvwm+cxzgR4ul9m3bPt +TMdjCmCwn5ctVv9tyVJFjHVfOX1rpILLB3tpFa1NUulLZDdGWUjYMTdasHmPIc5n +vCByw9E0EjElPGs7G5v9Ac/pHwKBgQDEbVBiIQxmCgsxTjuIgq5U+ZQHD+KCIKHm +/Nj6Yujz6xU/MHWWj8xfFvW9r+hgdBZq1HHMBYt1oV4UQx9NU79C8EY3yFQ0gHvY +urAbtWffaf0GxhIcfOU7dvqb00rsC2eWo0jvS+Opi89FjYeW5ioFaCdhuYDVDEZJ +6LiFOZNXMQKBgQC7gi5aAtJCRILyO8Tuzc+7o3cf96MgYZ1t4wzGZcFUCuHeommp +PehESZpFU9zrSyeEzBv5yhF2zQW5tgtgQk82oc8gXlAz7kZOPFhTV8qXlYqg7Ywd +q9LaSgEfGL1zEzNinOoCj2SZ7j6CeVCdoMFNQSrf/Y8jyXIqW98RiLQ0GQKBgQC7 +xvCwTn2m0nUutmYtMxhrPYgoVCQqV/3ObusSOhoOjC5skOvoeiFayf00UASqqG+B +wwPikW5njlL8tconxyaxXDcUPptY8XbzkkymwH3DU3RC1Hkd6LvPZAdhjdUy4Bgw +Jnqj4H2MaI5GJG15cSC8uHvlbUve33QWVbaIDalwEQKBgBDw8c9aJe7zKMM6oX8X +WoGvf6t/qYXLoniC06A/VDEFShfR1n7lEavO/SibqN+k5T4E8Hayv0witjtIfF+6 +4EOzMdGHDdvnpmtRgLCQXzTnK4FLV4Kig0qeLjKyknxrVp/ZiD7qgREG3uhrahu/ +q6p2INBRts2uQQtVrBmOIJ87 +-----END PRIVATE KEY----- diff --git a/pki/billing.pub b/pki/billing.pub deleted file mode 100644 index e69de29..0000000 diff --git a/pki/ca.cer b/pki/ca.cer new file mode 100644 index 0000000..38a1fae --- /dev/null +++ b/pki/ca.cer @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDYTCCAkmgAwIBAgIJANXp0K4mLJbJMA0GCSqGSIb3DQEBCwUAMEcxCzAJBgNV +BAYTAkpQMQowCAYDVQQIDAFBMQowCAYDVQQHDAFBMSAwHgYDVQQDDBdUYWl0byBB +cmNhZGUgTWFjaGluZSBDQTAeFw0yNDAyMjEwMDM3MjRaFw0zNDAyMTgwMDM3MjRa +MEcxCzAJBgNVBAYTAkpQMQowCAYDVQQIDAFBMQowCAYDVQQHDAFBMSAwHgYDVQQD +DBdUYWl0byBBcmNhZGUgTWFjaGluZSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAMeFW/ELRe8zoq9UKqs38o+NBeCfF85vGiB0ofpY83juq/ScKZ93 +y3/0KDkKywIxZM9OOL8rRZ+n+hRtKE3dh0NOULyWZaaXnhc8dFegj2f/CfW67RtA +UMKkFoWgWy4s850aB7/1koCI9dCMJ9Kxo9WAHIEH/DHN05m2WVmUR2rpxgy1qX1N +ZEfnWWcybFO05GBoWlnMuTewAoDUna+hrMR9yVZEVPo+5zXELT1Q+fdJaeCMes7u +EvA309jlbN/jyauhE6oKtxOLmfUW/ug+o0i3WhHOnA7q/2awx6QBxeeJJ+jqHZ03 +Wo56M0YSpYK6qUAgvbDyG7cdC492VevlBQkCAwEAAaNQME4wHQYDVR0OBBYEFICi +OTELnKwR7eleqpDecLGpDXq0MB8GA1UdIwQYMBaAFICiOTELnKwR7eleqpDecLGp +DXq0MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAAiMFrLniD8lFKhI +aFIdvOgU87qpfpe/FzTiHQZds751ktAl25n8QFon33SEsC8YUJjxN97Ng5xN4FM7 +0Sj0FBfC+SjrcfvUH7fMuatFHE2Z4bNkjXv+13k5vZDxRA8DUV17D3dSo6QSAcYs +DgFednjyVb8ihJrKbhdRb/j3JQh8MVYoJ0YX43u//XJAvJJI4XNp6++HE748eGNa +RZnaOCpcXxpGtuuoAgwmiIN/uMPTLAIzGecmagw2o0jlS67PuFzyMlCfvIC9dmYQ +9Ep92SU8Ode73sPlT/CaKd6ajIL3JUxp2LBMRWBYcZXee7zwE1VphmOonHrIJkn3 +y+IxMMg= +-----END CERTIFICATE----- diff --git a/pki/ca.crt b/pki/ca.crt deleted file mode 100644 index e69de29..0000000 diff --git a/pki/ca.key b/pki/ca.key new file mode 100644 index 0000000..f3f6ac4 --- /dev/null +++ b/pki/ca.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDHhVvxC0XvM6Kv +VCqrN/KPjQXgnxfObxogdKH6WPN47qv0nCmfd8t/9Cg5CssCMWTPTji/K0Wfp/oU +bShN3YdDTlC8lmWml54XPHRXoI9n/wn1uu0bQFDCpBaFoFsuLPOdGge/9ZKAiPXQ +jCfSsaPVgByBB/wxzdOZtllZlEdq6cYMtal9TWRH51lnMmxTtORgaFpZzLk3sAKA +1J2voazEfclWRFT6Puc1xC09UPn3SWngjHrO7hLwN9PY5Wzf48mroROqCrcTi5n1 +Fv7oPqNIt1oRzpwO6v9msMekAcXniSfo6h2dN1qOejNGEqWCuqlAIL2w8hu3HQuP +dlXr5QUJAgMBAAECggEAe18O9wGNgNdg5SEaMT0rE3CUDczSH6e7dA4qim6uPjz2 +vw5A/oZIoxoKNRtjZDu+piEsHalYJ9zqWe8VWPB+TzQB4FrvCBAAhUWweu6hPiEJ +u5SWQJ+IUJK+CmqZdvf8u0v5Ns1WhXwq44WGqlWFhOLuvSp+2xz2lrmWjjmN36EM +aIrZKwVyt2FpF3lhCXbkfhrKMNiRKN9hJ1EnQXHxxNfaMVsGz+I8RZuLPKEh1D+o +EUY70BC3KBu4h7pVnskRB6pKVrlo1IcAoRmwAUKE4UkwTNawwYzeMV1a8OAHwgip +sF+GSpC/dY9rjc/EkTWpRQIRnFSMxVyuY6AevjsiAQKBgQD/d3LYeiLDmIyQnv+h +qwkMTn5QXZE7liH6EOy+QpAHyfmNidXW7+OY782bq2MLBFwkxHcDiQP0BaReK/IA +Xul1gsLDGH5Sq8GzUjWptyo8BbzqefNx37RmXUp0Z4GSPjVEyrN0BhcBtR44URDR +n514dAmr3W1dwrPuBAf7BHN+0QKBgQDH8AGv/9CB7WoYJXNZw68qy1et4dWLA7is +l7cP5prpFgyquMO/sjY8NPvLQg1G02G7kJWmCA2Ak2E/BbPjnVz64TW7k4VeyJHl +xsXVSWxM9TZqGNXZJTJNvw+tBzcLSzkt+8OlgkKf0KYJYLuqfYs/IhWpzdHBQL0v +1mNmDuBguQKBgQCHrvGYeIYuTL+bsFcljqnnl2kPViLk+wBgyMx04PWOrX+V5Tdm +SVMgz3zsyUJ5f39RJ+fuQL+Qw85hFgYanE5y01iONlwhnIfsriVCVr5f0sxb3Rmn +yaEPHU2GNdNj0RaJyv81CGb/ySqbzrKYI6aHa1oXpiuIOPlH2WxDrkGJgQKBgBl6 +FMz3fPtBZHaFNyimDckXNin7D/nx1HNxtar6CJ1Q6PZMKu1faRfM7JTe6tAumVKM +PvV0KzxKC2c7c8u6PqHdVrp7NtB4IFc2N/lQrNM1n+RvG7jay4kqonW66KGwyS15 +2llZuuGgdbfWMrOr4bV+w2HqzyKf/Dt/RxU3KhJJAoGBAJTISS+1XD/GuO5EXnMJ +xkfhaG3Ju+D7zJJwDa96OQ4+X+aon99HDyyiz1SHbotzhzrCscoHCg6UL+cFHq8Q +E5hnGrMUxqs/Z+vE7LXNydg8yOyvxIbkThsRDcBMhR+Rb6FF6DG+iaZ2SPaC5iCs +RVI7MDPkI6tophsf9b4pKfF+ +-----END PRIVATE KEY----- diff --git a/pki/cert.p12 b/pki/cert.p12 new file mode 100644 index 0000000000000000000000000000000000000000..ae8cebada020b6c4a1d2264a595ed917ba160270 GIT binary patch literal 3202 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 %S (%04X)\n", lpszStoreProvider, (wchar_t *)pvPara, (int)dwFlags); } else { dprintf("Cert: Open store for %s\n", lpszStoreProvider); @@ -173,5 +175,26 @@ HCERTSTORE WINAPI hook_CertOpenStore( } dprintf("Cert: Failed to open store %08X\n", (int)err); } - return ret; + return ret;*/ + HANDLE f = CreateFileW(path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + + if (f != INVALID_HANDLE_VALUE) { + dprintf("Cert: Read file %S\n", path); + ReadFile(f, bfr, sizeof(bfr), &num_read, NULL); + CloseHandle(f); + + if (bfr[0]) { + CRYPT_INTEGER_BLOB blob = { + .pbData = bfr, + .cbData = num_read + }; + dprintf("Cert: detour open of %S to %S\n", (wchar_t *)pvPara, path); + HCERTSTORE ret = next_CertOpenStore(CERT_STORE_PROV_PKCS12, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, hCryptProv, dwFlags, &blob); + dprintf("Cert: Open %p\n", ret); + return ret; + } + } + + return next_CertOpenStore(lpszStoreProvider, dwEncodingType, hCryptProv, dwFlags, pvPara); + } diff --git a/platform/config.c b/platform/config.c index 4dfa277..f48ede8 100644 --- a/platform/config.c +++ b/platform/config.c @@ -44,7 +44,7 @@ void cert_config_load(struct cert_config *cfg, const wchar_t *filename) GetPrivateProfileStringW( L"cert", L"path", - L"cert", + L"cert.p12", cfg->path, _countof(cfg->path), filename); diff --git a/platform/syscfg.c b/platform/syscfg.c index 83fbac2..8f7d308 100644 --- a/platform/syscfg.c +++ b/platform/syscfg.c @@ -113,5 +113,5 @@ static HRESULT syscfg_event_path(void *bytes, uint32_t *nbytes) static HRESULT syscfg_log_path(void *bytes, uint32_t *nbytes) { - return reg_hook_read_wstr(bytes, nbytes, L"D:\\log"); + return reg_hook_read_wstr(bytes, nbytes, L"D:\\"); } diff --git a/sivahook/dllmain.c b/sivahook/dllmain.c index 718fa1d..4fdd040 100644 --- a/sivahook/dllmain.c +++ b/sivahook/dllmain.c @@ -96,8 +96,8 @@ BOOL WINAPI DllMain(HMODULE mod, DWORD cause, void *ctx) { HRESULT hr; - if (cause == DLL_THREAD_ATTACH && sizeof(uint64_t) == 4) { - dprintf("Connected\n"); + if (sizeof(uint64_t) == 4) { + printf("Connected\n"); } if (cause != DLL_PROCESS_ATTACH) { diff --git a/subprojects/capnhook.wrap b/subprojects/capnhook.wrap index b2687a2..584b4a1 100644 --- a/subprojects/capnhook.wrap +++ b/subprojects/capnhook.wrap @@ -1,4 +1,4 @@ [wrap-git] directory = capnhook url = https://github.com/Hay1tsme/capnhook -revision = dbdcd61b3a3043b08f86f959bd45df4967503a77 +revision = 09306229f1fd09bae0e617865a26778d3537ff93