当前位置:首页 > C语言与汇编语言对照分析
精选文档
游戏通常会包含各种各样的功能,如战斗系统、UI渲染、经济系统、生产系统等,每个系统又包含各式各样子功能,如伤害判定、施法、使用道具、角色移动、玩家之间交易等等。这些游戏功能在代码实现中往往少不了条件判断(如伤害判定)、循环(遍历物品列表,播放游戏动画)等。
在逆向过程中如果可以从汇编语言识别出对应的语法结构,在分析过程中将汇编代码转换为C语言语法结构,可以帮助对程序执行流程的理解。
下面分别介绍最常见的逻辑语法结构:
a) if...else b) switch...case c) for、while
注:文中使用的反汇编工具为IDA
一、 if...else
精选文档
汇编代码:
精选文档
if...else结构比较固定,通常包含cmp指令、jcc指令以及满足条件后执行的指令块。
if...else结构可以串联,串联后的if...else有明显的代码块边界,逆向工具通常可以将代码块标识出来(图中虚线)。
二、 switch...case
1. 一个简单switch...case
精选文档
汇编代码:
上图显示了switch...case基本的结构:a) 跳转表达式;b) 分支代码;c) 跳转表 a) 跳转表达式
其中loc_401235代码块对应switch...case中default分支。
当nGameEvent > 4时,跳转到loc_401235代码块,即default分支。 当nGameEvent <= 4时,根据跳转表达式进行跳转:
共分享92篇相关文档