没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
& r; l9 Y0 G& b/ h; g+ L妖城在线论坛使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。 bbs.mocwww.com* D9 ~% h t% w o3 ]" [& k
妖城在线论坛' h5 P! i$ X, Q1 |. G I
用IDA载入gmsv,分析完成后进入Exports选项卡。
, |* M9 \" r/ i4 g, a1 }6 y魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。 . m$ C; f( I4 E0 y: N. [; d7 _
.text:08074098 public CHAR_GetLevelExp bbs.mocwww.com1 y/ U* l5 t: ^+ e S
.text:08074098 CHAR_GetLevelExp: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' H5 e& n# K3 K" d& |$ `
.text:08074098 push ebp
' v! x' v) S# L6 ?8 Q魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:08074099 mov ebp, esp
8 @2 Z, o8 R/ P2 X.text:0807409B mov edx, [ebp+8]
* o1 s# t+ ~- t/ g5 f; J' ?! C妖城在线论坛.text:0807409E cmp edx, 7Eh 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 X! L! J+ F( ~
.text:080740A1 jbe short loc_80740C0 bbs.mocwww.com& n( }' M' \* ]5 K
.text:080740A3 push ecx
$ F, |4 `8 B. M2 [0 @魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A4 mov ecx, 7
- n8 E+ G7 M0 n2 a! H! f; ~.text:080740A9 push edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート/ o3 \* h# U I
.text:080740AA mov eax, edx 魔力私服,最新魔力宝贝私服技术交流6 P3 S5 d& i" ~& n \+ r
.text:080740AC imul eax, edx
5 Q$ n& Q0 c) X$ U妖城在线论坛.text:080740AF imul eax, edx * W* l& g+ l3 [' |
.text:080740B2 imul eax, ecx
1 o' ~$ |& @6 ^- V, l9 }/ N.text:080740B6 loc_80740B6: 魔力私服,最新魔力宝贝私服技术交流6 R4 `/ ]0 ^# X+ o! N$ G4 ~4 k
.text:080740BE leave
& H/ Q1 U$ E- R6 Q# y魔力私服,最新魔力宝贝私服技术交流.text:080740BF retn
* L m s5 S3 E0 O" a* G6 h: j妖城在线论坛.text:080740C0 loc_80740C0:
( M% W' P% c. Q; n2 e妖城在线论坛.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4]
% q1 y7 Y, Y$ R.text:080740C7 jmp short loc_80740B6 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表9 ^3 y$ l1 N3 G6 w5 ^
% Y# X4 {1 P' j8 D6 u粗糙的解释下这段代码的意思 bbs.mocwww.com" V/ V* i, T1 e( U7 Z
) [' ~, a$ f; \ G! A—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートPush edp
9 f& T9 X1 k+ i) v* w魔力私服,最新魔力宝贝私服技术交流Mov ebp,esp
" L5 r v# o& @% r+ _bbs.mocwww.comMov edx,[ebp+8]
. c7 M! L& s; ~魔力私服,最新魔力宝贝私服技术交流获取当前等级的下一级存到edx bbs.mocwww.com# D( n6 ?$ n% R+ P3 h/ l
" D# w: b# [* X. e魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Cmp edx,7eh 0 j' Y9 a8 R% ~* P6 q
将edx与7eh也就是10进制数130比较
( H2 g( V5 m+ ~
& n1 i( J/ Q1 W3 q6 f6 \bbs.mocwww.comJbe shortloc_80740C0 bbs.mocwww.com2 x: b/ h0 x$ R1 \3 @
如果edx小于7eh则进行跳转到80740C0
. O# H1 ~0 X2 @! a魔力私服,最新魔力宝贝私服技术交流
( F# s1 t1 }( b+ j1 \" u7 H/ z9 tPush ecx
0 I. ]( a! v# @! E魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Mov ecx,7 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ ]8 E* {7 C) G& X6 T# d- O
给ecx赋值7 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- X5 C. q' U; y. ?
! i M+ q2 s' q0 b- X9 ?0 B魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Push edx
9 _4 U3 x. ~( T& L+ K) C: E—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートMov eax,edx bbs.mocwww.com* K2 L# F4 Y) A6 a" D- z' N
把当前等级+1的值给eax —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# @* O5 P3 j9 P3 k [ N
* Q/ d- j8 _: Y3 r魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Imul eax,edx 妖城在线论坛0 C% }2 d+ I. l; R# Q: P
把eax与edx相乘,结果存在eax
5 ]. E# _. o% L: e" `( \8 o—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
7 L0 W$ k! O3 x: R+ J魔力私服,最新魔力宝贝私服技术交流Imul eax,ecx
) h/ V5 {& u5 Q- [9 |7 g8 s妖城在线论坛把eax与ecx相乘,结果存在eax 魔力私服,最新魔力宝贝私服技术交流- F G* l& |$ M m
bbs.mocwww.com- C# c) p3 b, h. Q
Leave
2 h. N6 r% }2 U$ ^( r( @ F+ Ybbs.mocwww.comRetn 魔力私服,最新魔力宝贝私服技术交流) v" B5 F' U6 S8 u. y C, D0 I
退出这个过程吧,大概 bbs.mocwww.com& l9 i' r# Z; p, ]$ M2 m( i% r
1 F0 o- \, \' R v; UMov eax,dwordptrLevelUPtbl[edx*4] —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- D% j2 C. G' K2 Z% f
这里是读取经验表的内容给eax,也就是查表读经验 妖城在线论坛" w* x* I( D& ?4 S5 k, Z& m( [
2 r. k) r' a0 w# ^9 H f& Rjmp short loc_80740B6 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表5 J& d6 |% o* V
强制跳转到80740B6
/ X$ u7 h& d1 R1 B( e! t/ w; P
}4 h; y3 u8 u- A* H. L' j3 H好了,这段代码就这点意思,逻辑上不难理解。 bbs.mocwww.com+ b" B3 X5 B, d% u+ _) m
虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
+ K. m9 a+ ~, i% `" S& U! c6 ?) ]/ x魔力私服,最新魔力宝贝私服技术交流bbs.mocwww.com) d; v6 K9 f/ A( q( ?
分析完了之后开始修改了,上面的代码具体作用如下: 魔力私服,最新魔力宝贝私服技术交流, w5 X& v; W/ D1 H
判断等级下一级是否小于7eh,是则跳转到查表。
: \% c ^5 m6 ]) U3 W7 x, kbbs.mocwww.com否的话也就是大于7eh时,按照下面算法运算 妖城在线论坛5 E4 L5 C& i% o) U7 x: W. B0 B
.text:080740A3 push ecx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート+ v) k8 _/ \) ~1 s# Z2 W
.text:080740A4 mov ecx, 7
' x8 {& t/ E6 b3 V& `魔力私服,最新魔力宝贝私服技术交流.text:080740A9 push edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& x; W# |' ]; q% A
.text:080740AA mov eax, edx
/ v( ^2 O1 n- v6 D! J* u6 D妖城在线论坛.text:080740AC imul eax, edx
* U& J8 S* W' }. r# b: T9 n妖城在线论坛.text:080740AF imul eax, edx
: T0 Z# L; u' z/ h) ]3 z—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740B2 imul eax, ecx 妖城在线论坛9 ~& U9 @# D$ _& I: O( t
也就是eax的三次方乘以ecx,这里可以改成我想要的。 ; e$ a* y+ y2 q; o% l
6 g% z* v4 v8 l+ [% O. t+ T魔力私服,最新魔力宝贝私服技术交流我的目标是改称等级的四次方除以50,但是问题来了。
6 s! P( ?8 d F [ I—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
& k" x1 R' V1 e魔力私服,最新魔力宝贝私服技术交流
9 @% t% C Q8 v! V. y" r, d& `.text:08074098 public CHAR_GetLevelExp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- V: @# {! V. }( p
.text:08074098 CHAR_GetLevelExp: 妖城在线论坛( f- S5 v! y' `
.text:08074098 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表8 D8 m9 Q7 R" K- k/ [" d* I
.text:08074098 push ebp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表$ ?1 D# J% O0 @- Q# |" W0 k
.text:08074099 mov ebp, esp 魔力私服,最新魔力宝贝私服技术交流- D' v% X) r r( G, i) L1 \
.text:0807409B mov edx, [ebp+8]
# K/ t9 h; ^1 M3 _魔力私服,最新魔力宝贝私服技术交流.text:0807409E cmp edx, 0FFh
$ d; N4 Y0 Z7 p. ?2 }bbs.mocwww.com.text:080740A4 jg short loc_80740C0
: Z9 V0 F0 n/ Z w3 y) ]bbs.mocwww.com.text:080740A6 push ecx
6 y: j: Z- i/ F: {8 @.text:080740A7 mov ecx, 32h & V& H0 P& a9 x- }
.text:080740AC push edx 魔力私服,最新魔力宝贝私服技术交流; P. r' F7 w# F: Y9 B1 ?
.text:080740AD mov eax, edx
0 X7 K7 Q9 q# t* q妖城在线论坛.text:080740AF imul eax, edx
- w' i4 Q' s8 l* J0 d4 s7 O- `妖城在线论坛.text:080740B2 imul eax, edx 4 S3 T8 d7 d: S% D
.text:080740B5 cdq
. x! v, X) Z" t2 w妖城在线论坛.text:080740B6 idiv ecx
8 K* I! f3 F5 k+ D# e0 V/ P魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740B8 mov edx, [ebp+8]
) |, X: s+ B$ J8 ]6 ]" C妖城在线论坛.text:080740BB imul eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- M9 [! G/ w2 Q8 m, \* P
.text:080740BE
; ]4 Z7 R+ N9 f3 R. J4 S* N魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BE locret_80740BE: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表; M. h9 s# y7 f g4 J3 z6 ]8 \ X
.text:080740BE leave bbs.mocwww.com1 V5 y$ D# \4 \- z M! z+ Z
.text:080740BF retn
/ X) L4 M3 }0 m/ |' z: F: c4 ]- E魔力私服,最新魔力宝贝私服技术交流.text:080740C0 loc_80740C0:
" v$ l5 @8 D) ]魔力私服,最新魔力宝贝私服技术交流.text:080740C0 mov eax, 0FFFFFFFFh
( [+ B7 Q0 A0 i1 `' r# t" d1 m魔力私服,最新魔力宝贝私服技术交流.text:080740C5 jmp short locret_80740BE
2 \4 j# J% L2 H" R+ dbbs.mocwww.com
- R% t2 Z$ x/ ?* D+ F, e魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表方便起见这里直接把我改好的代码贴出来,与原来不同的地方: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* r2 y9 F2 q2 c/ Z/ Q" w
Cmp edx,0FFh 8 i$ I6 S1 b- P6 d
Jg shortloc_8074C0
) U/ V" c, X4 L8 K魔力私服,最新魔力宝贝私服技术交流判断等级是否大于255是的话跳转80740C0
6 o2 `- |9 K W" D$ A# ?* i—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート否的话进入我们的等级公式: bbs.mocwww.com Y& z) R1 J* o6 t7 H( j9 M
(等级*等级*等级除以50)*等级
; O. U6 D& w1 f$ h8 q. X—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート也就是等级三次方除以50再乘以等级
' Q# ?/ S1 m) B3 ]) d% \6 [. t+ X为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。
4 C. H: `4 r3 U1 t3 R a9 X( F* S$ e8 y—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" U3 ]' t$ M/ E7 |, e4 c3 u
所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) l4 S" [; Y$ P; y2 J' n
8 S) }* c1 Q( f; Q接下去做公式: 妖城在线论坛+ h2 E( z6 o {, M& H2 e
Push ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 e2 N" M; B( `3 R5 h- a8 Q: M
Mov eax,edx 将下一等级的值赋值给eax —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート/ D- v! U/ j2 q8 \2 [
Imul eax,edx 将eax,edx相乘,结果存到eax bbs.mocwww.com, H7 U0 x( ]% a E9 g
Imul eax,edx 同上
+ H& d1 `% c& y" `$ e) nbbs.mocwww.comCdq 这个做除法不加就会出错,用户登录后服务器当机
" {6 w% I& p( L& ^+ O6 I4 p, c/ V—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートIdiv ecx eax除以32h算到50倍经验
% K( _0 |) c$ H. ?! I魔力私服,最新魔力宝贝私服技术交流Mov edx,[ebp+8] 从新获取下一等级的值
, g( H& A% D9 A ]# U+ n# u. t魔力私服,最新魔力宝贝私服技术交流Imul eax,edx 将eax,edx相乘,结果存到eax
& J: J7 D9 J' J- E* a- Q9 Jbbs.mocwww.com魔力私服,最新魔力宝贝私服技术交流7 l- g0 a/ d A1 q ~5 C+ a: a
好了,这样就完成了运算过程。 妖城在线论坛2 ^" B5 a9 a% H7 e7 C
妖城在线论坛+ E0 k7 m2 R* v l- }; p" F( L9 v
.text:080740C0 loc_80740C0:
7 T% |- ~+ H/ j" K; Dmov eax, 0FFFFFFFFh
3 x, h: O+ O4 qbbs.mocwww.comjmp short locret_80740BE
" h3 W" A- w; j7 L妖城在线论坛这一段代码就是等级超过你设置的上限之后返回-1。 bbs.mocwww.com1 L% v, E5 u7 D- L) _
8 E7 l. D- P' e7 N妖城在线论坛魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& `8 s& d6 Z7 g) N, l
下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 . H/ j# d& A8 C8 x1 `
这里就要用到FlexHex了。 魔力私服,最新魔力宝贝私服技术交流& G. X Q6 ^& F2 m4 ]; R/ }- L) z
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 N. s1 i6 \4 B9 E n c% N
首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 妖城在线论坛 ~6 B& E% B( }. X: I& G
如下对应: bbs.mocwww.com$ W I' C% s$ s; {6 R/ @" n
Cmp edx,0ffh 81 FA FF 00 00 00 魔力私服,最新魔力宝贝私服技术交流: j1 G" J0 |! a: S6 D7 {
jg short loc_80740C0 71 FA
$ L1 F& \0 M1 {魔力私服,最新魔力宝贝私服技术交流mov ecx, 32h B9 32 00 00 00 妖城在线论坛" {8 O* p$ H4 Z8 | a+ V
& B" n4 y- F0 c* J9 B' s" }1 K
依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。 妖城在线论坛; K( C% _& L1 X1 N y* H
这个挺有乐趣可以自己慢慢享受摸索。 妖城在线论坛. ^1 N$ ?# d) h9 }
/ Y% ]: F! E8 g9 U魔力私服,最新魔力宝贝私服技术交流以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。