游戏通常会包含各种各样的功能,如战斗系统、UI渲染、经济系统、生产系统等,每个系

统又包含各式各样子功能,如伤害判定、施法、使用道具、角色移动、玩家之间交易等 等。这些游戏功能在代码实现中往往少不了条件判断(如伤害判定)、循环(遍历物品列 表,播放游戏动画)等。

在逆向过程中如果可以从汇编语言识别出对应的语法结构,在分析过程中将汇编代

码转换为C语言语法结构,可以帮助对程序执行流程的理解。

下面分别介绍最常见的逻辑语法结构:

a)if...else

b)switch...case

c)for、while

注:文中使用的反汇编工具为IDA

一、if...else

_declspec(noirline) int IfFunction_e(int nlndex)

int nValue;

if (rtlndex == 1)

nValue - 9 } else if (nlndex — 2)

nValue = 0

}

else if (nlndrx == 3)

nVslue ? 0

}

else if (nlndex ■- 4)

nValue = 9x70000?&4;

)

else

{

nValue = 1W;

return nvalue;

汇编代码:

-NN

09*01270 ; int

u^ercJll iFrunctian 0@(Lnt n[ntf^xQ<?cx>)

.text

09*IM27e ? 1 fFunctiofl_aHSVftHH?7 proc OFdr: CDOE XRFf : rwin+S^p

.text

09J*Q127O nl皿M

■ ecu

.text

0BJIC127Q

enpnlndFX, 1

,text)nzshort loc 4S127B

,ttxt

0D4Q1275

mvFJXf 7O0DDQO1F1

,text

00*U127R

rttn

-text

,text -t函

OB40127B 00*?127B OD4D12?B

;CODE XRE F: IFFunct1QD 0(Int >?3Tj

-text

HD4H127B

enp

nlndf 2

-St

MD4V1??E

Jrw

short loe HO1?R6

,gt

l?U

71]

,C4*Xt

rein

Idc *0127B:

*trxt

,tPXt

* text

皿『MG 004012*6 她罹12"

*tPKt

enprtlndtxt 3

*text

jni?hort 1OC_*012Q1

? text

0DJIB12IIBnoueaxt 7D0DOO03F1

.text

。眄 nmre th

-text

0M?12Q1

.tvxt

00^01291 lac 4101291:

.tewt

004^1291tnpnlndex, 4

OBJ*0120*MV整AX. A?ih

?text

094^1299novedx? 7Q04QQ^h

.text

0B*V124ECMvf fax, Fdx

?tPXt

0^012A1rrtn

.text

Tirrunctiofl a@@YftHH@z endp

Idc U01286;

;£DDE XREF: 1Ffunction_B(int)?Etj

;CODE XREF: IFFunction a(int)>19tj

14^

14^

145

146

147

148

149

150

151

152

153

154

155

156

157

15E

159

160

161

162

163

164

165

166

167

1 AR

if...else结构比较固定,通常包含 cmp指令、jcc指令以及满足条件后执行的指令

块。

.text :fl0^i012F0cmpnlndex, 1

.text:004O12F3jnzshort loc_^912FB

.text:004O12F5moueax, 7如丽

.text:60ii012Ffiretn

if...else结构可以串联,串联后的if...else有明显的代码块边界,逆向工具通常

可以将代码块标识出来(图中虚线)。

.text:B04912FB nlntftK - ecx

一text: BBU012F&

.tFXt: 004012F fl ,text:0B4Q12FB .

.teit ;0Mt12FB

lot llOrUFa:

jnz nuu r?hth

nln<1ex r 1

short loc_hOt;tB JODflODOth

;CODE KRFF: IFFunctinn]

cmp

nIndex

