C语言与汇编语言。
汇编 & C
Buffer.c:
#include
#include
int n,ip=0,op=0;
char buf[16],chr;
bool oq(char bufo[],int &opo,char &chro)
{
if(n==0)
return false;
else
{
chro=bufo[opo];
opo++;
n--;
return true;
}
}
bool iq(char bufi[],int &ipi,char &chri)
{
if(n==16)
return false;
else
{
bufi[ipi]=chri;
ipi++;
n++;
return true;
}
}
int main()
{
n=0;
char cho, a;
printf("请选择:0 退出程序;- 输出一个字符;其它字符 进入队列\n");
scanf("%c",&cho);
while(cho!='0')
{
scanf("%c", &a);
if(cho=='-')
{
if (oq(buf,op,chr)!=0)
printf("提取的元素是:%c\n", chr);
else
{
printf("Empty!!\n");
}
}
else
{
printf("插入的元素是:\n");
scanf("%c",&chr);
scanf("%c", &a);
if((chr >= 'a' && chr <= 'z' )|| (chr >= 'A' && chr <= 'Z'))
{
if(iq(buf,ip,chr)==0)
{
printf("Full!!\n");
}
}
}
printf("请选择:\n");
scanf("%c",&cho);
}
return 0;
}
部分反汇编:
int main()
{
010F10E0 push ebp
010F10E1 mov ebp,esp
010F10E3 sub esp,2Ch
010F10E6 push esi
010F10E7 push edi
010F10E8 lea edi,[ebp-2Ch]
010F10EB mov ecx,0Bh
010F10F0 mov eax,0CCCCCCCCh
010F10F5 rep stos dword ptr es:[edi]
010F10F7 mov eax,dword ptr [___security_cookie (10F703Ch)]
010F10FC xor eax,ebp
010F10FE mov dword ptr [ebp-4],eax
char badstr[]="000011112222333344445555";
010F1101 mov ecx,6
010F1106 mov esi,offset ___security_cookie-24h (10F7018h)
010F110B lea edi,[ebp-24h]
010F110E rep movs dword ptr es:[edi],dword ptr [esi]
010F1110 movs byte ptr es: