MachineHunter / SafeExecute

自分で設定したセキュリティのルールの下、実行ファイルを安全に実行できるツールです。
3 stars 0 forks source link

Windowsサービスの作成/起動の検知 #65

Closed kbys0519 closed 2 years ago

kbys0519 commented 2 years ago

改行コードについてお騒がせしました。管理者権限のコマンドプロンプトでの動作確認済みです。

kbys0519 commented 2 years ago

バイナリパスの表示とWの方を実装してpushしました。 ただService.exeのサンプルにCreateServiceWがなく、CresteServiceWの方はまだ動作確認できていないです。 サンプルプログラムを自分で作成しようとしているんですけど上手くできない状態です。元から用意して頂いているTestExecutables/Service.cppを書き換えて作ろうとしているんですけど、LPCWSTRなどの変数型が調べてもうまく揃えられない状態です。。。

MachineHunter commented 2 years ago

Wに関しては、これとか参考にすると良いかもです! https://github.com/MachineHunter/SafeExecute/blob/master/TestExecutables/MoveFileExW.cpp#L12-L14

これコンパイルする時注意なのが、64bitのバイナリを吐くmingw64とかのコンパイラを使わないといけなくて、32bitだとフックがかからないんだけど、そこは大丈夫かな?


文字列型に関して

基本的に char(普通の) と wchar(ワイド文字) があって、 それぞれのポインタがWindowsでは LPSTR = char*LPWSTR = wchar* ってtypedefされてる。 これにプラスして、定数バージョンの LPCSTR = const char*LPCWSTR = const wchar* もあるって感じかな。 ( LP は Long Pointerの略で64bitのアドレス空間だからlong(32bitならLいらない)、C が定数 )

代入する時は、普通がこう LPSTR hoge = "hoge" に対して、ワイド文字列が LPWSTR hoge = L"hoge"; こんな感じでLが付く。あ、後 (LPCWSTR)"LPCSTRの文字列" の変換はできないので注意。