42116


ある.netアプリケーションのAPIをフックしてSSLで暗号化されている通信の内容を見たいです。  
CのWin32 APIを使っているものであれば、`bcrypt.dll`などの関数をdll injectionして書き換えればいいのですが、.net
frameworkを使っている場合はどうすればいいのでしょうか?

SSLを見る方法として中間サーバを使う方法もありますが、APIをフックしてやってみたいと考えています。

Windows 10 1709  
Visual Studio 2017


CC BY-SA 3.0
2018-03-04T04:01:31.680
42113
2018-03-04T04:39:29.570
5246
question
windows .net ssl
.net のAPIをフックする


.NET Frameworkでは暗号化処理はほとんど実装されておらず、大抵はWindows
APIを呼び出しています。ですのでネイティブアプリケーションと同じ方法でフック可能です。  
なおかつ、.NET
Frameworkでは全てのDLL読み込みは遅延ロードで実装されているため、関係するメンバー呼び出しがなければDLLは読み込まれていません。ネイティブアプリケーションよりもフックは容易かと思います。  
参考までに[SslStreamクラス](https://msdn.microsoft.com/ja-
jp/library/system.net.security.sslstream\(v=vs.110\).aspx)は[SSPI](https://msdn.microsoft.com/en-
us/library/aa380493\(v=vs.85\).aspx)の[Secure
Channel](https://msdn.microsoft.com/en-
us/library/aa380123\(v=vs.85\).aspx)が提供する[TLS/SSL](https://msdn.microsoft.com/en-
us/library/mt808159\(v=vs.85\).aspx)を使用しています。


CC BY-SA 3.0
2018-03-04T04:39:29.570
42116
2018-03-04T04:39:29.570
4236
42113
answer