1、编译一个hello程序
本机环境为ubuntu1604 64为例,通过以下命令编译64位程序
不建议通过gcc -m32 hello.cpp -o hello32在64位ubuntu中来生成32位程序
原因如下:(两次反编译时32位第一次反编译结果不能完全反编译)
ubuntu64.7z
gcc hello.cpp -o hello
#include<stdio.h>
int main()
{
printf("hello world");
return 0;
}
2、ubuntu中运行linux_server
如要调试的程序是64位,则在ubuntu系统中运行linux_server64,并且在物理机Windows系统中运行IDA PRO64
如要调试的程序是32位,则在ubuntu系统中运行linux_server,并且在物理机Windows系统中运行IDA PRO
(如果没有按照这个要求,可能会出现以下问题)
3、在windows中调试hello
以下时IDA PRO32位设置方式,IDA PRO64设置一样(用于调试ubuntu中的64位程序,需要在ubuntu中运行linux_server64)
打开远程linux调试选项
填写调试信息
F2是下断点,F7步入,F8步过,F9运行
4、反调试对比
32位和64位helloworld都是在ubuntu64 1604的环境下用gcc编译生成
5、32位ubuntu编译
ubuntu32.7z
通过与在64位ubuntu下编译的hello对比,虽然代码完全一样但是最终编译出来的样本还是不一样的