C++反汇编-)类,结构体,命名空间分析(二)

2014-11-24 11:48:53 · 作者: · 浏览: 5
00 PUSH testname.004010C8 004015CD . 68 24004700 PUSH OFFSET testname. _C@_04HPCL@tip1 $>; tip1 004015D2 . 68 A8DE4700 PUSH OFFSET testname.std::cout 004015D7 . E8 AEFCFFFF CALL testname.0040128A 004015DC . 83C4 08 ADD ESP,8 004015DF . 8BC8 MOV ECX,EAX 004015E1 . E8 FFFBFFFF CALL testname.004011E5 004015E6 . C705 F8DD4700>MOV DWORD PTR DS:[name::i],0A ; name::i赋值 004015F0 . C705 FCDD4700>MOV DWORD PTR DS:[name::j],0C ; name::j赋值 004015FA . 68 C8104000 PUSH testname.004010C8 004015FF . A1 FCDD4700 MOV EAX,DWORD PTR DS:[name::j] ; 寄存器存入 OA 00401604 . 50 PUSH EAX 00401605 . 8B0D F8DD4700 MOV ECX,DWORD PTR DS:[name::i] ; 寄存器存入 0C 0040160B . 51 PUSH ECX 0040160C . E8 84FBFFFF CALL testname.00401195 ; 执行 name::add函数 00401611 . 83C4 08 ADD ESP,8 ; 栈平衡 00401614 . 50 PUSH EAX ; 输出EAX寄存器 00401615 . B9 A8DE4700 MOV ECX,OFFSET testname.std::cout 0040161A . E8 E0FAFFFF CALL testname.004010FF 0040161F . 8BC8 MOV ECX,EAX 00401621 . E8 BFFBFFFF CALL testname.004011E5 00401626 . 68 1C004700 PUSH OFFSET testname. _C@_05PBCN@pause >; /pause 0040162B . E8 90F30100 CALL testname.system ; \system 00401630 . 83C4 04 ADD ESP,4 00401633 . 5F POP EDI 00401634 . 5E POP ESI 00401635 . 5B POP EBX 00401636 . 83C4 40 ADD ESP,40 00401639 . 3BEC CMP EBP,ESP 0040163B . E8 90F40100 CALL testname.__chkesp 00401640 . 8BE5 MOV ESP,EBP 00401642 . 5D POP EBP 00401643 . C3 RETN
3.struct代码:

struct name 
{
	int i;
	int j;
	int add(int in1,int in2)
	{
		return in1+in2;
	}
};

void main()
{
	std::cout<<"tips";
	name n;
	n.i=10;
	n.j=12;
	std::cout<
      
       对应反汇编如下:
       

00401580 > > \55            PUSH EBP
00401581   .  8BEC          MOV EBP,ESP
00401583   .  83EC 48       SUB ESP,48
00401586   .  53            PUSH EBX
00401587   .  56            PUSH ESI
00401588   .  57            PUSH EDI
00401589   .  8D7D B8       LEA EDI,DWORD PTR SS:[EBP-48]
0040158C   .  B9 12000000   MOV ECX,12
00401591   .  B8 CCCCCCCC   MOV EAX,CCCCCCCC
00401596   .  F3:AB         REP STOS DWORD PTR ES:[EDI]
00401598   .  68 24004700   PUSH OFFSET teststru.  _C@_04IPMF@tips $>;  tips
0040159D   .  68 A0DE4700   PUSH OFFSET teststru.std::cout
004015A2   .  E8 E3FCFFFF   CALL teststru.0040128A
004015A7   .  83C4 08       ADD ESP,8
004015AA   .  C745 F8 0A000>MOV DWORD PTR SS:[EBP-8],0A
004015B1   .  C745 FC 0C000>MOV DWORD PTR SS:[EBP-4],0C
004015B8   .  68 C8104000   PUSH teststru.004010C8
004015BD   .  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
004015C0   .  50            PUSH EAX
004015C1   .  8B4D F8       MOV ECX,DWORD PTR SS:[EBP-8]
004015C4   .  51            PUSH ECX
004015C5   .  8D4D F8       LEA ECX,DWORD PTR SS:[EBP-8]
004015C8   .  E8 27FCFFFF   CALL teststru.004011F4
004015CD   .  50            PUSH EAX
004015CE   .  B9 A0DE4700   MOV ECX,OFFSET teststru.std::cout
004015D3   .  E8 27FBFFFF   CALL teststru.004010FF
004015D8   .  8BC8          MOV ECX,EAX
004015DA   .  E8 01FCFFFF   CALL teststru.004011E0
004015DF   .  68 1C004700   PUSH OFFSET teststru.  _C@_05PBCN@pause >; /pause
004015E4   .  E8 C7F30100   CALL teststru.system                     ; \system
004015E9   .  83C4 04       ADD ESP,4
004015EC   .  5F            POP EDI
004015ED   .  5E            POP ESI
004015EE   .  5B            POP EBX
004015EF   .  83C4 48       ADD ESP,48
004015F2   .  3BEC          CMP EBP,ESP
004015F4   .  E8 C7F40100   CALL teststru.__chkesp
004015F9   .  8BE5          MOV ESP,EBP
004015FB   .  5D            POP EBP
004015FC   .  C3            RETN
004015FD      CC            INT3
004015FE      CC            INT3
004015FF      CC            INT3
00401600      CC            INT3
00401601      CC            INT3
00401602      CC            INT3
00401603      CC            INT3
00401604      CC            INT3
00401605      CC            INT3
00401606      CC            INT3
00401607      CC            INT3
00401608      CC            INT3
00401609      CC            INT3
0040160A      CC            INT3
0040160B      CC            INT3
0040160C      CC            INT3
0040160D      CC            INT3
0040160E      CC            INT3
0040160F      CC            INT3
00401610      CC            INT3
00401611      CC            INT3
00401612      CC            INT3
00401613      CC            INT3
00401614      CC            INT3
00401615      CC            INT3
00401616      CC            INT3