`
yiyeqinghuasoon
  • 浏览: 644501 次
文章分类
社区版块
存档分类
最新评论

菜鸟学反汇编4—cin

 
阅读更多

#include<iostream><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

#include<iostream>

#include<iostream>

#include<iostream>

using namespace std;

using namespace std;

using namespace std;

using namespace std;

int main()

int main()

int main()

int main()

{

{

{

{

int i;

int i;

int i;

int i;

char c;

char c;

char c;

double d;

double d;

float f;

cin>>i>>c>>d>>f;

cin>>i>>c>>d;

cin>>i>>c;

cin>>i>;

cout<<i<<c<<d<<f;

cout<<i<<c<<d;

cout<<i<<c;

cout<<i;

return 0;

return 0;

return 0;

return 0;

}

}

}

}

var_20= qword ptr -20h

var_18= dword ptr -18h

var_11= byte ptr -11h

var_1C= qword ptr -1Ch

var_10= qword ptr -10h

var_11= byte ptr -11h

var_8= dword ptr -8

var_10= qword ptr -10h

var_5= byte ptr -5

var_4= dword ptr -4

var_4= dword ptr -4

var_4= dword ptr -4

var_4= dword ptr -4

argc= dword ptr 8

argc= dword ptr 8

argc= dword ptr 8

argc= dword ptr 8

argv= dword ptr 0Ch

argv= dword ptr 0Ch

argv= dword ptr 0Ch

argv= dword ptr 0Ch

envp= dword ptr 10h

envp= dword ptr 10h

envp= dword ptr 10h

envp= dword ptr 10h

push ebp

push ebp

push ebp

push ebp

mov ebp, esp

mov ebp, esp

mov ebp, esp

mov ebp, esp

sub esp, 14h

sub esp, 14h

sub esp, 8

push ecx

lea eax, [ebp+var_8]

push eax

lea ecx, [ebp+var_10]

lea eax, [ebp+var_10]

push ecx

push eax

lea edx, [ebp+var_11]

lea ecx, [ebp+var_11]

lea eax, [ebp+var_5]

push edx

push ecx

push eax

lea eax, [ebp+var_4]

lea edx, [ebp+var_4]

lea ecx, [ebp+var_4]

lea eax, [ebp+var_4]

push eax

push edx

push ecx

push eax

mov ecx, offset dword_426AD4

mov ecx, offset dword_425AD4

mov ecx, offset dword_424AB4

mov ecx, offset dword_424AB4

call sub_401790

call sub_4015D0

call sub_401420

call sub_401400

push eax

push eax

push eax

call sub_403C80

call sub_4038E0

call sub_4034C0

add esp, 8

add esp, 8

add esp, 8

mov ecx, eax

mov ecx, eax

call sub_401B10

call sub_4017C0

mov ecx, eax

call sub_401980

push ecx ; float

fld [ebp+var_8]

fstp [esp+18h+var_18]

sub esp, 8

sub esp, 8

fld [ebp+var_10]

fld [ebp+var_10]

fstp [esp+20h+var_20]

fstp [esp+1Ch+var_1C]

mov cl, [ebp+var_11]

mov al, [ebp+var_11]

mov dl, [ebp+var_5]

push ecx

push eax

push edx

mov edx, [ebp+var_4]

mov ecx, [ebp+var_4]

mov eax, [ebp+var_4]

mov ecx, [ebp+var_4]

push edx

push ecx

push eax

push ecx

mov ecx, offset unk_426A40

mov ecx, offset unk_425A40

mov ecx, offset unk_424A20

mov ecx, offset unk_424A20

call sub_401080

call sub_401060

call sub_401050

call sub_401030

push eax

push eax

push eax

call sub_403DC0

call sub_403A20

call sub_403600

add esp, 8

add esp, 8

add esp, 8

mov ecx, eax

mov ecx, eax

call sub_401580

call sub_4013C0

mov ecx, eax

call sub_4013E0

xor eax, eax

xor eax, eax

xor eax, eax

xor eax, eax

mov esp, ebp

mov esp, ebp

mov esp, ebp

mov esp, ebp

pop ebp

pop ebp

pop ebp

pop ebp

retn

retn

retn

retn

反思:

可以发现其中有部分在主体中的堆栈是不平衡的,如果跟进去会发现retn 4。有些函数是在函数内部实现堆栈平衡的。这段代码可以发现很多东西。要好好仔细研读(各种类型的数在文件中的存放方式)。cout输出char型和其他类型的汇编代码好像有区别。

下步:

比较cout输出变量和常量的区别。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics