week1
VC使用
下载visual studio 2022 https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=Community&channel=Release&version=VS2022&source=VSLandingPage&cid=2030&passive=false
安装教程: Visual Studio 2022最新版安装教程(数千字图文详解),一步步教会你如何安装并运行VS2022(+背景图设置)_流苏的博客-CSDN博客_vs安装教程
大概就是他这个过程,中间注意文件尽量别放在C盘
新建项目
选择c++下的控制台应用
写好代码后使用上方的本地Windows调试器
断点后可以调试,打开多种窗口如内存、反汇编、寄存器等如下
我们可以对反汇编中的代码进行分析,搞清底层的代码实现思路
下面我尝试学习下反汇编里的代码解释
c代码如下
#include<stdio.h>
int main() {
int a = 16;
printf("a = %d\n", a);
return 0;
}
反汇编部分截取关键:
- mov dword ptr [a],10h:将16进制形式的16赋给双字变量a
- mov eax,dword ptr [a]:将a的值mov入eax通用寄存器中,eax表示32位寄存器,属于x86中的
- push eax:入栈
- push offset string "a = %dn" (0737B30h):offset是属性操作符,表示应该把其后跟着的符号地址的值(不是内容)作为操作数,这里大概就是将我们c代码中的printf里的内容入栈
- call _printf (07310CDh):调用C语言中的printf函数输出内容
借助反汇编中的数值查找内存中的字符串
UltraEdit使用
一款很强大的编辑器,win、max、linux皆可,且关键是可以编辑exe文件
这里我们使用查找替换来直接更改exe文件的输出,一定记得要搜的字符串得加上查询ascii的条件
ctrl+R替换
保存后cmd检查下,修改成功!