Board logo

标题: [魔力私服分享] 没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 [打印本页]

作者: zaozao    时间: 2009-7-19 11:31     标题: 没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 / D2 W1 O6 ~$ C/ W7 |
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% a! r, ]# o# }0 i
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 m; }3 O/ V4 [  y2 W  O( ?/ q
用IDA载入gmsv,分析完成后进入Exports选项卡。
9 K0 P/ T3 s: V/ j搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。
/ f# P' d: Y* x+ @2 q妖城在线论坛.text:08074098                 public CHAR_GetLevelExp
6 V/ C2 Q( e4 ]  |% I6 g.text:08074098 CHAR_GetLevelExp:
4 c: A" R+ S7 E  m5 Ebbs.mocwww.com.text:08074098                 push    ebp
+ z7 g# H$ ~( @& C.text:08074099                 mov     ebp, esp bbs.mocwww.com5 j+ ^* D3 _8 m, J, {8 ^. ~# L
.text:0807409B                 mov     edx, [ebp+8] 6 n. C9 S! h( ~, D
.text:0807409E                 cmp     edx, 7Eh
: @" U/ w' S  F, e% T2 g/ w妖城在线论坛.text:080740A1                 jbe     short loc_80740C0 妖城在线论坛7 Y5 F! [, r# O* I/ [
.text:080740A3                 push    ecx 妖城在线论坛* ?) L! A7 b' `4 i9 O; i( R
.text:080740A4                 mov     ecx, 7
8 g& `. s1 O4 x5 ?( o妖城在线论坛.text:080740A9                 push    edx
5 D+ [8 m1 Y5 b: J魔力私服,最新魔力宝贝私服技术交流.text:080740AA                 mov     eax, edx 魔力私服,最新魔力宝贝私服技术交流4 o  s% D4 L2 m4 o0 I3 |! G( H
.text:080740AC                 imul    eax, edx 魔力私服,最新魔力宝贝私服技术交流! @* P: o5 O& y
.text:080740AF                 imul    eax, edx
4 P6 H# y6 c0 D4 N7 V- L妖城在线论坛.text:080740B2                 imul    eax, ecx
3 j4 g  @( \1 O# R.text:080740B6 loc_80740B6:   魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* ?2 @6 E/ n6 T, s) h* q3 V
.text:080740BE                 leave —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート$ V' I" x+ m7 F7 o+ S7 J) b$ w
.text:080740BF                 retn
7 I: q: |( X1 R% e3 a% T—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740C0 loc_80740C0:                           魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表: }* S' @" a; h6 [8 r
.text:080740C0                 mov     eax, dword ptr LevelUpTbl[edx*4] $ w5 R. p/ C( O8 s
.text:080740C7                 jmp     short loc_80740B6 魔力私服,最新魔力宝贝私服技术交流( |2 g6 w- |( F9 `, `/ q0 S
妖城在线论坛& `# i; V+ N4 g9 U
粗糙的解释下这段代码的意思 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート! D# A0 k& u. Y, E$ T

" l9 v( h4 M) z2 ]# pPush              edp
6 E& V9 \1 T  i+ O8 |$ X! AMov        ebp,esp
! f' I+ T5 e0 @! i" I魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Mov        edx,[ebp+8] bbs.mocwww.com, e6 c% _1 n; A
获取当前等级的下一级存到edx
  F+ z6 i$ C- M1 W+ r妖城在线论坛
. K$ h) u* U! z—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートCmp              edx,7eh
- c  I+ n+ a1 y/ v& v—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート将edx与7eh也就是10进制数130比较 魔力私服,最新魔力宝贝私服技术交流; @. J' m/ J( t8 A0 \

3 {, U3 i/ ^# `# }- Dbbs.mocwww.comJbe         shortloc_80740C0
8 H. i$ K9 I2 M8 m妖城在线论坛如果edx小于7eh则进行跳转到80740C0 妖城在线论坛; i. I2 v: Z3 x4 N1 I; l

7 E( @  N' r7 b0 V魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Push       ecx 5 |. G0 X2 l5 T3 }, m
Mov        ecx,7
; b' i1 S1 ]# F- Q3 I给ecx赋值7 妖城在线论坛( f/ ?2 v  l# M
+ Q, |+ A+ p9 w# _
Push              edx
& N1 T* o" @" M0 Rbbs.mocwww.comMov        eax,edx 4 [9 W9 {; ^" z/ d9 L
把当前等级+1的值给eax 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表0 ]  ^0 J) m; L( w% T2 b3 `( i

# O  }* _: m' r5 Z; M—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートImul              eax,edx
" s5 u$ j- d8 A) u—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート把eax与edx相乘,结果存在eax —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート& M' \7 J, I0 o+ J6 V% T

$ A  Z: j( ?2 X( T$ T& A3 W( U—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートImul              eax,ecx bbs.mocwww.com2 Q# ^/ O) f: }' q
把eax与ecx相乘,结果存在eax : N0 f7 ~8 F1 a% }& T/ ^
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート9 M( V4 Q4 Y# x* v5 K2 G
Leave 2 f6 Y& R" f; F+ G4 X1 u+ H5 S
Retn
  b& z2 y* S1 H3 c/ o" s- l妖城在线论坛退出这个过程吧,大概 , ~1 A# s7 a' k( Z* m
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表$ C# V# H' u. X* i) `* u% A5 w
Mov        eax,dwordptrLevelUPtbl[edx*4]
1 ?) i  }* e! W) o2 ^魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表这里是读取经验表的内容给eax,也就是查表读经验 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート3 p4 i* c2 x" f+ e7 Q+ e
bbs.mocwww.com* |; d8 M: R4 K% V" l# X
jmp     short loc_80740B6 魔力私服,最新魔力宝贝私服技术交流8 V/ @! j* |# i8 P( P
强制跳转到80740B6
3 _  I3 u: a+ g1 ^—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートbbs.mocwww.com' `% c; o! a8 P8 y
好了,这段代码就这点意思,逻辑上不难理解。 妖城在线论坛  t; _" o: w/ t& K3 ~9 |
虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。 魔力私服,最新魔力宝贝私服技术交流: s2 a; J" z! u% j( W  q9 `

9 N1 J2 N' I) S0 }" k- S" Z  t妖城在线论坛分析完了之后开始修改了,上面的代码具体作用如下: bbs.mocwww.com. H( ]$ `) `) L/ `* ]" g8 E
判断等级下一级是否小于7eh,是则跳转到查表。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- g4 R7 i6 E$ q5 D* A5 [: L
否的话也就是大于7eh时,按照下面算法运算
5 Z( Y0 g" q* @0 |. `, q# s.text:080740A3                 push    ecx 妖城在线论坛3 s! k$ k! |# c( R& i% J6 A
.text:080740A4                 mov     ecx, 7 # U4 h, X. H$ p" F+ l, i% V2 G8 q, ^# ]
.text:080740A9                 push    edx
6 A+ z# s$ B6 _. f—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AA                 mov     eax, edx 魔力私服,最新魔力宝贝私服技术交流. @, Q/ B: ^( w% l+ r, t
.text:080740AC                 imul    eax, edx
8 c% G5 x; s3 D* W) y- G妖城在线论坛.text:080740AF                 imul    eax, edx
. L6 K1 j& r" M8 r" K) y' ^妖城在线论坛.text:080740B2                 imul    eax, ecx   h! N2 l' |+ h2 W
也就是eax的三次方乘以ecx,这里可以改成我想要的。 bbs.mocwww.com4 T1 W( Q' Y/ t* K9 U: S
魔力私服,最新魔力宝贝私服技术交流' l2 r7 E$ m& T! c5 ?2 R
我的目标是改称等级的四次方除以50,但是问题来了。
# s- y3 a! A% u妖城在线论坛怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。 妖城在线论坛5 v( v7 _1 v+ L. I

1 P5 t6 C2 G0 _7 S妖城在线论坛.text:08074098                 public CHAR_GetLevelExp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) z6 _1 p9 k5 G  u2 u
.text:08074098 CHAR_GetLevelExp:
$ a4 S2 y. c$ A+ l& v7 w魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:08074098               
6 D0 i" i# D0 ~, |1 m; `妖城在线论坛.text:08074098                 push    ebp
7 ~2 i* S% f9 t7 _  ?% F—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074099                 mov     ebp, esp
+ y; u! ]) N( A6 u$ }% O妖城在线论坛.text:0807409B                 mov     edx, [ebp+8] 魔力私服,最新魔力宝贝私服技术交流+ v+ y2 ]5 ^/ x1 H
.text:0807409E                 cmp     edx, 0FFh
) r: Y5 g! o3 F' C2 X4 D妖城在线论坛.text:080740A4                 jg      short loc_80740C0 魔力私服,最新魔力宝贝私服技术交流8 T" s2 E+ _1 o7 p% ~* H4 g, j
.text:080740A6                 push    ecx
3 Z+ i% f7 g" y+ `魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A7                 mov     ecx, 32h 魔力私服,最新魔力宝贝私服技术交流+ O+ S( @: n% L% s& v) q" y
.text:080740AC                 push    edx
/ |$ `* J2 |& j! \% C" ~" _.text:080740AD                 mov     eax, edx bbs.mocwww.com. _0 m1 D$ C8 @8 e* D; h
.text:080740AF                 imul    eax, edx
( [; H& Z  @, ?; B7 l0 F* a魔力私服,最新魔力宝贝私服技术交流.text:080740B2                 imul    eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 L4 A/ s6 \9 g; N' h# _6 }) h/ }
.text:080740B5                 cdq
/ @9 k" q7 R4 Q! I) g6 Abbs.mocwww.com.text:080740B6                 idiv    ecx
8 L" M; z2 f: h6 G& J5 F' X6 s" B- M4 b.text:080740B8                 mov     edx, [ebp+8]
' F- W( P6 ?2 o, p魔力私服,最新魔力宝贝私服技术交流.text:080740BB                 imul    eax, edx 2 V3 A7 @) I1 @3 K7 Y8 q
.text:080740BE
$ Q" k0 A- ~! Kbbs.mocwww.com.text:080740BE locret_80740BE:                     bbs.mocwww.com% `% n3 ~- L& M: Z* U" F, B
.text:080740BE                 leave 妖城在线论坛9 L0 t6 _, _/ H6 W" \. Q
.text:080740BF                 retn
: t/ ?3 A/ |$ X3 ibbs.mocwww.com.text:080740C0 loc_80740C0:                        
& r7 r- E* ?. a4 x.text:080740C0                 mov     eax, 0FFFFFFFFh
9 d% v8 ?' M0 ^$ @) a魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C5                 jmp     short locret_80740BE
0 w6 T8 }; ~& W5 b$ S; v4 j% c—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート7 h; ?; a, b7 f  Z
方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
2 a0 I% v; e. Y. j- F8 r% M' u1 \魔力私服,最新魔力宝贝私服技术交流Cmp              edx,0FFh
6 ]( f( A5 x" r- c" v1 a( D( S; D. ^: o—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートJg           shortloc_8074C0
) v- k8 e0 \& }& c" q魔力私服,最新魔力宝贝私服技术交流判断等级是否大于255是的话跳转80740C0
1 u  j) e! ?8 U! r, V3 X' q  u; |bbs.mocwww.com否的话进入我们的等级公式:
' X8 j6 U2 W! [  Y魔力私服,最新魔力宝贝私服技术交流(等级*等级*等级除以50)*等级 妖城在线论坛+ Q& |  O: j. q& @
也就是等级三次方除以50再乘以等级 妖城在线论坛  \- W7 P& s7 G
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。
: e! Q1 d0 P3 {, h' q* D4 {216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。 妖城在线论坛9 Y: A% T9 g: I- K2 K
所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。 魔力私服,最新魔力宝贝私服技术交流# [2 D/ w# J: p0 I
bbs.mocwww.com! z+ y/ F; z$ c, N- q' L
接下去做公式:
4 M) \9 ^* `# d; xbbs.mocwww.comPush              ecx,32h          这里是经验倍率,就是公服经验除以ecx等于你的经验
0 z/ g7 D4 O& F; E$ D) \; Ibbs.mocwww.comMov        eax,edx      将下一等级的值赋值给eax 7 p3 i# C0 j; ?4 ?
Imul              eax,edx          将eax,edx相乘,结果存到eax 妖城在线论坛3 T- c8 G: M7 G3 ~. Q) }
Imul              eax,edx          同上 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# M7 t" ~7 w7 ~! U/ `+ }
Cdq                             这个做除法不加就会出错,用户登录后服务器当机 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& ^3 M% A4 F- ?) }7 D
Idiv        ecx                eax除以32h算到50倍经验
$ d" y$ Y' `2 [8 ~* c5 Z+ `bbs.mocwww.comMov        edx,[ebp+8]    从新获取下一等级的值 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート1 x3 L$ E* j8 n
Imul              eax,edx          将eax,edx相乘,结果存到eax bbs.mocwww.com% ?3 ]& M6 v, t* p& |

