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

游戏通常会包含各种各样的功能,如战斗系统、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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值