后面打算记录一下逆向识别的学习过程,也就是把每个C语言中的基础关键点都反汇编,然后对比观察。虽然说这里的每一步都是很简单,但是就算简单也还是得看,毕竟每个程序都是由这些一个个简单的点组合而成,当进行反汇编还原时,也就是将反汇编一点点拆分成这若干块的小知识点。
好了,首先看最基础的四则运算,也就是加减乘除,当然这篇博客并不包括除,除法的话下面博客再记录吧(因为优化有些复杂了,怕篇幅过长)。
首先对于最简单的运算来说,就是不包括一些复杂混合运算,大体上分应该就以下几种
变量?常量
常量?常量
变量?变量
首先来看一下加的情况
int main(int argc, char* argv[])
{
int nValueOne = 5;
int nValueTwo = 6;
nValueOne + nValueTwo; //无效语句
nValueOne = nValueTwo + 2; //变量+常量
nValueOne = 5 + 6; //常量+常量
nValueTwo = argc + nValueTwo; //变量+变量
printf("%d %d",nValueOne,nValueTwo);
return 0;
}
那么首先来观察一下Debug的情况
mov dword ptr [ebp-4],5
mov dword ptr [ebp-8],6
//nValueOne = nValueTwo + 2;
mov eax,dword ptr [ebp-8]
add eax,2
mov dword ptr [ebp-4],eax
//nValueOne = 5