C系列编程语言(C、C++)是应用最广泛的一类编程语言,并且无疑是Windows和Unix服务器程序使用最多的编程语言,而这两类应用程序正是逆向分析的主要对象,因此掌握C语言对于逆向分析而言至关重要。
除了了解C语言以外,我们还应用熟悉C语言如何编译为对应的汇编指令,并理解如何用汇编的形式表示C变量、指针、函数和内存分配等。
先看一下怎么在C++里声明一个用于计数的整数
int number;
...more code...
number++;
对应的汇编代码是:
number dw 0
。。。more code。。。
mov eax,number
inc eax
mov number,eax
在这里的例子里,先用DW指令定义整数number,接着把它放入EAX,并把EAX加1,然后把EAX重新放入number。
再来看一个简单的C++ if语句。
int number;
if (number<0)
{
...more...
}
下面是这个if语句对应的汇编代码
number dw 0
mov eax,number
or eax,eax
jge label
<no>
label :<yes>
在这个例子里,我们用DW指令定义number,然后把存储在number中的值移入EAX,如果number大于或等于0,执行JGE跳到lable。
接下来看一个使用数组的例子。
int array[4];
...more code...
array[2]=9;
在这个例子中定义一个有4个元素的数组array,并把其中的一个元素设为9,相应的汇编代码如下:
array dw 0,0,0,0
...more code...
mov ebx,2
mov array[ebx],9
这个例子中,我们声明了一个数组,然后通过EBX把9转移到数组中。
原文链接: https://www.cnblogs.com/pd520/archive/2013/02/12/2910230.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/77869
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!