标题:
[魔力私服分享]
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
[打印本页]
作者:
zaozao
时间:
2009-7-19 11:31
标题:
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
8 [+ f! Q: _" F; [. y A/ H
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
% N0 o* R# `, t妖城在线论坛
) a" J6 d* c" `魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
用IDA载入gmsv,分析完成后进入Exports选项卡。
' Z8 K9 F0 |8 G2 `5 A
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。
妖城在线论坛 J3 y# ^# {5 c2 Z" h: W7 G0 R& |
.text:08074098 public CHAR_GetLevelExp
4 M3 ~% v1 j6 Q6 q" F妖城在线论坛
.text:08074098 CHAR_GetLevelExp:
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表$ D, l4 B0 m/ \0 e
.text:08074098 push ebp
( q8 j4 h4 C; E" N/ h6 Tbbs.mocwww.com
.text:08074099 mov ebp, esp
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- S9 Z/ r7 c5 C4 Y/ d. W+ M
.text:0807409B mov edx, [ebp+8]
* W! T1 D& u) v/ `bbs.mocwww.com
.text:0807409E cmp edx, 7Eh
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表0 e+ Y' [, }# Z/ m4 N L
.text:080740A1 jbe short loc_80740C0
魔力私服,最新魔力宝贝私服技术交流4 c0 p9 |7 w6 R2 _9 \
.text:080740A3 push ecx
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# f. }- @# X$ T/ u+ L% z" [8 p
.text:080740A4 mov ecx, 7
魔力私服,最新魔力宝贝私服技术交流5 v9 H c% x$ K& p5 z# e
.text:080740A9 push edx
魔力私服,最新魔力宝贝私服技术交流! \2 @5 g: j8 u
.text:080740AA mov eax, edx
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( n P# |) c |; A; M
.text:080740AC imul eax, edx
bbs.mocwww.com; ~! h9 [8 R$ U! Q
.text:080740AF imul eax, edx
5 P5 \; H, p8 x6 P
.text:080740B2 imul eax, ecx
$ k- L! t3 Q' ^魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
.text:080740B6 loc_80740B6:
D( M1 _# y) X s; E% F魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
.text:080740BE leave
! i. G5 \& _8 q6 r1 U—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
.text:080740BF retn
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* V( r# t- x9 a& m. ^2 n
.text:080740C0 loc_80740C0:
2 l0 ?& u$ G7 J: ~魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4]
+ x5 V: Q) [" R魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
.text:080740C7 jmp short loc_80740B6
& W6 K$ c C* N8 _# u" r1 B. ]% e妖城在线论坛
8 e1 g7 t! I1 Q* H' }) u/ t
粗糙的解释下这段代码的意思
1 R/ G( \" |6 }. b! L$ t: ]—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
bbs.mocwww.com n. p, Z& w* T8 Q* [) Q! S! k
Push edp
0 p. ^" i) R. F( `) s魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
Mov ebp,esp
9 [: x% g! l- U3 z/ M魔力私服,最新魔力宝贝私服技术交流
Mov edx,[ebp+8]
魔力私服,最新魔力宝贝私服技术交流& A$ [/ Q. C% R# v9 Y% ?* g
获取当前等级的下一级存到edx
: {& k9 G. d% Z) c3 k. @% b" sbbs.mocwww.com
1 F( A5 y: Y1 R* Y% T O5 s
Cmp edx,7eh
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 K3 X: y# W4 j2 l! U% ^; X) ^% A) y
将edx与7eh也就是10进制数130比较
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート; m4 G! |9 g% E. |9 h9 T
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- Y& N( F: ?2 G. m u
Jbe shortloc_80740C0
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表; }( |7 T- X+ i ^+ w
如果edx小于7eh则进行跳转到80740C0
: z8 w% E& n: A9 y n. M9 P2 p' }bbs.mocwww.com
8 G, l# e% o6 {( H Z/ ^ }
Push ecx
魔力私服,最新魔力宝贝私服技术交流. V8 D' q5 m$ C L2 ?8 i% T
Mov ecx,7
/ O) i5 _/ U* H% n$ o魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
给ecx赋值7
* F& E' ]3 N: F' P C, Mbbs.mocwww.com
妖城在线论坛. [( ~+ \7 `) ?; E
Push edx
妖城在线论坛. X& L$ ?8 m8 a6 A6 t
Mov eax,edx
( j/ f; D+ C1 |0 P, Z* C4 g- u—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
把当前等级+1的值给eax
妖城在线论坛2 E+ d9 L$ n) s# ~: Z& }
& @! g" \$ {; l! Z6 I6 q5 g- t
Imul eax,edx
/ n5 V* D* p: [5 x9 D魔力私服,最新魔力宝贝私服技术交流
把eax与edx相乘,结果存在eax
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート, R$ p" O0 w( M$ V
" w9 G) x5 B, V/ K6 W% V, ~
Imul eax,ecx
8 A+ q! s4 F m" S5 Q3 G& d妖城在线论坛
把eax与ecx相乘,结果存在eax
$ S& {# g/ \" T! G6 D$ b- F魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
妖城在线论坛" y) H+ T0 O5 x
Leave
/ @( N- _* r5 V( a7 I7 P# M
Retn
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート. Y* m8 D7 |' T/ A- O
退出这个过程吧,大概
bbs.mocwww.com J, U9 s9 A0 y7 y: J" L5 G1 }) X
bbs.mocwww.com8 H5 p( c" v* l- b- d( q( p W
Mov eax,dwordptrLevelUPtbl[edx*4]
bbs.mocwww.com0 k$ R$ Y( y9 `1 k2 ]! Y
这里是读取经验表的内容给eax,也就是查表读经验
+ Q/ H+ ?, u6 R* M* E/ @
& K, d1 B; J: O% I. W6 A0 \妖城在线论坛
jmp short loc_80740B6
妖城在线论坛- \+ q+ F# p2 m& X8 ^# h3 ?7 w( N
强制跳转到80740B6
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート r! b y' t% g! U3 n- X7 t4 O. }5 W
- p' X" a3 @ o* C7 m3 w# \) q( F
好了,这段代码就这点意思,逻辑上不难理解。
魔力私服,最新魔力宝贝私服技术交流1 ?8 Z* F$ M. t' O/ a$ b1 \7 _6 h
虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
* f2 K9 j; k" V: O' w
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" r% }" }7 E0 f+ S1 J
分析完了之后开始修改了,上面的代码具体作用如下:
4 u2 M( p5 G7 k5 gbbs.mocwww.com
判断等级下一级是否小于7eh,是则跳转到查表。
bbs.mocwww.com5 d: L& G/ `$ Y
否的话也就是大于7eh时,按照下面算法运算
; b V& W' k2 [/ M% x* E( I! {: [妖城在线论坛
.text:080740A3 push ecx
& B1 {) Z/ x0 l9 n魔力私服,最新魔力宝贝私服技术交流
.text:080740A4 mov ecx, 7
' E7 H" \/ ]+ x* ?& P0 {—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
.text:080740A9 push edx
bbs.mocwww.com. U6 E$ r1 a% f' J6 j
.text:080740AA mov eax, edx
8 \; c1 {8 C0 V. B& {$ s; _# N5 L妖城在线论坛
.text:080740AC imul eax, edx
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 |" i, V) {+ o T0 v( n/ Y
.text:080740AF imul eax, edx
bbs.mocwww.com7 R# E" F3 x7 q0 t5 g
.text:080740B2 imul eax, ecx
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& W1 J% A/ U1 f6 S. ?
也就是eax的三次方乘以ecx,这里可以改成我想要的。
8 t* ^% P8 E) e) a/ v8 ?% U妖城在线论坛
5 l# o! U! B! M( j! P% ^bbs.mocwww.com
我的目标是改称等级的四次方除以50,但是问题来了。
! @5 f2 c0 _9 W8 ~# F( ]# s
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
2 I) w" h; @ S4 _" T5 \魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
% F, S* R4 S, Z) ?: u) K# J" Pbbs.mocwww.com
.text:08074098 public CHAR_GetLevelExp
妖城在线论坛, C$ J2 I8 }1 Q
.text:08074098 CHAR_GetLevelExp:
# S6 B. i! L* k- `8 y—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
.text:08074098
/ E' _6 y$ b E4 k ]% ]5 v+ c魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
.text:08074098 push ebp
bbs.mocwww.com0 z* X) y$ b; W% g' q
.text:08074099 mov ebp, esp
7 `# |* d9 j) Z# ^: t/ O1 f' p; ~—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
.text:0807409B mov edx, [ebp+8]
魔力私服,最新魔力宝贝私服技术交流9 H1 Z: T; I5 i, m+ Q8 v
.text:0807409E cmp edx, 0FFh
* e- H/ L# z, n- ~
.text:080740A4 jg short loc_80740C0
妖城在线论坛2 ~# \3 _$ C" _" E
.text:080740A6 push ecx
妖城在线论坛" q; ~8 H; _$ W7 p7 }& x7 w" Q; v
.text:080740A7 mov ecx, 32h
$ H {( ^1 ~" T5 @0 `魔力私服,最新魔力宝贝私服技术交流
.text:080740AC push edx
! K; q! E6 S, {
.text:080740AD mov eax, edx
魔力私服,最新魔力宝贝私服技术交流6 t( {% J. T% ^& D9 i, E
.text:080740AF imul eax, edx
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表; s+ J0 ^& H& ^2 I1 m
.text:080740B2 imul eax, edx
bbs.mocwww.com! _8 J9 m' F p1 r; ]* I% V
.text:080740B5 cdq
魔力私服,最新魔力宝贝私服技术交流$ J+ Q2 z8 T1 ?3 T& i
.text:080740B6 idiv ecx
' W0 s5 }' ~) n
.text:080740B8 mov edx, [ebp+8]
, S. w; B6 q+ L; z魔力私服,最新魔力宝贝私服技术交流
.text:080740BB imul eax, edx
+ W( u8 q% ^7 }1 X1 J* nbbs.mocwww.com
.text:080740BE
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% v! k" w: a: ]8 G# v3 k9 u% K
.text:080740BE locret_80740BE:
8 J, H, d' z+ [6 @- G! m; O
.text:080740BE leave
$ T- j" L7 M F魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
.text:080740BF retn
9 X/ _( P# e8 p, [$ T1 }6 }+ k6 R% g—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
.text:080740C0 loc_80740C0:
魔力私服,最新魔力宝贝私服技术交流! t' z% y9 b, H$ n' {+ q7 W
.text:080740C0 mov eax, 0FFFFFFFFh
妖城在线论坛# t4 ]( R R& [+ q# x
.text:080740C5 jmp short locret_80740BE
! g1 W7 F, k+ G! V: R; a, b3 x$ L8 d魔力私服,最新魔力宝贝私服技术交流
, k; O( j1 Q1 O" |! X—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
' O! A: `) `' M% V- D魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
Cmp edx,0FFh
妖城在线论坛0 i9 o8 o' \5 ?" ^: C
Jg shortloc_8074C0
+ s9 s, l4 {) s* M2 [妖城在线论坛
判断等级是否大于255是的话跳转80740C0
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- F) A# Y4 u. w' I: Q0 J
否的话进入我们的等级公式:
妖城在线论坛; u: W }. t( N6 s7 w6 l5 y
(等级*等级*等级除以50)*等级
5 }1 g6 y/ E' A8 [' C7 T2 Abbs.mocwww.com
也就是等级三次方除以50再乘以等级
妖城在线论坛. O% Q7 `. y ?2 a g) @
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。
5 E, N0 X" W' ` v& O
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
$ e: j+ c1 b p. D4 d魔力私服,最新魔力宝贝私服技术交流
所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
妖城在线论坛* \) r7 h. P0 X7 X( F3 \
6 Z1 E1 ^7 c& l; cbbs.mocwww.com
接下去做公式:
9 {$ H3 u6 i F( M5 D7 F
Push ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验
* |. R4 V2 v, S% ?' M! x
Mov eax,edx 将下一等级的值赋值给eax
3 o' M0 ]2 K8 j T9 x( s' m妖城在线论坛
Imul eax,edx 将eax,edx相乘,结果存到eax
; n I) R; A( M) Y) Kbbs.mocwww.com
Imul eax,edx 同上
魔力私服,最新魔力宝贝私服技术交流! w: [! D, D1 I( [
Cdq 这个做除法不加就会出错,用户登录后服务器当机
5 {, L0 D$ V* Z! |. ~& z( m魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
Idiv ecx eax除以32h算到50倍经验
魔力私服,最新魔力宝贝私服技术交流8 W* L4 i+ Z5 y& E$ N
Mov edx,[ebp+8] 从新获取下一等级的值
7 `. ^: k) l6 V6 s" u—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
Imul eax,edx 将eax,edx相乘,结果存到eax
?7 x7 ~3 F( S$ ?! t妖城在线论坛
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" B: H$ I& i5 V" }7 N0 m/ \
好了,这样就完成了运算过程。
- D5 R0 b- ^/ Q3 v0 R# F) a1 A1 T1 q妖城在线论坛
妖城在线论坛! |( z* E. u& g
.text:080740C0 loc_80740C0:
' A) D* Z+ `$ K; u' [5 H! Q魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
mov eax, 0FFFFFFFFh
5 z# P: B% d. f/ N6 \—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
jmp short locret_80740BE
$ h7 J* c5 E0 @6 ?6 D" f/ @: m
这一段代码就是等级超过你设置的上限之后返回-1。
8 \9 d- O \6 t# U% w2 P, K魔力私服,最新魔力宝贝私服技术交流
& I5 q) E5 F0 N5 p" E ]4 U2 u
魔力私服,最新魔力宝贝私服技术交流8 t0 F1 ^( n! o* c2 U8 i" \. e, p
下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。
魔力私服,最新魔力宝贝私服技术交流' c) W+ N W. ]& M% D
这里就要用到FlexHex了。
7 \ ]& I2 k% n* C
' k* z* X, F, G—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。
s j9 f, i* D7 y0 j. Q—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
如下对应:
( ~/ ?8 D- [3 g% | mbbs.mocwww.com
Cmp edx,0ffh 81 FA FF 00 00 00
! l8 Q O: u3 `$ k: c* x) F& Q
jg short loc_80740C0 71 FA
bbs.mocwww.com I2 \- s! h, ]% I R
mov ecx, 32h B9 32 00 00 00
妖城在线论坛6 X* s* e9 ^( B& s- n% H e8 A
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表$ i* S, e. Y7 b7 t; G5 Z5 H& }# d: I
依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。
bbs.mocwww.com: d N+ T9 `4 Q3 E. i8 ^6 k
这个挺有乐趣可以自己慢慢享受摸索。
3 [) u ?2 J- A6 @8 `8 a
7 w6 P1 J$ i5 A/ Z" B妖城在线论坛
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。
作者:
Maldiniymx
时间:
2009-7-19 11:49
好文章, 可以帮很多入门的来修改~
作者:
小狐狸
时间:
2009-7-19 12:20
看不懂.............
作者:
lingjin3
时间:
2009-7-19 13:04
学习学习
8 X; z0 H; I' C
谢谢楼主分享经验
作者:
剑帝
时间:
2009-7-19 15:18
感谢楼主分享,顶!
作者:
feifei1937
时间:
2009-7-23 14:17
很不错~呵呵~
继续深入,到call语句的调整和为自己的语句腾空间还有搜索无果而必须自己对着opcodes写机器码就有趣了……
欢迎光临 妖城在线论坛 (http://bbs.mocwww.com/)
Powered by Discuz! 6.0.0