問題タブ [dll-injection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - アンマネージ C++ .dll を使用して C# .exe から関数を呼び出す
C# で作成された実行可能ファイルがあります。そのソース コードはありませんが、IDA で逆アセンブルし、多くのオブジェクト指向アセンブリを作成しました。
.dll を別の .exe に挿入する .exe ファイルを作成し、この新しい C++ DLL を C# .exe に挿入しましたが、問題なく、DLLMain が呼び出され、...
しかし、この DLL を C++ で作成された通常の .exe ファイルに挿入すると、IDA で取得できるメモリ アドレスを使用して .exe 内の関数を呼び出すことができます。
問題は、関数名が逆アセンブルされていても、オブジェクト指向アセンブリにはその関数にアドレスがないことです。
では、C# .exe ファイルに挿入された DLL でこの関数を呼び出す方法はありますか?
可能であれば、C# .exe ファイルで宣言された名前空間とそのすべての関数と変数を、プライベートであっても使用できる方法はありますか?
サンプルの逆アセンブル コード:
windows - Windows 7 でのユーザー ファイル アクセスの確実な監視/追跡/ログ記録
ユーザーがアクセスした (作成、開いた、読み取った) すべてのファイルを追跡し、これらのアクションをログに記録して、別のアプリケーション内でさらに処理する必要があります。これを達成するための可能な方法を(できるだけ簡単に)調査および検索し、次の解決策を思いつきました。
kernel32.dll をフックし、CreateFileA、OpenFile などのファイル固有の機能をすべてインターセプトします。IAT を変更してラッパー関数を提供することを考えました。元の関数への呼び出しを引き続き転送しますが、どのファイルがいつアクセスされたかをアプリケーションに報告します。これは簡単に実現できるように思えますが、Windows 7 で問題なく動作するとは思えません。新しいセキュリティ制限により、インポート アドレス テーブルを変更することでフックの成功が妨げられているように思われるからです。多分誰かがもっとよく知っています:)
ファイル システムのミニフィルターを作成し、コールバック関数がファイル アクセスについて報告するようにします。ミニフィルターを作成したことがないため、これが実行可能なアプローチであるかどうかはわかりません。ミニフィルターの開発には、はるかに多くの労力が必要だと思います。単純なファイルシステムのミニフィルターの作成に関するチュートリアルなどのリソースを誰かが指摘してくれるかもしれません。
私は Microsoft の Detour ライブラリを知っていますが、フックは一般的に非常に単純であるため、この段階では使用を避けたいと思います。Detours や EasyHook を使用せずに、Windows 7 でファイル機能をフックする信頼できる方法はありますか? ミニフィルターについて: たとえば、暗号化を扱うフィルターと比較して、実現したいことは非常に単純だと思います。しかし、私はミニフィルターを書いた経験がなく、目標を達成するのにどれだけの労力がかかるかを見積もることができません. 私が見つけたすべての例は、ミニフィルターではなく、ファイル システム フィルターを扱っています。
ヒントや提案に感謝します:)
こんにちは、好奇心
c++ - C++/Windows ですべての例外をキャッチする方法は?
非常に古くてバグが多く、現在は開発者アプリケーションでサポートされていない DLL が挿入されています。そのアプリケーションがクラッシュする場合があり、データを保存するために発生する可能性のある (DLL からの) 未処理の例外を文字通りすべてキャッチし、アプリのクラッシュを許可する何らかの方法が必要です。どうすればそれを達成できますか?
今のところ、その目的のための外部デバッガーがありますが、遅すぎて、そのままにしておくにはバグもあります。
dll-injection - DLL アンインジェクションの防止
MadCHook ライブラリのメソッド InjectLibrary の助けを借りて、dll をプロセスに注入しています。無事にできました。しかし、その後、メソッド UninjectLibrary() を使用して、完全に別の C++ プログラムでそれをアンインジェクトしようとしましたが、成功しました。要するに、私の dll の名前を知っている人なら誰でも、それを注入解除することができます。どうすればこれを防ぐことができますか? 前もって感謝します!
dll - .Net アプリで DLL をオプションにする方法
Chilkat .NET 3.5 DLL のために完全な信頼を必要とするアプリがあります。これは大きな問題ではありませんが、アプリを次の場所に提出したいと考えています。
したがって、中程度の信頼にするために必要なことは、
- DLL への参照を削除する
- そのコードに関連するメソッドをコメントアウトします
アプリの 2 つの異なるバージョンを作成するのではなく、アプリの 1 つのバージョンの DLL への参照を削除する最善の方法は何ですか?
ありがとう!
c - Windows 7 DLL Injection
I am trying to inject a dll into an existing process. I am trying to use the CreateRemoteThread LoadLibrary way. I understand how it works, but I cannot figure out why CreateRemoteThread is returning null (failing)... I am on Windows 7 so this may be the reason, but I don't know for sure if it is.. Perhaps I need to set privaleges? My code is below:
c++ - DLLの関数の後、変数がNULLに設定され続ける
グローバル変数に有効なデータが必要ですQObject *p
。ただし、関数内でこの変数に何かを割り当てることは、関数のスコープ内で機能しますが、関数が戻った後、グローバルp
であってもNULLに戻されますp
。これが私のコードです:
使用など、さまざまなデータ構造の「回避策」を試しstruct
typedef
ましたが、うまくいかないようです。必要なのはp
、の値を保持することだけですmParent
。
編集:ここでinstall()を実行します
編集:何が悪かったのかを見つけました。が実行されると、ポインタはスコープ外になります。したがって、this
は、であるため、自身をに初期化します。したがって、になります。ただし、完全に異なるメモリアドレスで戻ると、スコープに戻ります。広範囲にわたるデバッグと頭痛の種の後の解決策は、パラメーターとしてを取り、それをの代わりにに渡すクラスメンバー関数を作成することです。その関数に渡すものはすべて、DLLが持続する必要がある限り持続する必要があります。または、ディープコピーを実行する独自のコピーコンストラクターを作成できます。install
mParent
QObject
NULL
p
NULL
this
install
QObject
install
this
c++ - DLL のソース コード内の C++ 関数フック
C++ DLL のソース コードがあります。この DLL はアプリケーションの一部です。別の DLL によってメモリにロードされた関数をフックして、フックされた関数が元の関数ではなく他のすべての DLL によって呼び出されるようにします。このコードをコードに入れました:
問題は、1 つの DLL でオフセットを検索し、このオフセットで関数にパッチを適用するのは間違っているのではないでしょうか (別の DLL にいて、すべての DLL の関数をフックしたいので、より複雑だと思います)。ところで、IDA PRO で標準 (fex. 0x0100344C) オフセットを取得する方法を知っている人はいますか?
windows - Windows エクスプローラーのウィンドウをサブクラス化する方法
このようにexplorer.exeのリストビューの色を変えたい
GetTopWindow 関数とそのファミリによって、リストビュー ウィンドウのハンドルを取得しました。
explorer.exe のリストビュー ウィンドウをサブクラス化するために、次のコードで dll コードを Explorer に挿入しました。
私のdllはexplorer.exeによってうまく読み込まれます。そして、挿入されたコードでSetClassLongPtr (グローバル サブクラス用) によってウィンドウ プロシージャをサブクラス化しました。
SetClassLongPtrは成功を返しますが、サブクラス関数 ( SubclassProc ) は WM_CREATE WM_DESTROY および WM_MOVE メッセージしか受け取りません。どうしたの?WM_NOTIFY と NM_CUSTOMDRAWを取得することを期待していました。