問題タブ [memory-safety]
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 - バッファオーバーフロー/配列オーバーフローを防ぐには?
私は最近、カスタム シリアル通信プロトコルのコードを書いていました。私がしたことは、受信データの一部 (8/16 ビット) を使用して、フレーム サイズの大きさを示すことでした。このデータに基づいて、次のデータはないと予想しています。Crc を使用してフレームを承認または拒否します。しかし、受信側では、フレームを処理する前に、予想されるデータ量を知る必要があるため、Crc にフレーム長データを含めることはできません。
私が直面した問題は、このフレーム長のデータが破損し、受信側の配列サイズがそれよりもはるかに小さいのに対し、受信側がそのバイト数を受信するようにだますことです。これにより、連続したメモリ位置に存在する多くの重要なシステム変数が破損します。
バッファ オーバーフローが発生しないようにするにはどうすればよいですか? これに関する私の考え 1) フレーム長データが特定の値を超えた場合は拒否します。2) 最大数を制限するデータ型を使用します。配列インデックスの範囲を 256 のメモリ ロケーションに制限する short を使用するように、280 バイトのバッファを作成します。3) メモリを別の場所に割り当てて、重要なシステム変数に影響を与えないようにします。
受信ループに陥るのを防ぐために使用したことの 1 つは、タイムアウトを使用することです。しかし、私はこの問題のこの側面を見落としていました。コードはより大きなシステムコードの一部であり、私はここの専門家ではないため、問題を確認して再現する時間があれば、私にはよく見えます。
一般的に、この種の問題を安全に処理するにはどうすればよいですか?
また、オーバーフローを防ぐために、配列を使用する際に従うべき一般的な考慮事項または標準的な慣行は何ですか?
android - ハッキング防止 Android プロジェクト
プロジェクトがハッキングされないようにする方法について、さらに詳しい情報が必要です。1つ目:はい、携帯電話のゲームやアプリをハッキングするには、ルート化されたデバイスが必要であることを知っています. 2番目: はい、これはメモリの読み取りとチート エンジンのような調整に関するものであることはわかっています。
私はそれを行う方法を知る必要があります。日本製のゲーム「Battle Cats」に精通している場合は、メモリ スキャンを実行しようとすると、ゲームが即座にブラウザの変更に入り、ユーザーを報告する特定の API に接続しようとすることも知っているでしょう。
私はそれがどのように可能であり、どのようにしてこのようなものを作ることができるかを知りたかった.
何かご存知でしたら情報提供お願いします。
また、はい、Google でこれを実行しようとしましたが、得られるのは Android/モバイル デバイス用のウイルス対策だけであり、控えめに言っても少しイライラします。
swift - メモリを手動でゼロにする方法を教えてください。
オブジェクトの内容をメモリから手動でクリアすることは可能ですか?
特に、 を扱っていNSData
ます。と を使ってみましdata.length = 0
たdata.setData(NSData)
。
ARC
それが属する範囲外になった後、入ってクリーンアップすることは わかっていますが、必要なときにこのプロセスを手動で強制することは可能ですか?
security - clang/llvm での CFI 実装のエントリ ポイントは?
Clang/llvm に Control-Flow Integrity を実装したいと考えています。(Forward-Edge CFI が既に実装されていることは知っています)
私の問題は、コンパイラー用に何も実装したことがないため (コンパイラーベースのアプローチは初めてです)、どこから始めればよいかわからないことです。私の実装では、最初にすべての呼び出しのリストを取得し (内部 => ライブラリ呼び出しなし)、関数の終了方法を変更する必要があります (例:pop + jmp
の代わりにret
)。
プラグインシステム(LibClang、Clang Plugins、LibTooling)を使用してどこから始めればよいか、またはこれが可能かどうかを知っている人はいますか?
前もって感謝します
memory-management - OS は、アセンブリ レベルのコードからの悪意のあるメモリ アクセスからどのように保護しますか?
プログラムが他のプログラムのメモリにアクセスするのを防ぐためにOSが提供するシステムコールについて知っています。しかし、それは、OS が提供するシステム コール ライブラリを使用した場合にのみ役立ちます。CPUビットをカーネルモードに設定し、特権命令を実行するアセンブリコードを自分で作成するとどうなりますか(メモリ内のOSのプログラムセグメントを変更するとしましょう)。OSはそれを防ぐことができますか? PS 好奇心からの質問です。できるだけ詳しく OS を勉強したいので、良いブログや書籍の参考文献を提供していただけると助かります。
c++ - メモリ セーフな C++ アプリケーションを作成するには何が必要ですか?
コーディング標準を作成するか、C++ のメモリ管理エラーを排除することが証明できるライブラリを使用することは可能ですか?
Java のようなものを考えています。たとえば、Java アプリケーションでダングリング ポインターを使用することは不可能です。