没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 8 c) n" Z" m; p, A$ J3 N- f6 g# ]4 T( \
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
" B; u, {' p# m0 O; B/ T
( [1 B( C0 y1 Y3 Q用IDA载入gmsv,分析完成后进入Exports选项卡。
U- E! F% l" x" z; {# j# y$ D魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。 魔力私服,最新魔力宝贝私服技术交流; U5 u: c# m" R* A4 r
.text:08074098 public CHAR_GetLevelExp
, n1 l& I' W" r8 |* I1 T1 J魔力私服,最新魔力宝贝私服技术交流.text:08074098 CHAR_GetLevelExp: 妖城在线论坛0 t/ L9 c2 t9 `# }$ f
.text:08074098 push ebp
* f6 q. i) [4 C- i( n妖城在线论坛.text:08074099 mov ebp, esp 魔力私服,最新魔力宝贝私服技术交流" `& C. F0 c+ H; c; v+ G
.text:0807409B mov edx, [ebp+8]
* v, }, x0 c/ q, v+ F) ` \魔力私服,最新魔力宝贝私服技术交流.text:0807409E cmp edx, 7Eh
# j3 {7 n& Q( K) P+ N9 }) ]魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A1 jbe short loc_80740C0 % ^) v* K: w$ @
.text:080740A3 push ecx
3 K2 J0 r. e A6 J7 S. b魔力私服,最新魔力宝贝私服技术交流.text:080740A4 mov ecx, 7 ' F7 T; l+ @' C- y$ x$ Q2 M
.text:080740A9 push edx 魔力私服,最新魔力宝贝私服技术交流, \' u5 K2 K# p, j- b
.text:080740AA mov eax, edx
6 d- y; ]2 _: Y2 Nbbs.mocwww.com.text:080740AC imul eax, edx bbs.mocwww.com0 [+ s5 x! b+ R
.text:080740AF imul eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表# i' \4 Z- r, P6 U
.text:080740B2 imul eax, ecx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* R3 p. O4 [! j5 V S, l
.text:080740B6 loc_80740B6: bbs.mocwww.com% i5 u% ?/ S5 z% F+ R/ a$ X6 d
.text:080740BE leave 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% i& m M5 Q7 m
.text:080740BF retn 魔力私服,最新魔力宝贝私服技术交流( U `/ ^" p# S ~7 A/ ^
.text:080740C0 loc_80740C0: 妖城在线论坛% V2 j3 m8 c- M* ^" }
.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4] 妖城在线论坛* G' e! w H( i: |7 D% a, h0 T
.text:080740C7 jmp short loc_80740B6
9 N& g' e# ]) O3 I—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
0 d) Z% o3 n) @- [3 V; r—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート粗糙的解释下这段代码的意思
- _0 A; j; T3 V3 h—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
O3 D; k) @; E4 e `5 e—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートPush edp bbs.mocwww.com: T6 p4 U/ ~, y6 ]4 k/ c
Mov ebp,esp 妖城在线论坛1 e" z& U W/ W! w% k9 k
Mov edx,[ebp+8]
' d3 w& i4 M, K# M: q+ O获取当前等级的下一级存到edx
7 x+ L. _2 h5 p- k( s# Y) E& B妖城在线论坛
& v/ C5 i4 H! b, \% W魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Cmp edx,7eh bbs.mocwww.com6 S. F* v3 [- K, _" r
将edx与7eh也就是10进制数130比较 魔力私服,最新魔力宝贝私服技术交流& \# U! I# V) u+ G, C3 V3 {+ U
( i# n- s$ L4 U8 i( |; `妖城在线论坛Jbe shortloc_80740C0 魔力私服,最新魔力宝贝私服技术交流. \: w8 H H" T' ^1 n# m! Q
如果edx小于7eh则进行跳转到80740C0
* c- q! L* D7 e+ Zbbs.mocwww.com—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート6 c" |% n# V9 ?, I
Push ecx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% b" o% d8 R# J7 {! x" Q
Mov ecx,7
+ x( X6 ]0 o9 a P魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表给ecx赋值7
" c! ]# w6 V. i2 q. m* v. w0 t7 c妖城在线论坛
8 j, ~* Q9 w# c1 a$ e( `—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートPush edx 妖城在线论坛# Q% }" o6 f3 E* n3 O( {6 `
Mov eax,edx
4 X. g! E$ G+ a) I( Q妖城在线论坛把当前等级+1的值给eax 魔力私服,最新魔力宝贝私服技术交流, q0 G) Q4 v! d' [
% a. z5 u% [* D
Imul eax,edx
; }0 P) \* k. C0 F1 K7 i5 S—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート把eax与edx相乘,结果存在eax
3 j5 v- ~8 w: S2 J, |7 U& c }妖城在线论坛
5 L8 W5 R% k1 f) [$ ^魔力私服,最新魔力宝贝私服技术交流Imul eax,ecx 魔力私服,最新魔力宝贝私服技术交流; t( R1 Y$ h3 k/ G! v
把eax与ecx相乘,结果存在eax bbs.mocwww.com& N" `' K% k7 o! h7 u
7 x4 c# B$ C; k& ^Leave bbs.mocwww.com4 C# p% [6 m' G: C
Retn
/ E) p5 n% x, H) {—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート退出这个过程吧,大概
8 F6 |$ p4 o- D$ g9 G; u- R—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
" Z z3 K4 y( j5 Y# }" qbbs.mocwww.comMov eax,dwordptrLevelUPtbl[edx*4]
- P# T; B/ ^1 w魔力私服,最新魔力宝贝私服技术交流这里是读取经验表的内容给eax,也就是查表读经验 ) x( ~. k) \$ B7 `0 p4 h: z3 s
; R Q" e) H8 i" ljmp short loc_80740B6 bbs.mocwww.com; ?, u- A/ ^& B/ ^! `+ n8 g
强制跳转到80740B6
, [$ c/ c+ a. T1 U魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' Z' @' d' q- W8 }0 w
好了,这段代码就这点意思,逻辑上不难理解。
) s1 H; k2 g2 G" P2 z; I8 T魔力私服,最新魔力宝贝私服技术交流虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表# B$ R8 N) U6 r
妖城在线论坛( i2 W1 o, o9 q* o1 e2 g# [8 ?0 k
分析完了之后开始修改了,上面的代码具体作用如下:
" ?6 P! s6 U" M. I/ _1 _bbs.mocwww.com判断等级下一级是否小于7eh,是则跳转到查表。
: y: v! p/ J a& r! L3 V& K5 Kbbs.mocwww.com否的话也就是大于7eh时,按照下面算法运算 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- ?9 x2 x F- P7 l2 d7 r: y
.text:080740A3 push ecx
" n, b# Q5 K2 ~' `" X' K.text:080740A4 mov ecx, 7
- l/ C* M& F2 \8 F.text:080740A9 push edx 魔力私服,最新魔力宝贝私服技术交流( o( T) S9 [/ _" D2 a
.text:080740AA mov eax, edx / `& _# n# ]2 v [! F
.text:080740AC imul eax, edx
/ n4 Z2 U; b0 w9 i' C9 I.text:080740AF imul eax, edx
4 a! {5 X5 c0 |/ Y/ o+ R6 ]; Nbbs.mocwww.com.text:080740B2 imul eax, ecx
+ ?) n M' i4 _1 S3 L妖城在线论坛也就是eax的三次方乘以ecx,这里可以改成我想要的。
) [* Z4 r, X" B; T1 P) h {妖城在线论坛—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート+ D8 u$ }6 d) ]3 I: ^
我的目标是改称等级的四次方除以50,但是问题来了。
6 y$ I& G- e% [! {" P4 L, _ o2 U魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 p1 D E+ D$ |' `* {$ p& Y8 t# N
7 J( y5 `& u1 m5 T; ?% \: |% z
.text:08074098 public CHAR_GetLevelExp 魔力私服,最新魔力宝贝私服技术交流* u# E# ~( H) G! g; ~. L
.text:08074098 CHAR_GetLevelExp: $ [/ P* ?0 {' @
.text:08074098 4 y; \0 b3 M% e
.text:08074098 push ebp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ ]$ U. \3 B1 ?% h( o" v
.text:08074099 mov ebp, esp 魔力私服,最新魔力宝贝私服技术交流' f ^* v+ `$ t4 B1 v: @
.text:0807409B mov edx, [ebp+8] bbs.mocwww.com9 F/ Y. p# ?. f) w6 O& w" Z2 n
.text:0807409E cmp edx, 0FFh 魔力私服,最新魔力宝贝私服技术交流8 k% k v. M5 ^
.text:080740A4 jg short loc_80740C0
6 W4 g2 ^! o" z6 e" F& A5 S.text:080740A6 push ecx # V7 L+ C/ u7 x: z8 j
.text:080740A7 mov ecx, 32h
9 z( P2 n9 B+ m7 Y1 `魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740AC push edx 魔力私服,最新魔力宝贝私服技术交流6 k9 d5 k' L4 @1 @1 o
.text:080740AD mov eax, edx
4 e0 y* j6 c' n8 t# N$ [. Ubbs.mocwww.com.text:080740AF imul eax, edx 妖城在线论坛/ Q x; v9 g C' o2 `( r# X
.text:080740B2 imul eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート' n* Q5 _9 i6 R5 G9 k7 b8 F( a
.text:080740B5 cdq 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" ^0 K4 M) @/ \! A0 a* N, I
.text:080740B6 idiv ecx 妖城在线论坛) @/ a R+ _1 w+ z* Z
.text:080740B8 mov edx, [ebp+8]
2 b5 A8 l* v7 U6 Z% o.text:080740BB imul eax, edx
, Z: t) {5 d) q; T$ R w.text:080740BE
# _, T% H( B" Y4 Y$ Z—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740BE locret_80740BE: 魔力私服,最新魔力宝贝私服技术交流# f- D! k' F. @, P
.text:080740BE leave
, W& S/ s9 A' y D# N1 v% ?/ j妖城在线论坛.text:080740BF retn
2 t$ n2 `, Q, J6 u' v( {魔力私服,最新魔力宝贝私服技术交流.text:080740C0 loc_80740C0:
# p F3 A d& Abbs.mocwww.com.text:080740C0 mov eax, 0FFFFFFFFh 魔力私服,最新魔力宝贝私服技术交流: Z& j& \6 _& ]2 G% H7 e/ ` g1 H
.text:080740C5 jmp short locret_80740BE
9 L! W% `/ T$ m; B" d$ k' Y9 Q魔力私服,最新魔力宝贝私服技术交流" F7 j W8 h/ H' p
方便起见这里直接把我改好的代码贴出来,与原来不同的地方: 魔力私服,最新魔力宝贝私服技术交流4 q# T% k# f7 Q; h
Cmp edx,0FFh
' y! L& ?. \2 c) d5 L8 o" m) {+ j魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Jg shortloc_8074C0 妖城在线论坛% ^& F/ @" C( l/ ?7 E) V% s( o
判断等级是否大于255是的话跳转80740C0 妖城在线论坛' J+ E0 F4 D7 s- a# r6 M
否的话进入我们的等级公式:
8 V( m1 n" X4 K ]3 `魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表(等级*等级*等级除以50)*等级
. Y, \9 Z( a- K ]6 z) Fbbs.mocwww.com也就是等级三次方除以50再乘以等级
* |1 w' W; ^( Pbbs.mocwww.com为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。 7 j, e" a$ n. W0 d- i8 s9 I
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
; @2 i$ i) { Y3 J. x魔力私服,最新魔力宝贝私服技术交流所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。 bbs.mocwww.com8 c) r! ^# C* E! }, ^6 A
魔力私服,最新魔力宝贝私服技术交流+ O" a& w3 v9 w% R4 E3 t
接下去做公式:
9 G5 V4 J- V; C魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Push ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验
) d& `! h7 z) L# ], {6 {魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Mov eax,edx 将下一等级的值赋值给eax
6 N5 }! @9 w ]3 s; k—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートImul eax,edx 将eax,edx相乘,结果存到eax
5 o5 M8 [1 ]! I9 U" Y9 h& r/ v魔力私服,最新魔力宝贝私服技术交流Imul eax,edx 同上
; j4 V% M5 q" z8 R& y! a' O; K% kbbs.mocwww.comCdq 这个做除法不加就会出错,用户登录后服务器当机 妖城在线论坛1 X8 t5 d( z- W' c5 E
Idiv ecx eax除以32h算到50倍经验
; g8 \0 y% Z L# E7 H& k妖城在线论坛Mov edx,[ebp+8] 从新获取下一等级的值
8 O4 d5 d* V3 y% i# k魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Imul eax,edx 将eax,edx相乘,结果存到eax
3 C! J6 m8 E% m2 N# V( q
9 J, _. ~6 ?0 p B+ P' q/ k4 @妖城在线论坛好了,这样就完成了运算过程。 妖城在线论坛: G& \: T3 K2 ^) D6 E K
bbs.mocwww.com n5 {# H+ N& F: \* E8 o" @
.text:080740C0 loc_80740C0:
) _8 {( M7 L( _$ G+ ~妖城在线论坛mov eax, 0FFFFFFFFh —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 p8 D$ }6 J: }
jmp short locret_80740BE bbs.mocwww.com/ C: o" M Z: b: |7 P
这一段代码就是等级超过你设置的上限之后返回-1。
' f! Z3 y3 }. S+ y" V/ t魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
8 b) n. v ~9 N7 Z( i1 x& E
1 R6 |' Z4 y; t9 N- o魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 妖城在线论坛: D5 z5 [. b& _$ q
这里就要用到FlexHex了。
" ?4 m9 ^2 B3 ?8 a' J ]/ w5 b魔力私服,最新魔力宝贝私服技术交流/ B2 D3 B$ q3 M6 N/ M( e) s
首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 魔力私服,最新魔力宝贝私服技术交流( q$ T- @! S7 @( l
如下对应: 魔力私服,最新魔力宝贝私服技术交流- I6 s6 j0 ]5 I M/ j; z5 ?6 G
Cmp edx,0ffh 81 FA FF 00 00 00
" N6 {! L8 W4 W( o妖城在线论坛jg short loc_80740C0 71 FA
- @! m2 A5 F' `& C [& w# b—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートmov ecx, 32h B9 32 00 00 00 * Y7 d( H& H9 W6 F X
! I7 Z& h( |6 i" L—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。 bbs.mocwww.com1 j2 L- b. ~2 W' R, p
这个挺有乐趣可以自己慢慢享受摸索。
* i( d, z j9 B* a5 j/ M$ C/ Z; ^2 @% q5 p8 J! r I+ |5 |
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。