静态技术调试实验
了解静态调试技术
实验内容
• 1.按照实验指导书的内容,练习IDA PRO的使用。
• 2.完成35.exe的逆向,并给出逆向后的代码。
实验过程
1,按照实验指导书 选择相应的选项,
2,选择找到相应的地址
3,找到main函数
4,切换到汇编代码,右键,点击text view查看相应的汇编代码 点击View按钮,再点击Open subviews里面的Strings能罗列出程序所用的字符串 要把“a”改成“n”
记住此时的00403003位置
5,用UltraEdit直接打开程序文件,找到了UltraEdit的对应位置 现在我们要把“a > 0”改成“n > 0”,a对应的ASCII码是61,而n对应的ASCII码是6E,只需把61改成6E就可以了,修改后保存
1,按照实验指导书打开IDEAX68打开程序
2.通过汇编编译成C语言程序
在这里插入代码片
#include <iostream>
#include<Windows.h>
BOOL start() {
HANDLE v0;
int v1;
unsigned __int8 dd[32];
unsigned __int8 xx[] = { 0x1f,0x08,0x13,0x13,0x04,0x22,0x0E,0x11,
0x4D,0x0D,0x18,0x3D,0x1B,0x11,0x1C,0x0F,
0x18,0x50,0x12,0x13,0x53,0x1E,0x12,0x10 };
HANDLE hFile; // [sp+8h] [bp-8h]@1
DWORD NumberOfBytesWritten; // [sp+Ch] [bp-4h]@1
v0 = GetStdHandle(STD_INPUT_HANDLE);
hFile = GetStdHandle(STD_OUTPUT_HANDLE);
WriteFile(hFile, "Let's start out easy,Enter the password > ", 0x2Au, &NumberOfBytesWritten, 0);
ReadFile(v0, dd, 0x32u, &NumberOfBytesWritten, 0);
v1 = 0;
while (((unsigned __int8)dd[v1] ^ 0x7D) == xx[v1])
{
if (++v1 >= 24)
return WriteFile(hFile, "You are success", 0x12u, &NumberOfBytesWritten, 0);
}
return WriteFile(hFile, "You are failure ", 0x12u, &NumberOfBytesWritten, 0);
}
int main()
{
start();
return 0;
}
3,输出结果