問題タブ [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# を使用して、エクスプローラーや svchost などのプロセスに DLL ファイルを挿入することはできますか? これは C++ では可能ですが、C# では可能ですか? もしそうなら、DLL がどのように書かれたかが問題になりますか?例えば、C++ DLL と Visual Studio C# .NET DLL との間で異なるでしょうか? これが可能な場合、誰かがこれを行うために使用できるコードを投稿できます。どうもありがとうございました。
c++ - sendto() をフックすると、コードの順序によってはクラッシュが発生する
DLL インジェクターを使用して dll をインジェクトし、IAT に入り、システム コール sendto() を自分のものに置き換えます。
これが交換方法です。
呼び出し元:
これは機能します:
これは機能しません:
後者のバージョンの my_sendto() を使用すると、sendto() の呼び出し時にホスト アプリケーションがクラッシュします。
de_sendto は次のように定義されます。
windows - メモリ内のプロセスの整合性を検証していますか?
決心した攻撃者が自分のプロセスコード/データを変更するのを防ぐことは不可能のようです。少なくともそのような改ざんを検出できることを願っています。
Windowsでは、現在のプロセスへのDLLインジェクション、WriteProcessMemory、およびCreateRemoteThreadをリッスンすることは可能ですか?
Linuxでは、LD_PRELOADとDRルートキットをリッスンすることは可能ですか?
c# - タスクマネージャのプロセスタブからC#アプリケーションを非表示にする方法は?
タスクマネージャーの [プロセス] タブから C# アプリケーションを非表示にする必要があります
使用して
アプリケーションタブから非表示にしました。ここで、プロセス タブから非表示にする必要があります。
これは可能ですか?
c - 挿入されたdllは、所有者プロセスをクラッシュさせます。なんで?
プロセスに挿入したdllがあります。無効なシンボルが見つかるまで「file://」を検索します。数分後、メインプロセスがクラッシュします。何故ですか?どうすれば確認できますか?CreateThreadのスタックサイズを小さくすると、クラッシュが速くなるため、スタックオーバーフローが発生する可能性がありますが、何も割り当てず、単一の構造体を割り当てています。
c++ - ウィンドウ最大最大化
最大最大化サイズ(最大化ボタンを押したときにウィンドウが最大化されるサイズなど)と最大化位置(最大化されたウィンドウに合わせて調整されたX / Y)を設定できるプログラムを作成しようとしています。走っている。これは、Rainmeterをセカンダリモニターに常に表示できるようにするためであり、ウィンドウ内に収まるすべてのウィンドウのサイズを手動で変更する必要はありません。
WinAPIのMINMAXSIZEを使用して作成した単純なプログラムでこれを行うことができました。この方法は私の小さなプログラムでは完璧に機能しているようですが、インターネット上の1つか2つの記事以外にドキュメントはほとんどありません。これが最大最大サイズを設定するための最良の方法であるか、またはこれを行う別の方法があるかどうか疑問に思いました。
私がこれをすべてのアプリケーションに実装することを計画した方法は、DLLインジェクションまたはフック(どちらも私は経験がありません)のいずれかになる予定だったので、これらの方法についての皆さんの考えも疑問に思いました。
すでにこれを行っているアプリケーションがいくつかあることは知っていますが、これは学習体験になる可能性があると思いました。また、試したすべてのアプリケーションがうまく機能しませんでした(ただし、すべてのアプリケーションに当てはまる可能性があります)。 Windowsの機能による)。
私が何について話しているのかまだわからない人がいれば、MaxMaxは私が望んでいることを正確に実行します(前の段落で述べたように、うまく機能しませんが)。
よろしくお願いします。
winapi - GetModuleHandle の実装
私はそうする必要があるDllMain()
ので、ローダーロックが保持されます。GetModuleHandle()
ローダー ロック [ページ #6] も使用しているため、デッドロックが発生することを読みました。
GetModuleHandle() はどのように実装できますか? いくつかのコードはプラスになります。
更新:私はSetWindowsHookEx
WinXPでのみ使用しているため。コメントでアドバイスを受けて、簡単な方法で、最初にコールバックが呼び出されたときに GetModuleHandle() を使用します。
security - dll ファイルを保護する最善の方法は何ですか?
C++ ビルダーでビルドされた大規模なアプリケーションがあり、起動時にフォルダーを参照し、存在するすべての dll ファイルをロードします。私はこれはあまり良いことではないかもしれないと考え、web ブラウザーを起動し、所有されているという言葉で画像を開くだけの dll を作成して考えてみました:P
とにかく、うまくいきました。そのため、DLL が切り替えられたり、新しい DLL が追加されたりすることで、システムが何らかの形で危険にさらされる可能性があります。リモート管理アクセス、ドライブのフォーマット、名前を付けます。
そこで私の考えは、この穴をふさごうとする方向に向かいました。これのベストプラクティスは何ですか? 私は、DLLの. 有効な dll の名前のリストを.exe に保持しても、dll が置き換えられる可能性があるため、実際には解決しません。名前とチェックサムのリストは機能しますが、自動読み込み機能を維持し、正しく署名された dllのみを読み込むと便利です。
編集:仕事をしているように見えるsigntool.exeの使用を検討しています。しかし、後でC++でdllの署名を実際にチェックする方法についての良い参考文献が見つかりません。リンクを持っている人はいますか?
c - dlsym による FSGetCatalogInfo のオーバーライド
DYLD_INSERT_LIBRARIES を使用して OS X Lion 10.7 で FSGetCatalogInfo 関数をオーバーライドしようとしていますが、元の FSGetCatalogInfo 関数を実際に呼び出すまではすべて正常に動作し、その時点で「バス エラー: 10」が発生します。
私のコードスニペットは次のとおりです。
元の FSGetCatalogInfo を間違って定義または呼び出しているに違いないと考えていますが、どこで失敗しているのか正確にはわかりません - アイデアですか?
c++ - 実行中のプロセスからDLLを注入した後に排出する
実行中のプロセスに DLL を挿入するために、この関数を作成しました。
そして、それはうまく機能しますが、dllを取り出そうとしたときに、フックの解除に関する情報を見つけることができませんでした..それを行うための関数を構築しようとしていましたが、これは私がこれまでに得たものです:
それは正しい方法ですか?もしそうなら、VirtualMemのcreateRemoteThread instadeでどのパラメーターを渡す必要がありますか(注入関数で使用されました)...