妖精
 
- UID
- 19808
- 精华
- 1
- 积分
- 332
- 威望
- 0 度
|
阁楼
大 中
小 发表于 2010-3-23 22:56 只看该作者
gmsv内部函数研究号召帖
一个人看gmsv看得好晕,还好gmsv内部各个函数的命名都是有规则和规范的,但是我一个人的力量毕竟很小
6 @) b' R8 n: N% o5 L5 y0 w—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2 N- h% i! G! j0 w" l6 d
在此号召各位稍微有点汇编基础或者没有汇编基础又愿意学习汇编或者愿意深入了解gmsv内部的四面八方的研究同仁
4 X3 Z: j' Y: S—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートbbs.mocwww.com; Q4 V8 ?- ?% C
我们一起来研究gmsv内部的函数吧!只要了解好了gmsv内部函数的运行机制,即入口参数,出口参数等等诸多内容以后妖城在线论坛) I* ?6 ^& m' J" N* l* z8 H
7 \. R0 W) g" X0 V% |& Q我们就有可能修改gmsv来创造出更好的东西!大家一起研究的话我觉得进步会快很多!
+ G. L8 s8 g% p) _bbs.mocwww.com—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" B+ C9 `! z, O# b. Q
为抛砖引玉,我从IDA里面复制出一个示范的函数分析。期待大家无私奉献!!!妖城在线论坛3 v3 Y( N$ S/ G# [/ V; d7 Y
; w- k: [) h3 K妖城在线论坛同时希望将此贴置顶?……& Z* w4 W$ x" z5 j8 m# }5 Y& {
9 N1 X$ S, }; B9 h, A7 p注:需使用到 反汇编工具IDA—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 I) |$ T# B8 d2 ?
妖城在线论坛( r: @3 B9 F$ k4 t# n$ B, _
.text:08074098 ; =============== S U B R O U T I N E =======================================9 }7 C9 q* V& M) j3 B( C( y3 M
.text:08074098
- ~+ W+ D: q$ T( y G& N8 y妖城在线论坛.text:08074098 ; Attributes: bp-based frame
. t; t( E& j# l4 l/ {1 _ S魔力私服,最新魔力宝贝私服技术交流.text:08074098魔力私服,最新魔力宝贝私服技术交流* Z: c" W* a( G# E5 @# n
.text:08074098 public CHAR_GetLevelExp
5 \- X0 ^$ c$ w c- Y, ~0 o# N—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074098 CHAR_GetLevelExp proc near ; CODE XREF: CHAR_LevelUpCheck+42p5 o2 U2 \+ S( t$ }5 ~
.text:08074098 ; CHAR_make_CP_String+517p
+ S$ P. R2 `1 f/ i( v- u3 ~魔力私服,最新魔力宝贝私服技术交流.text:08074098 ; CHAR_make_KP_String+5AAp
- g8 t% Y# Z8 U+ q3 F1 h魔力私服,最新魔力宝贝私服技术交流.text:08074098 ; PET_createPetFromCharaIndex+1BEp—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート/ f* `+ O4 s( z7 q$ C# Y& G
.text:08074098 ; BATTLE_AttackEnergyDrain+1E1p
; `$ z) x+ W3 V6 l3 c* g U—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074098 ;这里是交叉参考,就是引用该函数的"上级"函数,暂时可以不用管,但是可以从这上面的函数看到入口参数
- N0 R7 ?% ]$ w8 \—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074098 arg_0 = dword ptr 8
: d1 G1 V! K* S& Q—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074098
, }/ s& S( ^8 C+ O" Y) J妖城在线论坛.text:08074098 push ebp ; 函数功能:
2 d+ D. B- I5 z2 ?0 S' {魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:08074098 ; 取得人物或者宠物下一级的升级经验值bbs.mocwww.com4 s9 w+ u$ \) s. \8 U' ~
.text:08074098 ; 入口参数:等级值魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表# p& ~' E( h$ j8 @4 \
.text:08074098 ; 出口参数:eax即下一级的升级经验值
* Q, b5 D! d' H7 k4 o' X—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074099 mov ebp, esp
. u7 s1 n& ^4 _- Y5 wbbs.mocwww.com.text:0807409B mov edx, [ebp+arg_0] ; 将人物或者宠物的等级放到edx里
+ `- v h& q. P0 Z.text:0807409E cmp edx, 78h ; 与78h即120比较魔力私服,最新魔力宝贝私服技术交流, h3 ]% h+ _( U7 g: [& n8 A
.text:080740A1 jbe short loc_80740C0 ; 小于等于则跳转
1 z) X6 w# Z# a- a6 ebbs.mocwww.com.text:080740A3 cmp edx, 82h ; 与82h即130比较
3 f: A: Y2 V- [; I/ ?! G2 K4 T3 abbs.mocwww.com.text:080740A9 jg short loc_80740B8 ; 大于则跳转
7 s' d, D& A$ o8 ?( k魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740AB mov eax, edx ; 否则将等级值放入eax
) V6 `: f9 } ~5 r7 m2 L$ V$ y—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AD imul eax, edx ; 2次方魔力私服,最新魔力宝贝私服技术交流# _, d) x- d0 u
.text:080740B0 imul eax, edx ; 3次方
9 K a- g: ^! Z魔力私服,最新魔力宝贝私服技术交流.text:080740B3 imul eax, edx ; 存放经验值的eax = 等级的4次方
3 ]% {0 U0 W0 H2 ebbs.mocwww.com.text:080740B6—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- s3 Q1 @4 _3 b, u# g
.text:080740B6 locret_80740B6: ; CODE XREF: CHAR_GetLevelExp+25j妖城在线论坛+ ]2 r9 m$ U; x5 e' f+ f2 i
.text:080740B6 ; CHAR_GetLevelExp+2Fjbbs.mocwww.com. @( y' w# m4 S2 U) I/ o
.text:080740B6 leave2 J% M1 ]1 t$ \8 C. G7 _9 p t
.text:080740B7 retn
: C5 b: P$ x! p: T- N& w6 f" S妖城在线论坛.text:080740B8 ; ---------------------------------------------------------------------------魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* a8 j' J3 n$ C
.text:080740B8
5 j% f8 @% T: R2 \) h, C! g- U# ^. Bbbs.mocwww.com.text:080740B8 loc_80740B8: ; CODE XREF: CHAR_GetLevelExp+11j
5 V3 n" t0 T# G0 S! i7 K- \5 d" [魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740B8 mov eax, 0FFFFFFFFh ; 大于130级则下一级升级经验为 -19 a$ m3 O* J$ h; F
.text:080740B8 ; 游戏内看到的是一个 - 号
+ M. Z$ |8 ~/ d1 z" c3 v) T.text:080740BD jmp short locret_80740B6 ; 函数结束
/ O+ W8 ` r$ [+ e& y; G.text:080740BD ; ---------------------------------------------------------------------------bbs.mocwww.com+ w/ A n" S0 l, E" B; m; R
.text:080740BF align 10h
# b* l$ ~( ^- e- i- A! ~5 h魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0
* _+ \ Y! F5 G% O.text:080740C0 loc_80740C0: ; CODE XREF: CHAR_GetLevelExp+9j
" M+ R( x3 f5 L0 U$ bbbs.mocwww.com.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4] ; 小于等于120级则查验经验表
' W5 w5 H( b h4 i' r, @1 Q' m- a妖城在线论坛.text:080740C0 ; 即LevelUpTbl
& t2 k: J8 ?2 `( Y.text:080740C7 jmp short locret_80740B6 ; 函数结束妖城在线论坛& p. K8 A, D: s. u* H T( L: p
.text:080740C7 CHAR_GetLevelExp endp; }) K6 c& z' b( u, V9 w |
.text:080740C7
/ f0 e |8 {" ?5 L5 x魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C7 ; ---------------------------------------------------------------------------bbs.mocwww.com2 ]3 t- I0 t3 D
$ E4 H: Q7 t6 p6 z1 G9 @ e& C1 U9 @8 v—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
4 t T. m$ Z9 F0 q6 d魔力私服,最新魔力宝贝私服技术交流
1 q& l5 t; q8 f* j& mbbs.mocwww.com[ 本帖最后由 猪神的黄昏 于 2010-3-23 22:59 编辑 ]
|