c语言文件 w wt rrt,C语言与汇编语言对照分析.docx相关推荐

  1. c语言w加,C语言文件 w+与wb+区别

    这是我今天碰到的问题,现在已经解决, 希望我的整理能够帮助到你们! w+以纯文本方式读写,而wb+是以二进制方式进行读写. mode说明: w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会 ...

  2. c语言文件有什么作用,C语言文件的使用方法

    C语言文件的使用方法 C语言文件的使用方法:所谓"文件"是指一组相关数据的有序集合. 这个数据集有一个名称,叫做文件名. 实际上在前面的各章中我们已经多次使用了文件,例如源程序文件 ...

  3. c语言文件可用代码存放,C语言 文件(示例代码)

    小白一个,看到有错误,希望指出,万分感谢 /**************************************************************** C语言文件概述: 一般文件 ...

  4. c语言文件指针ab命令,C语言试题,~库(完整版~).doc

    -_ C语言试题库 单项选择 C语言概述 一个C程序的执行是从 A.本程序的MAIN函数开始,到MAIN 函数结束. B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束. C.本程序的MA ...

  5. C语言 文件读写 fputc 函数 - C语言零基础入门教程

    目录 一.fputc 函数简介 二.fputc 函数使用 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.fputc 函数简介 fpu ...

  6. C语言入门教程||C语言 文件读写||C语言 预处理器

    C语言 文件读写 本章我们将介绍 C 程序员如何创建.打开.关闭文本文件或二进制文件. 一个文件,无论它是文本文件还是二进制文件,都是代表了一系列的字节.C 语言不仅提供了访问顶层的函数,也提供了底层 ...

  7. C语言 文件读写 fputs 函数 - C语言零基础入门教程

    目录 一.fgets 函数简介 二.fgets 函数使用 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.fgets 函数简介 fge ...

  8. C语言 文件读写 fseek 函数 - C语言零基础入门教程

    目录 一.fseek 函数简介 二.fseek 函数实战 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.fseek 函数简介 fse ...

  9. C语言 文件读写 ferror 函数 - C语言零基础入门教程

    目录 一.ferror 函数简介 二.ferror 函数实战 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.ferror 函数简介 ...

最新文章

  1. 遍历系统中所有的进程,可根据名字或ID查找某一个线程
  2. docker 同时停止删除容器 强制删除容器
  3. UA MATH524 复变函数14 Laurent级数
  4. 一点等于多少厘米_马桶知识介绍,你了解马桶多少
  5. 为什么不用php做系统吗,IT行业:为什么大部分人都不认可php语言呢?
  6. 如何区别***工具与病毒
  7. lpc2000 filash utility 程序烧写工具_重点必看 | 取证小程序开发之第四届美亚杯硬盘信息快速解题...
  8. matlab2c使用c++实现matlab函数系列教程-tril函数
  9. 拓端tecdat|python3用ARIMA模型进行时间序列预测
  10. POJ 3233 Matrix Power Series(java)
  11. QT入门之UI设计界面
  12. 1010: 求圆的周长和面积 ZZULIOJ
  13. ios 打包 验证应用失败原因汇总
  14. 剁手党:过年想收快递!马云:照常送!最高补贴三千让快递员团圆
  15. React Api请求最佳实践react-query3使用教程(比swr更好用更强大)
  16. AEDA: An Easier Data Augmentation Technique for Text Classification
  17. 软件开发中会使用到的图
  18. 【其他】对数转换的作用
  19. 数字电路-03组合电路设计
  20. Java找到1-1000以内所有可以被3整除并可以被7整除的数。

热门文章

  1. 【项目管理】人力资源管理之一:X-Y理论
  2. 马克飞象特别版windows客户端
  3. 用马克飞象+ 印象笔记 快速方便写技术博客方法
  4. 个微号的二次开发,api开发
  5. php菲波那切数列,php实现菲波那切数列和杨辉三角
  6. MyCollector - 快捷采集器 :让你更方便的记录快乐
  7. 基于springboot火锅店管理系统
  8. 这些APP让你改善睡眠
  9. 从传统B/S架构的角度看微服务架构
  10. Html(JFIS)