問題タブ [memcmp]

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.

0 投票する
1 に答える
85 参照

glibc - 3 番目のパラメーターを memcmp に -1 戻り値 0 として渡す

memecmp() の場合、3 番目のパラメーターは size_t(unsigned) です。しかし、第 3 パラメーターを -1 として渡すと、第 1 パラメーターと第 2 パラメーターが指すメモリ ブロックが異なっていても、常に 0 が返されるのでしょうか?

0 投票する
1 に答える
271 参照

performance - メモリ内の文字列を検索する際のパフォーマンスの問題

私は簡単な仕事をする Win32 の下で DLL を開発しています: それは部分文字列のためにホストの仮想メモリをスキャンします。しかし、何らかの理由で、Cheat Engine、ArtMoney、または単一スレッドを使用してスキャンする OllyDbg と比較して、非常に遅くなります。VirtualQuery() で取得した単一のメモリ セクションをスキャンする関数のコードを次に示します。ホスト (.exe アプリケーション) は約 300 ~ 400 MiB のメモリをコミットし、4KiB から 32MiB までのさまざまなサイズで約 170 のメモリ セクションをスキャンする必要があります。MEM_PRIVATE、MEM_COMMIT 領域のみをスキャンし、PAGE_GUARD、PAGE_NOACCESS、PAGE_READONLY はスキャンせず、DLL 自身のメモリをスキップします。

なんらかの理由でパフォーマンスがひどいです。単一の文字列を見つけるのに 10 ~ 12 秒かかります。たとえば、OllyDbg は 2 ~ 3 秒で文字列を見つけます。

MSVS2010を使用しています。

コンパイラ コマンド ライン:

リンカー コマンド ライン:

私は何を間違っていますか?私のアルゴリズムが悪いのでしょうか、それとも他のメモリスキャナが使用するある種の「魔法」がありますか?

0 投票する
2 に答える
1372 参照

c - Cでmemcmpを使用して構造の一部を比較する

同じタイプの構造が 2 つあり、それらを比較したいと考えています。構造体のサイズは 420 バイトで、最初の 2 バイトは決して一致しないことがわかっているため、比較を行うときにスキップします。次のように memcmp を使用しています。

比較の結果、ランダムな値が得られます。「&f1.x」と「&f2.x」を渡すと、最初の 2 バイトがスキップされ、残りの 418 バイトが比較されると仮定します。この仮定は正しいですか?

0 投票する
1 に答える
666 参照

c# - C# の PInvoke からの memcmp が、4x4 より大きい配列に対して正しく機能しない

PInkove の部分は、いくつかの SO 回答から取得されました (申し訳ありませんが、オリジナルへのリンクを失いました)。

以下は完全なプログラムです。出力はfalseです。

配列のサイズを 4x4 に変更すると、出力が変わりますtrue

memcmp がこのように動作するのはなぜですか?

0 投票する
3 に答える
6615 参照

c++ - memcmp リンカ エラー Visual Studio 2015

Visual Studio 2012 C++ プロジェクトがあります。最近、それをアンインストールし、Visual Studio 2015 をインストールして、プロジェクトをアップグレードしました。プロジェクトをビルドしているときに、以下に示すエラーが発生します。

関数で参照されているエラー LNK2019 未解決の外部シンボル _memcmp

さらに、コード memcmp 関数のどこにも使用していません。

リンカの詳細機能を使用したところ、出力ファイルに以下が表示されました。

_memcmp が見つかりました

MyC++Project.obj で参照

libcpmtd.lib(xstrcoll.obj) で参照

読み込んだ libvcruntimed.lib(__memcmp_.obj)

ここで2つの質問

1. コードで memcmp を使用していないのに、リンカー エラーが発生するのはなぜですか?

2. memcmp が __memcmp_.obj としてロードされる理由

私のプロジェクトにも次の設定があります。

1.C++ --> コード生成 --> ランタイム ライブラリを /MTd に設定

2.リンカー-->無視すべてのデフォルトライブラリは何も設定されていません

すべてのプロジェクト設定を試しましたが、すべて無駄でした。

使用していないこの memcmp 関数のみに問題があります。

私は mamcpy と memset を使用しましたが、それらに問題はありません

0 投票する
2 に答える
2315 参照

c - strchrを使用してCで部分文字列を取得する方法

文字列の一部を取得しようとしています。
次のコードがあります。

問題は、2 番目の単語を取得して word2 に格納することです。このために、使用strchrしてスペースを見つけようとします。しかし、2 回目に使用するときstrchrは、2 番目のスペースを見つけるためにオフセットが必要です。私は次のことを試しました:

変数beには、 の空白文字の位置が含まれている必要がありますmystring。最終的にword2含む必要があります。 別の解決策は、ループを使用して文字列を「ウォークスルー」することですが、それは関数をごまかすことになります。quick
strchr

0 投票する
1 に答える
413 参照

assembly - memcmp の入力値はどこにありますか (リバース エンジニアリング用の ARM アセンブリ内)。

まず第一に、私の英語が下手で申し訳ありません。それは私の自然言語ではありません。

リバースエンジニアリングの経験はまだありません。ですから、このトピックに関する大学での最初の仕事に非常に混乱しています。

タスクは、バイナリのパスワードを見つけることです。プログラムはユーザー入力を求め、それを変換し、その入力をハードコードされた値と比較します(その長さはわかりません)。私はこの値を見つけようとしています。

確かに、値が比較される memcmp コマンドを見つけました。memcmp がこれらの値を入力パラメーターとして取得することは知っていますが、どこから来たのかわかりません (スタックまたは明示的なレジスター...)

memcmp に到達する前のコードのセクションを次に示します。

どんな助けにもとても感謝しています。