R4ndom 逆向系列教程

第一个工程

创建第一个工程

让我们创建第一个 Windows 程序。 选择New Project打开新工程向导:

工程向导

汇编器下拉列表框包含安装的所有语言,这里仅选择Masm

设置不同的工程类型,允许 RadASM 预编译一些文件。例如,如果选择Dll Project,创建的文件将有助于设置 DLL 导出函数。 这里我们选择Win32 App

输入工程名称,如HelloWorld,其他区域保持为空。 单击Next,进入模板选择:

模版选择

模板允许你预设文件的代码。 RadASM 提供了几个 Win32 应用模板,你也可自定义模板。 这里选择DialogApp.tpl模板。单击Next,进入文件和文件夹设置:

文件和文件夹设置

保持不变,选择Next,进入编译选项:

编译选项

允许更改命令行选项,调试器,以及Make菜单中显示的选项。 保持不变,单击Finish。 RadASM 将创建以下文件:

工程浏览

让我们看看 RadASM 创建的文件吧。首先,双击HelloWorld.Asm文件,在主窗口中打开代码:

代码窗口显示

如你所见,RadASM 创建一个框架应用。下面查看HelloWorld.Inc文件:

查看 Inc 文件

现在来看看HelloWorld.rc文件:

查看 Rc 文件

最后,双击HelloWorld.dlg文件,打开对话框编辑器:

对话框编辑器

现在让我们运行该程序。你可以分步构建目标(如汇编、链接、运行),也可以一步完成。 单击Go汇编、链接并运行程序。Run可运行已编译的程序。 只要更改资源文件就必须选择 Compile Resource 重编译程序,当然,单击Go将自动完成这些。

选择Go或单击工具栏按钮,如果弹出对话框询问是否接受命令,选中Don't ask again并单击OK,我们的对话框应用将显示出来:

我们的程序

创建控件

让我们在对话框上添加一些按钮和位图。首先我们来添加按钮。双击HelloWorld.dlg文件,打开对话框编辑器。然后在左侧工具栏中单击按钮工具,接着在对话框上点击并拖动按钮,将其布置在左下角位置:

通过工具栏添加按钮

RadASM 将自动命名该按钮为 IDC_BTN。现在更改按钮的属性,高亮按钮,在主窗口右侧可看到属性栏:

按钮的属性

更改CaptionMultiLine属性,将看到按钮文字的变化:

按钮文字更改

现在,以同样方法添加另一个按钮,设置其属性:

按钮的属性

如果编译运行,将看到新的对话框:

更新的对话框

下面添加一些图片。类似其他 Windows 应用,我们必须将位图作为资源载入。 单击Project → Resources菜单,打开资源导入界面。 单击Add按钮,并将信息填充完整。请将位图复制到工程的 Res 目录。

添加工程资源

注意,这里将位图命名为IDB_BITMAP1IDB_BITMAP2。我们将在之后引用其 ID。

选择图像工具,点击并拖动至对话框:

添加图像控件

现在我们需要更改图像的属性。这里,图像 ID 设为 105。更改名称以匹配资源名称IDB_BITMAP1。添加边框,更改宽度和高度以匹配其实际大小。将类型由Icon更改为Bitmap

图像的属性

图像将显示在对话框中。以同样方式添加另一个按钮IDB_BITMAP2并更改其属性:

图像的属性

编译并运行:

添加图像后的对话框

现在需要添加代码,处理按钮的点击事件。

首先需要为两个按钮添加消息处理器,实现单击按钮时显示一个消息框。 在主窗口载入HelloWorld.Asm文件,添加以下代码:

消息处理器

注意eax与按钮的 ID 进行比较。

现在在HelloWorld.Asm添加文本字符串:

添加文本字符串

最后,需要在HelloWorld.Inc文件中为按钮添加 ID:

添加按钮 ID

编译运行:

我们最终应用