标题:
[魔力私服分享]
没有汇编语言基础,参照网上无数教程和相关资料,修改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 ]# p
Push edp
6 E& V9 \1 T i+ O8 |$ X! A
Mov 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.com
Jbe 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.com
Mov 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.com
Push ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验
0 z/ g7 D4 O& F; E$ D) \; Ibbs.mocwww.com
Mov 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.com
Mov 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 |" X
jg 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