C++反汇编->加法分析

为了分析的简便,代码采用以下方式风格:

#include "iostream"

void main()
{
	int a,b;
	a=1;
	b=2;
	std::cout<<"Hello World"<<std::endl;
	std::cout<<"HHHHHHHHHHHH"<<std::endl;
	std::cout<<a+b<<std::endl;
	system("pause");
}

ollydeb分析如下:

地址               HEX数据                             反汇编                                                                    注释

00401570 > > \55                    PUSH EBP
00401571   .  8BEC                  MOV EBP,ESP
00401573   .  83EC 48               SUB ESP,48
00401576   .  53                    PUSH EBX
00401577   .  56                    PUSH ESI
00401578   .  57                    PUSH EDI
00401579   .  8D7D B8               LEA EDI,DWORD PTR SS:[EBP-48]
0040157C   .  B9 12000000           MOV ECX,12
00401581   .  B8 CCCCCCCC           MOV EAX,CCCCCCCC
00401586   .  F3:AB                 REP STOS DWORD PTR ES:[EDI]
00401588   .  C745 FC 01000000      MOV DWORD PTR SS:[EBP-4],1                  ;  将1赋值到a中
0040158F   .  C745 F8 02000000      MOV DWORD PTR SS:[EBP-8],2                  ;  将2赋值到b中
00401596   .  68 C8104000           PUSH test1.004010C8
0040159B   .  68 34004700           PUSH OFFSET test1.??_C@_0M@FEIK@Hello?5Worl>;  hello world
004015A0   .  68 A0DE4700           PUSH OFFSET test1.std::cout                 ;  std::cout函数
004015A5   .  E8 DBFCFFFF           CALL test1.00401285
004015AA   .  83C4 08               ADD ESP,8
004015AD   .  8BC8                  MOV ECX,EAX
004015AF   .  E8 2CFCFFFF           CALL test1.004011E0
004015B4   .  68 C8104000           PUSH test1.004010C8
004015B9   .  68 24004700           PUSH OFFSET test1.??_C@_0N@DPFC@HHHHHHHHHHH>;  hhhhhhhhhhhh
004015BE   .  68 A0DE4700           PUSH OFFSET test1.std::cout                 ;  std::cout函数
004015C3   .  E8 BDFCFFFF           CALL test1.00401285
004015C8   .  83C4 08               ADD ESP,8
004015CB   .  8BC8                  MOV ECX,EAX
004015CD   .  E8 0EFCFFFF           CALL test1.004011E0
004015D2   .  68 C8104000           PUSH test1.004010C8
004015D7   .  8B45 FC               MOV EAX,DWORD PTR SS:[EBP-4]                ;  存放变量a到EAX中
004015DA   .  0345 F8               ADD EAX,DWORD PTR SS:[EBP-8]                ;  执行加操作  将b变量的值加到EAX中
004015DD   .  50                    PUSH EAX
004015DE      B9                    DB B9
004015DF   .  A0DE4700              DD OFFSET test1.std::cout                   ;  std::out 输出相加后的数值
004015E3   .  E8 17FBFFFF           CALL test1.004010FF
004015E8   .  8BC8                  MOV ECX,EAX
004015EA   .  E8 F1FBFFFF           CALL test1.004011E0
004015EF   .  68 1C004700           PUSH OFFSET test1.??_C@_05PBCN@pause?$AA@   ; /pause
004015F4   .  E8 97F30100           CALL test1.system                           ; \system
004015F9   .  83C4 04               ADD ESP,4


C++反汇编->加法分析,布布扣,bubuko.com

C++反汇编->加法分析

上一篇:java异常中一个有趣的例子


下一篇:Java写xml文件的编码问题