转自:http://www.itqun.net/content-detail/159814.html
汇编代码对应的高级语言分析
该程序使用c++编写
0053C9C0是一个对象指针
0053C9C4也是一个对象指针
mov ecx, xxxxxxxx
call xxxxxxx 这种形式一般都是调用成员函数,没有重载的非虚函数
mov ecx,aaaaaaaaaa
mov eax,[ecx]
call [eax+xxxxx] 一般是调用重载过的函数,因为要取虚函数表
如果发现
call [reg+xxxx] 前面的那个ecx不等于对象地址,或者对象地址压栈,则极可能是调用类的静态虚函数。
cmp ?,imm
ja xxxxxxxxxx
sub ?,imm
jmp [xxxxxxxx+?*4] 顺序数的switch,xxxxxx一般在函数后面的不远处 ja 跳转的地址是default
mov [ebp-xxx],imm
jmp xxxxxxxx
zzzzzzzzzz .....calc with [ebp-xxx]
cmp [ebp-xxx],imm (reg or param or localvar )
jge/je/..... yyyyyyyyy
xxxxxxxx some codes
表示 for([ebp-xxx]=imm;条件(取决于比较和跳转);每次循环执行的操作(取决于calc)){}
后面的花括号在yyyyyyyyy的上一句,是一个jmp回zzzzzzzzzz的语句。
xxxxxxxxx cmp var,var
跳转 yyyyyyyyyy
somecode
jmp xxxxxxxxx
yyyyyyyyyy some codes
while(){}的汇编形式
cmp
跳转 a1
cmp
跳转 a2
a1:somecodes
a2:somecodes
a3:
if( s1 || s2 )a1;
如果a1结束是
jmp a3
则
if(s1||s2)a1 else a2;
如果 两个或者多个条件跳转到另外的地址,而不是最后的条件下面的地址就是 && 连接条件。
详细出处参考:http://www.itqun.net/content-detail/159814.html
分享到:
相关推荐
例如,在某些需要高速运算或硬件控制的场合,开发者可能会在高级语言程序中嵌入一小段汇编代码,以达到最佳性能。 总的来说,高级语言提高了编程效率,降低了学习成本,适合大部分应用程序开发;汇编语言则提供了对...
让我们深入探讨这三大类计算机语言:机器语言、汇编语言以及高级语言。 **机器语言**是计算机能够直接理解和执行的语言,由二进制代码(0和1)组成。这种语言与硬件紧密相连,每个指令都对应着计算机内部特定的电路...
《汇编代码转易语言 4.0》是一款专门针对编程者设计的工具,它能够将汇编语言代码转换为易语言代码,使得用户可以直接在易语言环境中使用这些转换后的代码,大大简化了编程过程,提高了开发效率。下面将详细阐述汇编...
7. **汇编与高级语言的交互**:通常,汇编语言会与C/C++等高级语言结合使用,用于编写性能关键的代码段,如启动代码、设备驱动或算法优化。 8. **调试技巧**:学会使用汇编级别的调试工具,如GDB,能帮助你更深入地...
- **使用调试工具**:如OllyDbg、GDB等,帮助分析汇编代码运行时的行为。 - **代码分析**:通过阅读和理解汇编代码,找出程序中的错误或优化点。 8. **汇编语言的学习路径**: - **基础语法**:熟悉基本指令、伪...
6. **汇编与高级语言的交互**:在实际应用中,汇编往往与C/C++等高级语言混合使用,了解如何在高级语言中嵌入汇编代码,或者用汇编编写特定的高效模块。 7. **调试与分析**:学会使用调试工具,如GDB,来调试汇编...
汇编语言是计算机科学的基础,它是一种低级编程语言,直接对应于机器指令,因此理解和编写汇编代码能帮助我们更深入地理解计算机的工作原理。 汇编语言的学习主要包括以下几个方面: 1. **基本概念**:了解汇编...
编写汇编代码需要对计算机体系结构有深入的理解,包括CPU的工作方式、内存模型以及指令的语法和用法。 在提供的文件`jishi.txt`中,可能包含了一个或多个汇编语言程序。这些程序可能涵盖了简单的算术运算、逻辑运算...
总的来说,"编译器-C代码生成汇编代码"是一个教育性和实践性的项目,它可以帮助开发者深入理解编译原理、C语言和汇编语言之间的关系,以及计算机如何执行高级语言的指令。通过这个项目,你可以扩展编译器的功能,...
汇编语言”作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM, TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象...
- **反病毒与安全研究**:理解和编写汇编代码有助于分析恶意软件行为、逆向工程及编写防病毒软件。 - **教学与理解计算机原理**:学习汇编语言有助于深入理解计算机体系结构、指令集、内存管理和硬件接口等基础概念...
汇编语言,作为计算机硬件与高级语言之间的桥梁,对于理解计算机工作原理和优化性能具有重要意义。 在学习汇编语言时,首先要理解其基本概念。汇编语言是一种低级编程语言,每一行代码都直接对应于计算机硬件的机器...
【AsmToE Ver 2.0】可能是该汇编代码转换器的最新版本,"E"可能代表"Equivalent"或"Executor",暗示它能够将汇编代码转换成可执行的高级语言代码或者与汇编代码功能等价的代码。版本2.0通常意味着软件经历了重大改进...
7. **调试与反汇编**:学习使用调试工具来分析和调试汇编程序,以及如何将已有的机器码转换成汇编代码。 8. **实际应用**:探讨汇编语言在系统编程、设备驱动、性能优化等领域的具体应用。 教程中的《汇编语言程序...
汇编语言是一种低级编程语言,它直接对应于计算机硬件的指令集,是计算机能够直接理解和执行的语言。在计算机科学中,汇编语言是连接高级编程语言和机器语言的桥梁,对于理解计算机底层工作原理至关重要。这个“汇编...
每一行汇编代码的基本结构包括:标号、指令或伪指令以及注释。标号用于标记代码或数据的位置,便于跳转或引用。指令执行具体的计算或操作,而伪指令则用于控制汇编过程,如定义数据、分配存储空间等。注释用于解释...
4. **程序结构**:虽然汇编语言没有高级语言那样丰富的控制结构,但依然有类似于循环(如DO-WHILE,FOR)、条件分支(IF-THEN-ELSE)和子程序(PROCEDURE或FUNCTION)的概念。理解这些结构有助于组织和编写更复杂的...
5. **汇编与高级语言交互**:如何在C/C++等高级语言中嵌入汇编代码,或者用汇编实现C/C++的函数。 6. **调试技术**:使用调试工具分析和调试汇编代码,例如使用GDB。 7. **可执行文件格式**:介绍PE(Windows)或...
5. **汇编与反汇编**:了解汇编过程(将高级语言转换为机器码)和反汇编过程(将机器码转换回汇编语言),这对于调试和分析程序至关重要。 6. **链接与加载**:讨论如何将多个汇编模块组合成一个可执行程序,以及...