4

C++ で小さなプログラムを書きました。

#include <iostream>

int main()
{
    int input;

    std::cin >> input;

    if(input == 5){
        std::cout << "Input == 5";
    }
    else{
        std::cout << "Input != 5";
    }

    return 0;
}

私はすでにプログラムを構築しました。作業プログラムはReleaseフォルダにあります。ifここで、C++ コードを変更せずにステートメントを変更したいと考えています。16 進エディタをダウンロードして、ファイルを開きました。中に.exeはたくさんあります。私は問題をグーグルで検索し、この非常に素晴らしい画像を見つけました:

16 進エディタ内で output を検索しましたInput == 5。見つけた。別のものに変更してファイルを実行すると、プログラムは古いメッセージではなく、新しく入力されたメッセージを表示します。

ifしかし、コードの構造 (ステートメント)を変更したいと考えています。を検索しましifたが、何も見つかりませんでした。では、コード セクション(画像) はどこにあるのでしょうか。

4

3 に答える 3

7

実行可能ファイルにはステートメントがありませんif。これは、コンパイル プロセスの全体的な目的である機械語に変換されているためです。つまり、C++ コードを機械が実行方法を認識できるものに変換することです。

.exe を「ハック」したい場合、必要なのは逆アセンブラーとそれを使用するための知識です。これは長い話です。そのため、質問が Stackoverflow には広すぎる可能性があります。

于 2016-01-27T11:51:58.537 に答える
-7

c または c++ 言語では、if ステートメントは同じであるため、c++ 用の特別な if ステートメントを取得できるものはありません。

また、プログラムをビルドすると、マシンレベルの言語に変換されるため、プログラムの背後にあるものを見つけることができません。u出力を直接表示します

于 2016-01-27T11:55:51.357 に答える