0

このファイルを逆アセンブルしようとしていますが、大量のコードが追加され続けています。ビジュアル C++

#include <stdio.h>
int main()
{
int x = 1;
int y = 2;
printf("\rStart me UP");
x = x+y;
y = y+x;
printf("\rX is %d, Y is %d",x,y);
return 0;
} 

このようなものは私のコード (これの多く) に含まれています。文字列がなければ、自分のプログラミング ソースを見つけることができません。

=============== S U B R O U T I N E =======================================
.text:0041101E
.text:0041101E ; Attributes: thunk
.text:0041101E
.text:0041101E sub_41101E      proc near               ; CODE XREF: .text:00415C46p
.text:0041101E                                         ; .text:00415C5Dp ...
.text:0041101E                 jmp     sub_41C7F2
.text:0041101E sub_41101E      endp
.text:0041101E
.text:00411023 ; ---------------------------------------------------------------------------
.text:00411023                 jmp     loc_414243
.text:00411028
.text:00411028 ; =============== S U B R O U T I N E =======================================
.text:00411028
.text:00411028 ; Attributes: thunk
.text:00411028
.text:00411028 sub_411028      proc near               ; CODE XREF: start_0-18Ap
.text:00411028                 jmp     sub_41672F
.text:00411028 sub_411028      endp

イダプロで分解

  1. 文字列のおかげで最終的にプログラムを見つけましたが、誰かが暗号化された文字列などでcracksmeを作成した場合、どうすればcracksme自体の開始を見つけることができるでしょうか?

  2. 私はチュートリアルを見ましたが、プログラムのソースコードがIDA Proの上部にあるのを見ました(逆アセンブルが始まる場所のように)。チュートリアルを見たときにどこから始めればよいかわかりませんでした。別の結果を見たからです(より多くのコード)。では、10000 行のコードではなく、プログラムのソース コードだけをどのように使用できるのでしょうか。

4

3 に答える 3

0

何が起こっているのかを理解し、アセンブリを学ぶために、別のアーキテクチャ ( AVR アセンブラーの "hello world" コードを通過する)について関連する質問をしました。

コメントは、プログラムが開始される前に、さまざまなアーキテクチャーで動作するようにコンパイラーによって多くのことが追加されていることを示唆しています。私の場合、割り当てられたRAMをゼロにし、割り込みなどを初期化します。AVR はマイクロコントローラーであるため、初期化ははるかに少なくなりますが、Windows で実行される C++ プログラムでは、より多くの初期化が必要になると思います。

于 2013-10-01T11:22:23.003 に答える
0

コンパイルされたコードに沿って表示されるのは、C ランタイムのプロローグとエピローグです。これは、プログラムの前後に実行され、ストリームを開いたり閉じたり、いくつかの構造やパラメーター ( argc/argvメインパラメーターなど) を準備したりするコードです。

これらのソース (c とアセンブリ コードの両方で構成される) は、たとえばc:\Program Files\Microsoft Visual Studio 8\VC\crt\src\(MSVC2005 の場合) で確認できます。Visual Studio のインストール時にランタイム ソース コンポーネントを確認する必要がある場合があります。

于 2013-10-01T10:57:34.427 に答える