問題タブ [kernel32]
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# - PInvoke ReadFile kernel32: 保護されたメモリの読み取りまたは書き込みを試みました。これは多くの場合、他のメモリが破損していることを示しています
ネイティブのC#の代替手段は遅いため、kernel32のReadFileを機能させようとしています...
次のコードは数回機能していましたが、突然「保護されたメモリの読み取りまたは書き込みを試みました。これは、多くの場合、他のメモリが破損していることを示しています。」
サーバーを再起動すると、同じエラーが発生する前に数回機能すると思いましたが、間違っていたようです。今何をしても発生します..
これが私のコードです:
関連するコードはこれだけだと思います。
CreateFile および ReadFile 署名が完全に互換性がない (IntPtr と int)、IntPtr の Marshal.PtrToStructure が本来あるべき場所を指していない、またはメモリが解放されていないなどと関係があると思います。ただし、再起動後に数回試行しても機能しなかったという事実は、私を混乱させます。
誰でも明らかなことを見つけたり、私が調査できる提案はありますか?
ありがとう
編集:お気づきかもしれませんが、これはさまざまなアプローチの寄せ集めのようなものです。バッファの内容を必要なように読み取るのに苦労したため、ピン留めされたバッファはもう使用していません。
Edit2:スタックトレースは、これが問題であると言います:
c# - 共有パス経由で HDD シリアルを取得する
私は C# win フォーム アプリを持っています。その中で、このメソッドを使用して、HDD の固有のシリアルを取得しています。
ボリューム変数をPath.GetPathRoot(Environment.CurrentDirectory)
シリアルを次のように取得しますSerialNumber.ToString("X")
正常に動作しますが、状況は次のとおりです。
- アプリフォルダーを共有しました。
XXXXXXXX
実行するとシリアルになりますEXE
- 別の人が私の共有パスからアプリを実行すると、彼は
00000000
シリアルとして取得します - しかし、その別のユーザーがこのフォルダーをマップ
XXXXXXXX
してアプリを実行すると、彼はシリアルとして取得します
では、この問題の原因は何ですか?何か良い使い方はありませんか?
WMIを紹介しましたが、私のニーズには合いませんでした。
winapi - EasyHook を使用して ntdll.dll から NtCreateFile API をフックする (c#)
Windows API をフックしようとするのはこれが初めてです。私の目標は、プロセスが作成/オープン/読み取り/書き込みしようとしているすべてのファイルを監視することです。できるだけ冗長にするために、NtCreateFile() や NtOpenFile() などの ntdll.dll API をフックすることにしました。そのため、この目標を達成するために、簡単で堅牢な EasyHook を使用しました。私は本質的に FileMon の例に従い、本当に必要なものを変更しました: Hooked 関数です。開かれるファイルに関する情報を読み取ろうとすると、ObjectName などの OBJECT_ATTRIBUTES 構造から情報を読み取ろうとします。これらは整数ポインターであるため、文字列値を取得するために関数 Marshal.PtrToStringAuto(attributes.objectName) を使用することを期待していました。しかし、結果として、何の意味もなく、悪い文字列しか持てなくなります。また、ファイルアクセスが機能していないようです。おそらく DllImport 署名に、このコードに何か問題があると思います。EasyHook がそれらのマーシャリングについて不平を言っていたため、SafeHandle を IntPtr に置き換える必要があったことに注意してください。誰かが私を助けることができますか?
挿入された DLL の特定のコードは次のとおりです。
Run メソッドのコードは次のとおりです。
コンストラクターのコードは次のとおりです。
ここにフックデリゲートとフック関数があります
ここに NtDll.Dll ネイティブ関数があります。
winapi - NaCl モジュールで User32/GDI32/Kernel32 を使用する方法
Win32 API を使用する ActiveX および NPAPI プラグインがあります。そのプラグインを NaCl モジュールに移植したいと思います。しかし、Win32 ライブラリでビルドする方法が見つかりません。NaCl で User32/GDI32/Kernel32 API を使用できますか?
c++ - VirtualProtect と kernel32.dll - 無効なアドレスにアクセスしようとしています
プロセスによってロードされたさまざまなモジュールを分析しています。残念ながら、kernel32.dll
メモリ スナップショットを作成することはできませんが、関数は他のモジュール (たとえばntddl.dll
) で適切に動作します。問題は次のコードにあります。
このコードを呼び出した結果kernel32.dll
は次のとおりです。
エラーの説明には次のように書かれています。
プロセスのメモリ マップを確認したところ、kernel32.dll アドレスが正しいことがわかりました。原因は何ですか?
java - Windows 7 でラップトップが [ACLine で] 充電中か [ACLine ではない] かを取得しますか?
Netbeans IDE 7.4を使用しています。以下のコードで試しましたが、実行しようとするとエラーが発生します。コンパイルはOKです。
開始する前に、jna-3.5.1.jarをダウンロードし、[「ライブラリ」を右クリック >> 「JAR/フォルダーを追加...」] をプロジェクトに追加しました。
以下はコードです:
以下は、発生したエラーです。
windows - x64 TEB C++ およびアセンブリへのアクセス
32 ビット アセンブリでProcessEnvironmentBlock
は、TEB
構造体の にアクセスできます。そこから構造体にアクセスLdr
しますTEB
。
この手法については、http: //en.wikipedia.org/wiki/Win32_Thread_Information_Blockで説明しています。
32 ビット アセンブリでこれを行うコードは次のとおりです。
TEB 構造はここで見ることができます: http://msdn.moonsols.com/win7rtm_x64/TEB.html および PEB 構造はここで見ることができます: http://msdn.moonsols.com/win7rtm_x64/PEB.html
上記は32ビットコードで機能します。
ただし、x64 マシンで動作するコードも書きたいと思っています。構造の x64 バージョンを表示して、次のように書きました。
これは使用できますがWinnt.h
NtCurrentTeb()
、アセンブリを使用したいです。
ただし、まったく機能しません。理由はありますか?