C语言学习知识与汇编语言学习知识对照分析.doc
《C语言学习知识与汇编语言学习知识对照分析.doc》由会员分享,可在线阅读,更多相关《C语言学习知识与汇编语言学习知识对照分析.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-*游戏通常会包含各种各样的功能,如战斗系统、UI渲染、经济系统、生产系统等,每个系统又包含各式各样子功能,如伤害判定、施法、使用道具、角色移动、玩家之间交易等等。这些游戏功能在代码实现中往往少不了条件判断(如伤害判定)、循环(遍历物品列表,播放游戏动画)等。 在逆向过程中如果可以从汇编语言识别出对应的语法结构,在分析过程中将汇编代码转换为C语言语法结构,可以帮助对程序执行流程的理解。下面分别介绍最常见的逻辑语法结构:a)if.elseb)switch.casec)for、while注:文中使用的反汇编工具为IDA一、if.else汇编代码:if.else结构比较固定,通常包含cmp指令、jc
2、c指令以及满足条件后执行的指令块。if.else结构可以串联,串联后的if.else有明显的代码块边界,逆向工具通常可以将代码块标识出来(图中虚线)。二、switch.case1.一个简单switch.case汇编代码:上图显示了switch.case基本的结构:a)跳转表达式;b)分支代码;c)跳转表a)跳转表达式其中loc_401235代码块对应switch.case中default分支。当nGameEvent4时,跳转到loc_401235代码块,即default分支。当nGameEvent=4时,根据跳转表达式进行跳转:jmpds:off_40123CnGameEvent*4其中off
3、_40123C为跳转表地址,跳转表中每一项代表一个32位地址(4个字节),当nGameEvent为0按第一项地址跳转,当nGameEvent为1按第二项地址跳转,依次类推。b)分支代码各个分支的处理逻辑都在这里,示例代码中仅仅简单的调用对应函数。(PS:这里用jmp而不用call是编译器优化的结果)c)跳转表跳转表实际是一个地址数组,存放了每个跳转分支的地址(32位绝对地址),当nGameEvent为0时,跳转表达式读取数组中第一项数据(0x0040121C),即.text:0040121CE98FFFFF+jmp?DoLoginYAXXZ调用DoLogin函数。(PS:实际运行时,由于随机化
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学习 知识 汇编语言 对照 对比 比照 分析
限制150内