% L. X7 A! j1 B6 pbbs.mocwww.com好了,这样就完成了运算过程。
7 k0 J6 t& I0 cbbs.mocwww.com魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 g9 L. b- r! u( n) l; f
.text:080740C0 loc_80740C0:                        
: k, J; Z8 t1 a3 C; I& h7 i- @mov     eax, 0FFFFFFFFh
% h- M' B- c8 Q0 k魔力私服,最新魔力宝贝私服技术交流jmp     short locret_80740BE —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 B: a- N: Y! Z  e& O
这一段代码就是等级超过你设置的上限之后返回-1。 魔力私服,最新魔力宝贝私服技术交流, c! e' _% m3 y& y8 L0 a

. P2 Q& ^: L5 _5 ~3 |9 V; x3 }  h
- N! A* Y0 d6 G/ ~- C  q9 K. {下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。
! o# g  M5 b1 I$ O3 o  t魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表这里就要用到FlexHex了。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート+ {( R- X* ~& S. [* F
妖城在线论坛) v* ?0 @. I2 g; z. j* C, D0 h+ ^7 n
首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 妖城在线论坛9 [+ }4 s( L2 h7 L) E" A2 a( F
如下对应:
* w( q" Y6 }; h+ Q6 L, N魔力私服,最新魔力宝贝私服技术交流Cmp              edx,0ffh                       81  FA  FF  00  00  00
2 T. u/ \1 f1 |" Xjg      short loc_80740C0         71  FA
+ P: r/ @. o$ F6 h1 `) F妖城在线论坛mov     ecx, 32h                      B9  32  00  00  00
3 t# c0 ?# c- i* x3 U6 f2 `8 ?魔力私服,最新魔力宝贝私服技术交流
' d. S0 q5 p: t4 `; ~. H( h( d—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。 魔力私服,最新魔力宝贝私服技术交流- x3 _  }1 p) k
这个挺有乐趣可以自己慢慢享受摸索。 妖城在线论坛- I1 y  u, p/ [; [

' k3 H6 u& P. g( ]8 t—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。
作者: Maldiniymx    时间: 2009-7-19 11:49

好文章, 可以帮很多入门的来修改~
作者: 小狐狸    时间: 2009-7-19 12:20

看不懂.............
作者: lingjin3    时间: 2009-7-19 13:04

学习学习' G5 T( y+ {2 Y
谢谢楼主分享经验
作者: 剑帝    时间: 2009-7-19 15:18

感谢楼主分享,顶!
作者: feifei1937    时间: 2009-7-23 14:17

很不错~呵呵~ 继续深入,到call语句的调整和为自己的语句腾空间还有搜索无果而必须自己对着opcodes写机器码就有趣了……




欢迎光临 妖城在线论坛 (http://bbs.mocwww.com/) Powered by Discuz! 6.0.0