没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 W+ s$ b) X8 [) T) |
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。 4 q1 u5 {( B3 a$ h6 A1 z) C. \4 j
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ f* W" ~; f- \. }$ L
用IDA载入gmsv,分析完成后进入Exports选项卡。
$ z7 n# Q- T9 _! Q3 X x魔力私服,最新魔力宝贝私服技术交流搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。 bbs.mocwww.com. ~% D, Q. w" N
.text:08074098 public CHAR_GetLevelExp
9 _! u2 A$ G8 w$ Ebbs.mocwww.com.text:08074098 CHAR_GetLevelExp:
' m2 } T2 @6 ~3 {.text:08074098 push ebp 魔力私服,最新魔力宝贝私服技术交流$ W" H' a' R. x8 E `- J2 c$ ?, c
.text:08074099 mov ebp, esp ( ]$ ]3 {! V4 y$ y
.text:0807409B mov edx, [ebp+8] bbs.mocwww.com; ]1 K1 ~- A+ E/ P6 ?
.text:0807409E cmp edx, 7Eh 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% }( N1 m2 R% c
.text:080740A1 jbe short loc_80740C0
2 E$ M+ o7 o) o$ { B# L: mbbs.mocwww.com.text:080740A3 push ecx bbs.mocwww.com* x) `$ t0 N! C
.text:080740A4 mov ecx, 7 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 b2 Y9 b5 r7 r* c! F8 l4 e5 t" k
.text:080740A9 push edx $ [; g; G3 ]$ E7 H; A R
.text:080740AA mov eax, edx
- L4 ]2 C R$ T1 y2 x. O4 M$ M5 q魔力私服,最新魔力宝贝私服技术交流.text:080740AC imul eax, edx
, v0 S5 F+ f$ i+ Abbs.mocwww.com.text:080740AF imul eax, edx 妖城在线论坛( F) A/ K# P; U) c& ~ } s2 c) Y
.text:080740B2 imul eax, ecx
/ O) ~/ }% ]0 G& T) P: ]bbs.mocwww.com.text:080740B6 loc_80740B6:
! L( _' l2 k) v魔力私服,最新魔力宝贝私服技术交流.text:080740BE leave bbs.mocwww.com. O0 F6 k' C2 B- N6 I. m3 R1 F* n
.text:080740BF retn
, i+ Q9 t, n# S4 C2 {' W1 n魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0 loc_80740C0: 魔力私服,最新魔力宝贝私服技术交流+ r% }6 n8 a+ @# D4 K6 b
.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4]
' Z3 P# t- G( w h2 d—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740C7 jmp short loc_80740B6 妖城在线论坛! m6 J9 O2 b# U
3 P p/ O0 b$ L# [$ }6 p1 m0 |魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表粗糙的解释下这段代码的意思 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表$ ^. m+ p' k; F9 a
bbs.mocwww.com* n8 ]" K! G" |1 G: Q; }: Y
Push edp
3 g0 [5 A# ]5 Q* q1 x* Cbbs.mocwww.comMov ebp,esp
9 N0 e9 X, t% Z+ L—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートMov edx,[ebp+8]
. A6 A$ \ G, ~! o7 G" O/ c" |8 o妖城在线论坛获取当前等级的下一级存到edx
4 |4 ]7 B B; _; x魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
& E6 b7 f; Z, S+ j! Ibbs.mocwww.comCmp edx,7eh bbs.mocwww.com* E& F0 J- r% Y( K7 y. [
将edx与7eh也就是10进制数130比较
# @+ S1 o) P8 U5 E—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
, ]4 w$ L' B" Q$ P- x* O妖城在线论坛Jbe shortloc_80740C0
: O/ n l+ o) e& a0 W' @9 Z/ X妖城在线论坛如果edx小于7eh则进行跳转到80740C0 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表/ x6 N* f8 z6 h3 b2 b
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 M* @1 } z2 U! S: u7 c
Push ecx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" h9 x0 p% h/ Y' f/ j, `0 z
Mov ecx,7 # i) e7 k3 a" ?, J
给ecx赋值7
3 g7 D5 O. m$ J魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表妖城在线论坛! d, i4 R: S8 k! ~. C- p
Push edx 魔力私服,最新魔力宝贝私服技术交流. r" Z! g2 t9 T
Mov eax,edx 7 B$ x7 [4 w! e ?
把当前等级+1的值给eax
z5 Y: X) O) Pbbs.mocwww.com—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" [5 f/ F1 u% v$ R$ J
Imul eax,edx bbs.mocwww.com* u$ ^! I7 Q' u. E4 S2 X
把eax与edx相乘,结果存在eax bbs.mocwww.com+ Y7 C6 `" ]4 x- k* m+ {2 D2 H
+ g [4 E& N$ o% kImul eax,ecx
: q% P0 c/ p4 R* I0 @6 s* f把eax与ecx相乘,结果存在eax 妖城在线论坛" y+ F" E+ _) M3 c8 H0 ]0 \
' J" n- O! `3 p6 m妖城在线论坛Leave
4 h' O+ @* s+ J1 A" t: _5 c$ K, z魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Retn
) p' \7 l2 J6 X f7 O" r) E2 H8 vbbs.mocwww.com退出这个过程吧,大概 妖城在线论坛! ]1 i, F) L" g' W
5 o6 L" Q4 a( ~0 OMov eax,dwordptrLevelUPtbl[edx*4] —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート6 N/ J1 i" |* y; e9 R
这里是读取经验表的内容给eax,也就是查表读经验
# d& B; K* z" c3 B2 n& f5 c妖城在线论坛' b- Q* P# {6 f7 b) Q' X; e9 V
jmp short loc_80740B6 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート, q) W- Y% l7 g9 |
强制跳转到80740B6
/ _/ B0 C/ F: D4 w$ S+ V, |( i! {; \
好了,这段代码就这点意思,逻辑上不难理解。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( s& ^7 p/ o& f( t" t' F& G
虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。 bbs.mocwww.com, B, ~9 ?! }- h" l! ?' f
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" E6 e# L5 l3 Z/ _9 t" ?& H
分析完了之后开始修改了,上面的代码具体作用如下: " n4 o- a$ A' H; y6 j7 \
判断等级下一级是否小于7eh,是则跳转到查表。 妖城在线论坛% z7 O, p1 Y$ L8 F6 M
否的话也就是大于7eh时,按照下面算法运算
. D: p( ]1 @2 [% R. }- y4 }8 K, n. b妖城在线论坛.text:080740A3 push ecx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート& y' o- z$ H6 |8 O+ v7 m
.text:080740A4 mov ecx, 7 # @! N! H+ V) a: q) d- T
.text:080740A9 push edx 妖城在线论坛/ p( N; S$ E& U& m0 U6 e
.text:080740AA mov eax, edx
% N% u: ]2 s* O/ K( I魔力私服,最新魔力宝贝私服技术交流.text:080740AC imul eax, edx
; ?( X2 K" |! O妖城在线论坛.text:080740AF imul eax, edx
3 G6 R* y$ V. A: {7 p$ U魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740B2 imul eax, ecx
" U7 E" w/ }8 B" B5 B" c* {1 ~3 _魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表也就是eax的三次方乘以ecx,这里可以改成我想要的。 魔力私服,最新魔力宝贝私服技术交流/ v- h4 f: d k! s0 d4 D3 g
妖城在线论坛( k0 q* ^. {2 t2 }; F& _
我的目标是改称等级的四次方除以50,但是问题来了。
1 o# U U$ {& Z8 D6 q3 b妖城在线论坛怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
1 a$ v. {- c- ^/ v妖城在线论坛
; ?9 Y& X' k# e+ m) y* _8 K$ s# d.text:08074098 public CHAR_GetLevelExp 魔力私服,最新魔力宝贝私服技术交流! h8 ?$ }5 d N/ L2 R: x& K6 K
.text:08074098 CHAR_GetLevelExp:
6 T! Q6 I2 h5 \3 Y# \) x+ I; ^bbs.mocwww.com.text:08074098 魔力私服,最新魔力宝贝私服技术交流$ s- v2 w2 n W
.text:08074098 push ebp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 U( e4 Y) V7 ? b3 |
.text:08074099 mov ebp, esp 魔力私服,最新魔力宝贝私服技术交流0 d, |( p% l* m& E1 B
.text:0807409B mov edx, [ebp+8]
2 [& D. j! M' R5 E9 ]魔力私服,最新魔力宝贝私服技术交流.text:0807409E cmp edx, 0FFh $ v- m' v% h) [. g
.text:080740A4 jg short loc_80740C0 妖城在线论坛1 B% \9 \ P% Q; S$ ^* t6 t& D
.text:080740A6 push ecx
# y: E$ G$ s. O: @8 q魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A7 mov ecx, 32h 妖城在线论坛3 I) p7 x4 n; ?3 w {
.text:080740AC push edx
) n# l8 r3 y6 c, ]2 A$ d: n7 ibbs.mocwww.com.text:080740AD mov eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( `5 J+ W6 p8 L) r3 H
.text:080740AF imul eax, edx
& X' w+ m; `% E# m0 {& W魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740B2 imul eax, edx
2 p* i0 s) j8 y魔力私服,最新魔力宝贝私服技术交流.text:080740B5 cdq 5 e' c# k2 D- r' E1 O
.text:080740B6 idiv ecx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 V5 |, R( Z0 k7 d
.text:080740B8 mov edx, [ebp+8] ! A% R1 D7 o# B" N0 a
.text:080740BB imul eax, edx 8 d% E. K% _% D' f; s- a
.text:080740BE
+ Z) @: \; a2 d7 L魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BE locret_80740BE: 魔力私服,最新魔力宝贝私服技术交流0 H- H; z8 h5 e& i5 ~
.text:080740BE leave
8 O5 R2 w6 b/ k3 U6 q. Tbbs.mocwww.com.text:080740BF retn
5 T7 _+ u: F; e$ F5 t魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0 loc_80740C0: bbs.mocwww.com0 D- v5 ]3 M% C, E
.text:080740C0 mov eax, 0FFFFFFFFh 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表7 K( @& K2 [2 _) T5 i4 N
.text:080740C5 jmp short locret_80740BE , o6 a- L, C, c2 e
妖城在线论坛8 x' l+ o# i, r( C
方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
5 T/ a2 s/ y6 s魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Cmp edx,0FFh bbs.mocwww.com& x* d. A. t9 e' E6 V
Jg shortloc_8074C0 魔力私服,最新魔力宝贝私服技术交流. _' l' m/ y, l/ J$ j& p- q/ I# m
判断等级是否大于255是的话跳转80740C0
- w q2 y, S: z/ w b- f( s$ F妖城在线论坛否的话进入我们的等级公式: ; w1 d; c+ @6 R; T0 F8 h- Q
(等级*等级*等级除以50)*等级
$ n& ^9 g0 d. H魔力私服,最新魔力宝贝私服技术交流也就是等级三次方除以50再乘以等级
1 P$ e% O; o9 C7 \bbs.mocwww.com为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。 魔力私服,最新魔力宝贝私服技术交流/ K: u3 y. z- k! [" G+ \1 w. d! u7 t
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。 ( k' W' Y+ t1 C4 A1 |
所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
6 y M2 n% }% [: K9 ?/ L2 v魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表魔力私服,最新魔力宝贝私服技术交流7 l! s! E" D2 t' } B
接下去做公式: 7 E4 r/ i; L/ D
Push ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验
( ~5 N( N; Z0 a, Z& Dbbs.mocwww.comMov eax,edx 将下一等级的值赋值给eax
' ]. ?1 m* u+ ^7 J0 X魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Imul eax,edx 将eax,edx相乘,结果存到eax 妖城在线论坛5 f* i- O& n6 y5 L9 i% z4 K
Imul eax,edx 同上 bbs.mocwww.com; z$ q! j! ]8 E5 g
Cdq 这个做除法不加就会出错,用户登录后服务器当机
4 K* @0 }: h, y: b F( b2 [3 Dbbs.mocwww.comIdiv ecx eax除以32h算到50倍经验
8 _* q. K$ @$ Y; R O3 D/ ^) L魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Mov edx,[ebp+8] 从新获取下一等级的值 妖城在线论坛3 i% c5 ^( ^2 t. H, a; n
Imul eax,edx 将eax,edx相乘,结果存到eax 妖城在线论坛% M$ B. {* W/ }( V2 G! S+ I
妖城在线论坛; n+ _ }$ ?9 k/ h3 h0 D9 q% Z
好了,这样就完成了运算过程。 2 Q, J6 V7 K9 p5 {* P* Q1 ?
: H. s7 C% k% L4 `/ j w魔力私服,最新魔力宝贝私服技术交流.text:080740C0 loc_80740C0: bbs.mocwww.com0 |% v4 o9 L. O- m1 p3 M
mov eax, 0FFFFFFFFh
& n; q- T# _* e5 e! p; H1 S—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートjmp short locret_80740BE bbs.mocwww.com! V- l9 I: k( o8 B
这一段代码就是等级超过你设置的上限之后返回-1。 ( i J ]; a* E V8 r4 h- \7 H
魔力私服,最新魔力宝贝私服技术交流: J* P$ |2 X4 K/ {8 n" w
bbs.mocwww.com# i" }; c- a* B& z
下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。
/ @: f/ i: |, ~9 c! ~3 S这里就要用到FlexHex了。 妖城在线论坛- I& Y' \8 ]; @4 j4 |$ e
bbs.mocwww.com! d! p) T( s% Z" R5 l
首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。
( e* b8 w& l0 a3 ~ e5 ]9 P4 k- w8 ~bbs.mocwww.com如下对应: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表8 s# g4 v0 l ~1 n
Cmp edx,0ffh 81 FA FF 00 00 00 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" p9 f! K; O; }
jg short loc_80740C0 71 FA
' c5 n2 L- V& O) L4 c: N魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表mov ecx, 32h B9 32 00 00 00
$ @) p! e; ~) v+ d4 A+ u; mbbs.mocwww.combbs.mocwww.com3 j7 ]: l. A9 P* [4 c( Z* o) g
依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。 " S1 h( M" Q, D+ A; p1 k
这个挺有乐趣可以自己慢慢享受摸索。 魔力私服,最新魔力宝贝私服技术交流, Z. M" v+ d( O: i/ j
bbs.mocwww.com/ W3 d9 i: J8 O% B4 m
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。