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

用ida pro拆机

  1. 由于字符串,我最终确实找到了我的程序,但是如果有人用加密字符串等制作了一个crackme怎么办?我怎么能找到crackme本身的开始?

  2. 我确实查看了教程,我看到程序源代码位于 IDA Pro 的顶部(例如反汇编开始的位置。所以当我查看教程时我不知道从哪里开始,因为我看到了不同的结果(更多代码)。 ,那怎么可能只有程序源代码。而不包括10000行代码。???

4

3 回答 3

0

你看到的是编译器代码(当我第一次开始逆向工程时,我对它的数量感到惊讶)。将有一个函数(IDA 可能识别也可能不识别)称为WinMain. 那是用户代码将开始的地方。较新版本的 IDA 非常擅长识别编译器代码。

事实是,逆向程序越多,您就越熟悉编译器代码。很快你就可以跳过它直接进入 WinMain。坚持下去,不要太沮丧:)

于 2013-09-27T19:06:09.720 回答
0

我问了一个关于不同架构的相关问题(通过 AVR 汇编器“hello world”代码)以了解正在发生的事情并学习汇编。

评论表明,在程序启动之前,编译器会添加很多内容,以便它可以在不同的体系结构上工作。在我的情况下,它将分配的内存归零并初始化中断和类似的东西。AVR 是一个微控制器,因此初始化要少得多,但我想对于在 Windows 上运行的 C++ 程序,必须初始化更多的东西。

于 2013-10-01T11:22:23.003 回答
0

您在编译代码中看到的是 C 运行时序言和结尾。那是在你的程序之前和之后执行的一些代码,用于打开/关闭流,准备一些结构和参数(如argc/ argvmain 参数)等等。

您可以看到这些(包含在 c 和汇编代码中)的源代码,例如c:\Program Files\Microsoft Visual Studio 8\VC\crt\src\(对于 MSVC2005)。它可能需要在安装 Visual Studio 时检查运行时源组件。

于 2013-10-01T10:57:34.427 回答