没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
( J+ s$ ]! B# @妖城在线论坛使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。 妖城在线论坛. [5 f D1 \. E4 q) w5 ~+ j
- E' I) t7 _2 a3 p7 h* b% e0 g妖城在线论坛用IDA载入gmsv,分析完成后进入Exports选项卡。
& b% i! `3 ^# R—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" G, z6 _3 y3 ~! X$ K! T
.text:08074098 public CHAR_GetLevelExp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- j* U d- b( `7 d! C* n
.text:08074098 CHAR_GetLevelExp: " a; b* |- y: {: g S
.text:08074098 push ebp
6 a! |& v& h/ [5 Z* Z; N, g; _—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074099 mov ebp, esp
8 j* b3 F7 a5 F' b$ K& r妖城在线论坛.text:0807409B mov edx, [ebp+8] —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- a! t C/ I t
.text:0807409E cmp edx, 7Eh
; W3 W& j& j F# G妖城在线论坛.text:080740A1 jbe short loc_80740C0
# M6 T/ o2 I0 |; k- b# x4 `—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A3 push ecx 妖城在线论坛; c1 Y+ Z. f3 H( ]5 ~6 b
.text:080740A4 mov ecx, 7 妖城在线论坛/ X8 C! D; g3 k3 a; `$ V
.text:080740A9 push edx
* _1 O0 Z0 T- h/ D" y1 t9 u$ S—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AA mov eax, edx
: j4 T& Z; x$ x( s. ^9 X# B妖城在线论坛.text:080740AC imul eax, edx 妖城在线论坛 k; |% A( ^+ `: l0 W2 M
.text:080740AF imul eax, edx
* ^- d, |2 f! _3 G.text:080740B2 imul eax, ecx 魔力私服,最新魔力宝贝私服技术交流/ n% ~# u, C: d) a' y( z
.text:080740B6 loc_80740B6:
! F2 Y# ?. p8 R6 g, r) J—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740BE leave
' ^1 q8 ~+ J* q: O& Qbbs.mocwww.com.text:080740BF retn
3 a- h' b- v# }' \6 gbbs.mocwww.com.text:080740C0 loc_80740C0:
. j+ M; y9 p" I2 b) K1 e+ O9 q魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4] ! \" Q0 F* c N& y9 r2 y! t- M
.text:080740C7 jmp short loc_80740B6 bbs.mocwww.com8 W, t, h: Y. e5 }
[9 t' a9 [# f5 x! S# u
粗糙的解释下这段代码的意思 . k! J' z; d$ \3 q$ m
5 {9 d* [" |) i7 BPush edp
8 n( ]: p" w! u魔力私服,最新魔力宝贝私服技术交流Mov ebp,esp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表2 g8 a3 r% A* q9 a3 t
Mov edx,[ebp+8] ; f3 f1 u; [, }' Y: Q
获取当前等级的下一级存到edx 魔力私服,最新魔力宝贝私服技术交流8 [! t) Y; [# J( D1 A5 Y. N
) L, v- O2 B6 D4 B/ k" {( q" |8 b; S* X
Cmp edx,7eh 9 }$ {$ H0 F7 h
将edx与7eh也就是10进制数130比较 魔力私服,最新魔力宝贝私服技术交流8 }/ X w* Q7 I+ f
; B% W; R3 f# Q魔力私服,最新魔力宝贝私服技术交流Jbe shortloc_80740C0 bbs.mocwww.com X, r' [1 z: P. V1 F
如果edx小于7eh则进行跳转到80740C0 魔力私服,最新魔力宝贝私服技术交流% ^2 d. }1 y4 x* i: o
# l/ b. T" ~ `% `6 s妖城在线论坛Push ecx
+ E8 P+ M1 f3 K& pbbs.mocwww.comMov ecx,7
( [# I% U, H6 f* N% F5 r妖城在线论坛给ecx赋值7
( [% s6 T2 G+ h魔力私服,最新魔力宝贝私服技术交流5 v5 z& Z; d" \' Q% v
Push edx
) _" W: v( U+ o. B9 T$ `0 }魔力私服,最新魔力宝贝私服技术交流Mov eax,edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表9 F9 @9 Y- L1 g9 u' @
把当前等级+1的值给eax —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート$ [" j5 F" {5 }+ g4 A( u8 R
0 O: _/ E0 Z$ i0 G/ k. a$ o魔力私服,最新魔力宝贝私服技术交流Imul eax,edx bbs.mocwww.com% U) C0 W- Q) O( r) ~# r. ^
把eax与edx相乘,结果存在eax bbs.mocwww.com$ h8 c# P9 v8 S% E: _
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表8 K9 J/ M# a+ I: l+ A8 ~2 }
Imul eax,ecx
7 S7 S7 P+ u2 @( ~—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート把eax与ecx相乘,结果存在eax
) n. j8 K; s7 Y; I- t# \—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
& C8 {. k- z0 [% O9 v妖城在线论坛Leave 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表. y. c' o& |% G
Retn
+ Z4 i# [0 M3 t. @7 g) x: M" }bbs.mocwww.com退出这个过程吧,大概 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" ?% k2 ?/ K ^/ j+ I
/ ~/ b) t5 w; g$ t' x/ d1 N# AMov eax,dwordptrLevelUPtbl[edx*4]
+ K3 c% a6 J9 \: b魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表这里是读取经验表的内容给eax,也就是查表读经验 ) v9 _$ \* `' o7 d4 k& O4 w0 t
# b' O. ~. O2 f. W- f* N魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表jmp short loc_80740B6 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート3 c. L$ V5 U8 g* p) ?) o& K
强制跳转到80740B6
+ T0 r/ G+ `, Z5 e$ ]+ p) _妖城在线论坛魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表/ O! ~/ I* g6 B# U% E o
好了,这段代码就这点意思,逻辑上不难理解。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート, r$ ]) ?! X3 E' `9 Q/ G. [+ V
虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート' N) g& w- E9 M
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 f4 ~. ?% X8 v' z2 }. s
分析完了之后开始修改了,上面的代码具体作用如下:
8 ]0 K9 A! ^: \: M) J妖城在线论坛判断等级下一级是否小于7eh,是则跳转到查表。 妖城在线论坛5 z, u" Q( {) ~% b+ g5 e9 u. T
否的话也就是大于7eh时,按照下面算法运算
5 `4 {, E: L# X, d+ i% s魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A3 push ecx
L- t6 V0 [( ?/ E: O# l( w魔力私服,最新魔力宝贝私服技术交流.text:080740A4 mov ecx, 7
d" e2 ^& G5 f—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A9 push edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* d' j* E- H) j; x9 Y
.text:080740AA mov eax, edx 魔力私服,最新魔力宝贝私服技术交流3 Y+ a, d `9 J1 w' f' X/ o1 a
.text:080740AC imul eax, edx 魔力私服,最新魔力宝贝私服技术交流9 k' F4 X& w; G/ o9 [
.text:080740AF imul eax, edx
1 c# {7 e& C" o$ v$ h$ s, d, V8 H0 n( f.text:080740B2 imul eax, ecx bbs.mocwww.com5 y: a' c# N6 M/ q2 O
也就是eax的三次方乘以ecx,这里可以改成我想要的。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート+ c5 L9 F7 a0 \) t6 b% n% X
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート' k7 \! B/ ^8 I* i5 `/ L
我的目标是改称等级的四次方除以50,但是问题来了。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表5 R9 Y Y i/ X( X
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
# L, \% j6 M4 l, X* P0 `bbs.mocwww.com
- w: ^! _0 T" W. e3 A魔力私服,最新魔力宝贝私服技术交流.text:08074098 public CHAR_GetLevelExp 妖城在线论坛4 n! I4 \8 a* \2 u
.text:08074098 CHAR_GetLevelExp:
. ~+ g2 s6 u1 p/ ^3 z& R7 P& Y—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074098 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート' p/ V7 r+ x% I n$ z" X
.text:08074098 push ebp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% j1 M' z- z+ Q4 {8 q7 c
.text:08074099 mov ebp, esp 妖城在线论坛1 U8 C; Z" O9 L% [" f7 ~
.text:0807409B mov edx, [ebp+8]
+ g3 W' N9 _5 q5 x" d0 U魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:0807409E cmp edx, 0FFh 妖城在线论坛, H$ @& V1 `1 z6 y3 z6 d
.text:080740A4 jg short loc_80740C0 魔力私服,最新魔力宝贝私服技术交流 W; Z# j' x4 [1 o y
.text:080740A6 push ecx 魔力私服,最新魔力宝贝私服技术交流: p, L8 D3 ?- j6 u! e4 K, D
.text:080740A7 mov ecx, 32h
r2 D0 [/ v# d# o8 R3 i" e( c5 Jbbs.mocwww.com.text:080740AC push edx
- q! \+ Z1 B* K# y! Z& C/ T妖城在线论坛.text:080740AD mov eax, edx 妖城在线论坛 x% I. n2 F2 u( K
.text:080740AF imul eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表$ s! V3 \6 |5 x# u& k, g% y
.text:080740B2 imul eax, edx bbs.mocwww.com. O+ Y8 p3 L. ^; z# [/ o
.text:080740B5 cdq
# J o$ S& J5 {& f魔力私服,最新魔力宝贝私服技术交流.text:080740B6 idiv ecx 魔力私服,最新魔力宝贝私服技术交流% x9 @' e* B6 ^
.text:080740B8 mov edx, [ebp+8] ) H% k. S* F; `$ [$ ^. B$ L
.text:080740BB imul eax, edx
6 s% f C1 U; h" i魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BE bbs.mocwww.com1 E& a" f6 O& V ^2 {5 v& Z. I
.text:080740BE locret_80740BE: 妖城在线论坛1 F0 T M8 }4 p* k
.text:080740BE leave
- j) A: o: J. M" m3 ~5 ], z8 |.text:080740BF retn
0 U4 ~0 F# j0 r& A' f. }& M- c魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0 loc_80740C0: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& m- k- `" J- }" p6 Z- e5 N
.text:080740C0 mov eax, 0FFFFFFFFh bbs.mocwww.com) l/ t6 i" S1 T3 {
.text:080740C5 jmp short locret_80740BE 0 ~+ N" e1 N8 M4 K8 ^) l. S
5 ^: k7 ?: B' L" t' h6 h7 o- t0 @& `0 G魔力私服,最新魔力宝贝私服技术交流方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
+ z+ Q4 C- S1 abbs.mocwww.comCmp edx,0FFh 魔力私服,最新魔力宝贝私服技术交流: }/ \6 J2 C: n! m. \" }) V
Jg shortloc_8074C0 妖城在线论坛) o2 ^0 P* N, X8 s; o- G
判断等级是否大于255是的话跳转80740C0 妖城在线论坛0 o1 D4 p6 d) v8 Y
否的话进入我们的等级公式: 1 K: C; I4 c/ C3 \4 Y( z- h
(等级*等级*等级除以50)*等级 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 e8 c3 g6 g# J0 U% @
也就是等级三次方除以50再乘以等级 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( F) g* n: C0 Y4 k% |- X
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ u L) ?/ B2 E8 T3 T
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。 bbs.mocwww.com, M' X7 R" W) o; D" t
所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
/ a& o' M* W- ]. f1 j( L* S2 u
- C# h ^+ a0 _6 ~% _2 w* g+ a妖城在线论坛接下去做公式: 妖城在线论坛! o- }5 q5 b" U1 N8 [
Push ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验
7 h$ h7 _8 a1 D; }4 x5 [bbs.mocwww.comMov eax,edx 将下一等级的值赋值给eax 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表# V; C3 A+ M- h$ {
Imul eax,edx 将eax,edx相乘,结果存到eax
/ ~, Y/ x" W& K# ]8 x- t魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Imul eax,edx 同上 魔力私服,最新魔力宝贝私服技术交流3 U4 I: i) @2 L a' @# W6 O
Cdq 这个做除法不加就会出错,用户登录后服务器当机 魔力私服,最新魔力宝贝私服技术交流: L+ y% e E" d+ q" Q
Idiv ecx eax除以32h算到50倍经验
[1 l7 ?& J+ D$ e/ X k% u8 P# [& S# zMov edx,[ebp+8] 从新获取下一等级的值
, h- h( s6 e$ c, y# Z$ Y—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートImul eax,edx 将eax,edx相乘,结果存到eax —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( h- w6 Z! ]( o) J$ E b
* q; @& K3 `# |4 fbbs.mocwww.com好了,这样就完成了运算过程。
|4 i/ ^' M- L6 \魔力私服,最新魔力宝贝私服技术交流
3 G; o q* ?; ^魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0 loc_80740C0:
- p) \0 d8 o+ s1 s4 n魔力私服,最新魔力宝贝私服技术交流mov eax, 0FFFFFFFFh
: A s8 s9 D; `) j$ ?7 z—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートjmp short locret_80740BE
" e" q3 X* |* H, z: m* Obbs.mocwww.com这一段代码就是等级超过你设置的上限之后返回-1。
& \, r* K7 B- N% V4 z" r魔力私服,最新魔力宝贝私服技术交流魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' z% |9 Q5 S) `" c" G. n( O$ j
% }) Q. t3 V- E5 p! P
下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 bbs.mocwww.com e: T4 r9 \4 S0 ^! o7 U
这里就要用到FlexHex了。 妖城在线论坛8 a3 n) q; T* J. H/ E1 |/ j
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表$ k. [ y* L9 D8 r! {" o
首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。
4 `# ~3 Z* s2 M/ {0 `魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表如下对应:
+ g0 y3 f8 f) e# O魔力私服,最新魔力宝贝私服技术交流Cmp edx,0ffh 81 FA FF 00 00 00
' E) F% Q9 F* e7 b! [( j0 @; p—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートjg short loc_80740C0 71 FA
3 L2 |/ R3 w- P% F! }) G& Qbbs.mocwww.commov ecx, 32h B9 32 00 00 00
+ x2 m1 k- [4 L. t0 B' a魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表妖城在线论坛+ J/ b2 v: P/ Y4 H' j
依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。 ( o$ a2 K, M* a5 p/ c9 ?) s# ~) V4 ~
这个挺有乐趣可以自己慢慢享受摸索。
) l3 V1 m8 [* l4 w+ U魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
: _) V. q8 U2 B( M7 N) g$ E; j% k妖城在线论坛以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。