发新话题
打印

[魔力私服分享] 没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 妖城在线论坛' r1 ]" Y, y* ?* P6 O
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
, g0 C# k- G2 i) k# y4 G妖城在线论坛
/ K; U: Z' |: ~- [3 t' B9 s, v* J魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表用IDA载入gmsv,分析完成后进入Exports选项卡。
5 L& }7 \3 t8 U+ ^" Ybbs.mocwww.com搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。 妖城在线论坛, d0 d* O! p& B; u6 R, `, r7 F& o0 }! n
.text:08074098                 public CHAR_GetLevelExp bbs.mocwww.com  G% s0 j7 l: G" `
.text:08074098 CHAR_GetLevelExp:
$ y+ E% S4 c3 [. m6 a0 c- }1 dbbs.mocwww.com.text:08074098                 push    ebp bbs.mocwww.com& b1 O$ q6 A" D
.text:08074099                 mov     ebp, esp 妖城在线论坛, V9 n7 K$ a+ ]- a
.text:0807409B                 mov     edx, [ebp+8] bbs.mocwww.com# Q$ k- d* S: i! n' a: u3 ]2 `& i
.text:0807409E                 cmp     edx, 7Eh
; O  v* r$ ]2 d+ vbbs.mocwww.com.text:080740A1                 jbe     short loc_80740C0 魔力私服,最新魔力宝贝私服技术交流: [5 x4 p' D- D: [. F9 K
.text:080740A3                 push    ecx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート7 S' }& j* m  t
.text:080740A4                 mov     ecx, 7
. q4 [% g; @3 \% [妖城在线论坛.text:080740A9                 push    edx
* y; z/ p- @4 @& m—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AA                 mov     eax, edx
7 z6 O; @  M2 n* p' B7 j妖城在线论坛.text:080740AC                 imul    eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート6 F' p" b& F; n, n* |
.text:080740AF                 imul    eax, edx
( q' O# h1 |% u- J2 {—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740B2                 imul    eax, ecx
% P+ y" @1 V; H魔力私服,最新魔力宝贝私服技术交流.text:080740B6 loc_80740B6:   1 |+ N* A$ u* |3 D/ }' J5 r
.text:080740BE                 leave
5 t1 T5 L6 n( I" J! u+ [% _—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740BF                 retn * }3 I3 i( K" r+ I1 {+ q
.text:080740C0 loc_80740C0:                           魔力私服,最新魔力宝贝私服技术交流* L7 y3 S; S3 N# @! {
.text:080740C0                 mov     eax, dword ptr LevelUpTbl[edx*4]
4 G. m1 V! F; r5 B, l, {魔力私服,最新魔力宝贝私服技术交流.text:080740C7                 jmp     short loc_80740B6
7 e4 o3 {# d8 Q1 E9 T* T妖城在线论坛
; w; }2 X8 M2 R+ }0 R- Cbbs.mocwww.com粗糙的解释下这段代码的意思 妖城在线论坛8 f$ r5 M3 r, M& W; I& w6 z9 D
妖城在线论坛# p3 ~4 d  a3 M+ |+ I8 ?2 G
Push              edp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" F) l; |1 u8 U
Mov        ebp,esp 妖城在线论坛6 w. \1 {/ e1 T" W5 j# z+ W+ n$ F- ?
Mov        edx,[ebp+8] 魔力私服,最新魔力宝贝私服技术交流' z$ I( |" @+ t4 V5 ^
获取当前等级的下一级存到edx 魔力私服,最新魔力宝贝私服技术交流6 D/ s/ C% T( @# Z& D( M: l! T/ Y

0 b$ {$ a& s" L; H% [& }9 lbbs.mocwww.comCmp              edx,7eh 妖城在线论坛6 |9 @! E. q* a" M% G: G: @$ p/ n, l
将edx与7eh也就是10进制数130比较
' s8 Y( X3 f5 X! k  c% p# O—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
$ H0 f; B$ B' L1 G9 E妖城在线论坛Jbe         shortloc_80740C0
5 x  }4 `: P* D魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表如果edx小于7eh则进行跳转到80740C0 妖城在线论坛* n, m& S7 x. E
魔力私服,最新魔力宝贝私服技术交流/ W7 Y/ `/ B, {" P
Push       ecx 妖城在线论坛4 D% z1 N1 l$ ?: v9 v0 Q" Z' P% i
Mov        ecx,7 妖城在线论坛1 g4 A$ {1 O) v0 a( ?. ^
给ecx赋值7
2 H% x1 U$ I" {4 L2 y  p# r1 ]* Lbbs.mocwww.com
9 T+ K0 ^5 h9 Z& K, N魔力私服,最新魔力宝贝私服技术交流Push              edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート! r0 M& N3 N+ o9 K4 u& u. O$ O) ~
Mov        eax,edx 6 Q3 w: I5 H, L
把当前等级+1的值给eax 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表1 J# z! j1 S- ~9 z2 C
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート! j3 }) J$ r. q& ~  E
Imul              eax,edx
* i& d7 Q$ q+ F5 U6 c0 ^2 g3 tbbs.mocwww.com把eax与edx相乘,结果存在eax
" v& A% u9 ]  w—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
& Y' P! b; }  l" }( u; J2 k魔力私服,最新魔力宝贝私服技术交流Imul              eax,ecx 魔力私服,最新魔力宝贝私服技术交流  `) S$ P% m  X2 o! Q! Q% m7 b
把eax与ecx相乘,结果存在eax bbs.mocwww.com; u- _# V/ {- V" n

$ L5 v) ?8 Z% D# Y9 T) fLeave —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" M3 a( ~: a7 T* |' @) `+ A
Retn # k2 S, i4 h+ ^- q/ K3 q
退出这个过程吧,大概 bbs.mocwww.com7 n9 q$ g3 u9 x! x* L
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート/ |' m; z. G2 B4 w4 @% [
Mov        eax,dwordptrLevelUPtbl[edx*4] 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ `( ^$ q- j$ [* T( X2 s1 q' p" D' J
这里是读取经验表的内容给eax,也就是查表读经验
; J0 ]3 |6 `9 n% t% A0 \
: W2 ?1 G/ A1 u! L& v—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートjmp     short loc_80740B6
6 R( T. J8 l0 h# H+ G8 V' G2 Gbbs.mocwww.com强制跳转到80740B6 魔力私服,最新魔力宝贝私服技术交流, h$ U! s, W- R/ w7 Y9 b3 t
5 @# y# \0 I* d; J& |. \% q
好了,这段代码就这点意思,逻辑上不难理解。
* P! E& o& d) T7 g虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
! Y( d8 t9 \2 K1 d, n) g魔力私服,最新魔力宝贝私服技术交流
# z/ g. B( o4 ~7 J$ I/ B分析完了之后开始修改了,上面的代码具体作用如下:
" O& B3 E+ R, ~3 S' f" D$ Q: kbbs.mocwww.com判断等级下一级是否小于7eh,是则跳转到查表。 妖城在线论坛+ J/ h+ ~- U' p1 J! m
否的话也就是大于7eh时,按照下面算法运算 妖城在线论坛; N4 _! \( e8 X
.text:080740A3                 push    ecx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表; ?$ y' k" Z5 N. a
.text:080740A4                 mov     ecx, 7 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート$ _+ X! r* v2 C& ^) g0 X. C
.text:080740A9                 push    edx
$ f2 s+ Q) c' F- I. Z.text:080740AA                 mov     eax, edx 魔力私服,最新魔力宝贝私服技术交流5 e- P; ?( S/ i9 }- }. G: d
.text:080740AC                 imul    eax, edx
( F" c  i6 U  W# F9 g* obbs.mocwww.com.text:080740AF                 imul    eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- ]0 i( C, F6 T" x; |& e5 b
.text:080740B2                 imul    eax, ecx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% }7 ^8 t$ [. W1 k8 q% @
也就是eax的三次方乘以ecx,这里可以改成我想要的。
1 ~+ M! J. `+ z* g妖城在线论坛bbs.mocwww.com% l8 Q! K! e9 o3 F3 U* \: c
我的目标是改称等级的四次方除以50,但是问题来了。 妖城在线论坛* x! F4 ?1 V! `  @- R& D: e1 m& u
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。 bbs.mocwww.com+ f& P4 r" D& \

% S' H8 S2 `& M8 ^& L0 Q7 @+ s3 p魔力私服,最新魔力宝贝私服技术交流.text:08074098                 public CHAR_GetLevelExp
+ S) Y+ z( G/ v9 P; pbbs.mocwww.com.text:08074098 CHAR_GetLevelExp: & `* y, \9 @, x/ c  w( ~9 Y
.text:08074098               
. r3 o( }8 }) v% M5 m魔力私服,最新魔力宝贝私服技术交流.text:08074098                 push    ebp 妖城在线论坛6 v  C7 S) M5 m' Y5 ~
.text:08074099                 mov     ebp, esp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表1 [4 i$ b4 m, |$ y: d- a
.text:0807409B                 mov     edx, [ebp+8]
. J3 E& t2 R1 r4 B; B2 j9 n6 c' w—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:0807409E                 cmp     edx, 0FFh bbs.mocwww.com: z8 x7 b; m+ e
.text:080740A4                 jg      short loc_80740C0
7 k+ Y/ `' m4 p# J% x" o% z.text:080740A6                 push    ecx
5 D8 w% V$ {' pbbs.mocwww.com.text:080740A7                 mov     ecx, 32h
$ E* X, o: ?# j7 \bbs.mocwww.com.text:080740AC                 push    edx 妖城在线论坛- F" S* v/ ]5 y" ?2 c
.text:080740AD                 mov     eax, edx 5 S8 `2 q6 c3 p, ?
.text:080740AF                 imul    eax, edx 魔力私服,最新魔力宝贝私服技术交流. S' Z1 r/ k+ b( f7 ?1 d
.text:080740B2                 imul    eax, edx $ E" }4 E+ Z8 `9 {5 M
.text:080740B5                 cdq
* d" T1 \( v) L! H* ^9 C8 s1 ]) i—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740B6                 idiv    ecx bbs.mocwww.com8 F$ G7 H5 b3 M( M7 I
.text:080740B8                 mov     edx, [ebp+8]
, r2 V! E$ k' b2 m) c魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BB                 imul    eax, edx 妖城在线论坛0 \# n! p8 a3 c8 d, e# V( O
.text:080740BE
' a5 Z" B% e' S( S* {, s妖城在线论坛.text:080740BE locret_80740BE:                     
# n( D1 m. |% x5 u0 z6 \—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740BE                 leave ! L9 s+ ~3 D) S% J1 @& x/ Q3 x
.text:080740BF                 retn
2 |0 O4 E4 Q5 ^% x.text:080740C0 loc_80740C0:                        
: F" ^6 D; s+ K/ ~4 y: z% t6 X魔力私服,最新魔力宝贝私服技术交流.text:080740C0                 mov     eax, 0FFFFFFFFh
! _1 I. q$ j: ?% N* q! t妖城在线论坛.text:080740C5                 jmp     short locret_80740BE
; B# e( G5 h1 ~+ o/ E* y' G+ N# ^魔力私服,最新魔力宝贝私服技术交流/ A9 {; n+ r3 a6 ^5 b; j" _5 @
方便起见这里直接把我改好的代码贴出来,与原来不同的地方: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表  ^$ z; ?- x2 `8 M1 W5 {
Cmp              edx,0FFh
6 |; q8 v) U+ U0 K2 r妖城在线论坛Jg           shortloc_8074C0 魔力私服,最新魔力宝贝私服技术交流6 Z* I5 H, i  k' b
判断等级是否大于255是的话跳转80740C0 妖城在线论坛( ?( X, O! D  o6 p
否的话进入我们的等级公式: 妖城在线论坛7 N  \( z9 ^) G! D8 I
(等级*等级*等级除以50)*等级 bbs.mocwww.com( `5 o7 _% A9 S$ w$ Y' i
也就是等级三次方除以50再乘以等级
. r3 e( p! T  \; J  s4 `  W—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。 bbs.mocwww.com) ~- H3 D8 o' z+ z  f0 K4 t
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。 # g" V& ?. u. U: y
所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
! m. Q9 H# @) Q4 T妖城在线论坛; W5 F6 o$ l1 J  d& `5 D
接下去做公式:
, O5 J" Y7 y+ r魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Push              ecx,32h          这里是经验倍率,就是公服经验除以ecx等于你的经验
4 u* J% S/ b8 u; D: h: n* dMov        eax,edx      将下一等级的值赋值给eax $ y, l. J) T( ^+ o7 L
Imul              eax,edx          将eax,edx相乘,结果存到eax —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート6 v% J; ^6 A6 h$ {5 c# e
Imul              eax,edx          同上 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) R: Q# V& A% T6 J
Cdq                             这个做除法不加就会出错,用户登录后服务器当机 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表/ [$ W; o9 @/ T# t9 Y9 e1 g# j
Idiv        ecx                eax除以32h算到50倍经验
3 Z* o& O7 h6 Z7 J$ L" a7 aMov        edx,[ebp+8]    从新获取下一等级的值
7 E/ p8 s2 U2 r2 i  j  rImul              eax,edx          将eax,edx相乘,结果存到eax
1 z1 q- I% `9 \8 nbbs.mocwww.com; Z/ j7 z/ A: Z
好了,这样就完成了运算过程。 bbs.mocwww.com: P8 g8 s. t, R/ z! ?8 [8 p+ Q2 G& y

* `8 ]; f1 M0 s$ ?& y—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740C0 loc_80740C0:                         4 F4 }8 k4 T( e+ M5 K9 p: T( y
mov     eax, 0FFFFFFFFh 妖城在线论坛8 A9 [* I3 j% O; b
jmp     short locret_80740BE
- l6 q8 b% K1 P, B' V9 ]魔力私服,最新魔力宝贝私服技术交流这一段代码就是等级超过你设置的上限之后返回-1。
: N1 f5 u* F9 S. Z—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
# A5 E# p' P2 w( F0 [8 b/ J魔力私服,最新魔力宝贝私服技术交流
( N# f# Q% b% v7 e1 }9 w8 N魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。
7 w! u5 E$ O8 G. P& s这里就要用到FlexHex了。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表5 o& G% R' p9 `) o* G3 }8 ^/ Z

0 m9 u& W( i% @- \. ^! h' m魔力私服,最新魔力宝贝私服技术交流首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。
! P# [1 h, H  o/ ^7 I$ H如下对应: 妖城在线论坛: W& }8 z* d: _0 `8 [
Cmp              edx,0ffh                       81  FA  FF  00  00  00
$ H7 ~$ O' B% ]1 ~& X7 ]% {jg      short loc_80740C0         71  FA 妖城在线论坛+ @6 g! g, L; j* _5 Z
mov     ecx, 32h                      B9  32  00  00  00
" ?1 Y8 o0 b7 ?* i: U—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート. @0 T1 l. ~; e1 |/ ~
依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。 % M0 M, I$ t% Z  R
这个挺有乐趣可以自己慢慢享受摸索。
: p: |3 I( |3 s" h- }: v—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート妖城在线论坛. |/ W' T7 V  c$ O+ x
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。

TOP

好文章, 可以帮很多入门的来修改~

TOP

看不懂.............

TOP

学习学习—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート  j# A4 k  }& m: l# R5 d" [- z# i0 h
谢谢楼主分享经验

TOP

感谢楼主分享,顶!

TOP

很不错~呵呵~ 继续深入,到call语句的调整和为自己的语句腾空间还有搜索无果而必须自己对着opcodes写机器码就有趣了……

TOP

发新话题