发新话题
打印

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

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

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 % c: `5 W, Q: n, O9 k. o% c# o$ K
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
% j1 }. V! }' v0 L7 G  \0 U( ^3 g" [3 l2 c' ^
用IDA载入gmsv,分析完成后进入Exports选项卡。 bbs.mocwww.com2 W6 M5 g4 L; u
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。 bbs.mocwww.com( H) A8 n; o( F6 O  b0 f
.text:08074098                 public CHAR_GetLevelExp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート3 A3 R! r8 m$ w4 z5 \
.text:08074098 CHAR_GetLevelExp:
8 ]5 ~0 Z, ^8 H.text:08074098                 push    ebp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート. W2 y- \2 `7 X  h
.text:08074099                 mov     ebp, esp + _% f4 Y, U) O+ G8 T* F( t
.text:0807409B                 mov     edx, [ebp+8] % K; M6 Y: G* j7 `: {. a
.text:0807409E                 cmp     edx, 7Eh 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表; v: a# u1 y& w4 j( {' K& f1 |
.text:080740A1                 jbe     short loc_80740C0 魔力私服,最新魔力宝贝私服技术交流8 v9 a0 q% x/ s" f
.text:080740A3                 push    ecx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表/ X9 v4 _7 }% [$ X+ b: p
.text:080740A4                 mov     ecx, 7
. m+ q, [& Y" x6 Ibbs.mocwww.com.text:080740A9                 push    edx
! Z& Q/ m# J4 Z  g, q! [2 a6 z.text:080740AA                 mov     eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' `2 i' z, j; K2 s' h% O& [" D, H
.text:080740AC                 imul    eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート  o9 A4 x+ K: J
.text:080740AF                 imul    eax, edx ' S1 n4 b. r/ [4 Y
.text:080740B2                 imul    eax, ecx
3 g2 a* O$ y- m8 t' Q: @.text:080740B6 loc_80740B6:   妖城在线论坛* I% H5 V" W5 h& c, a  \
.text:080740BE                 leave
$ B/ D3 Q: g$ l6 S) ~4 S魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BF                 retn
1 Y; g9 ~; I! Z/ A  E1 [bbs.mocwww.com.text:080740C0 loc_80740C0:                           bbs.mocwww.com- J6 y& Z# X  Q2 j+ f1 {3 P
.text:080740C0                 mov     eax, dword ptr LevelUpTbl[edx*4]
6 m. \5 |& V# R. P# T4 y0 H魔力私服,最新魔力宝贝私服技术交流.text:080740C7                 jmp     short loc_80740B6
( O; U1 H/ z' E6 @bbs.mocwww.com魔力私服,最新魔力宝贝私服技术交流  y0 `$ Y( w$ c" ^- w) Q
粗糙的解释下这段代码的意思
4 H4 O2 `' H4 P3 Y0 x5 f2 w+ _魔力私服,最新魔力宝贝私服技术交流
6 w8 Y2 W3 v- ^) u/ ?' \5 a1 o魔力私服,最新魔力宝贝私服技术交流Push              edp
" f1 s' }. Z  q( E1 g5 ]% U# |—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートMov        ebp,esp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* I8 Q: ?1 P* W7 v6 m
Mov        edx,[ebp+8] 妖城在线论坛/ u; D- Y3 }  I/ |: o
获取当前等级的下一级存到edx bbs.mocwww.com' G$ q1 C  r9 q0 R" Q
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート/ Q, r% R; P) x& @, O! P+ j
Cmp              edx,7eh
' r- g9 Z( J/ G2 V$ Q7 M+ V! Hbbs.mocwww.com将edx与7eh也就是10进制数130比较 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表7 v8 |9 T; s; J1 [1 P7 A
bbs.mocwww.com6 A3 R1 S2 U! ?& |, H
Jbe         shortloc_80740C0
: f' n6 a7 j( \) b( p—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート如果edx小于7eh则进行跳转到80740C0
, x9 b' T' c  ?+ _( M8 P—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
/ Z! i9 N+ Q* t/ r" R5 s. I魔力私服,最新魔力宝贝私服技术交流Push       ecx
2 w. H% A, N" y. Hbbs.mocwww.comMov        ecx,7
; a( t) _" @0 J2 E2 e—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート给ecx赋值7 魔力私服,最新魔力宝贝私服技术交流2 Q: b- v. R, n9 G# m0 b
魔力私服,最新魔力宝贝私服技术交流- t, _6 ?9 z4 c9 z/ n% q' ?1 R8 W
Push              edx 妖城在线论坛& b6 V( A( o2 u4 H
Mov        eax,edx
2 ^' ^+ P9 B- |* R1 j, c魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表把当前等级+1的值给eax
- y# V) e' J  _3 B) F' h# N
) D4 l% y! l4 v2 v' D5 \魔力私服,最新魔力宝贝私服技术交流Imul              eax,edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート, [& O4 E" Z$ v# C$ F/ G* S
把eax与edx相乘,结果存在eax
  ~/ L6 F/ c. D: o魔力私服,最新魔力宝贝私服技术交流
- k2 |. D& E  b$ j: Wbbs.mocwww.comImul              eax,ecx 魔力私服,最新魔力宝贝私服技术交流- W0 O% y! E$ t7 E' A
把eax与ecx相乘,结果存在eax
& t& j" u6 v- w; Z. a: |4 Z
$ n% v% d4 k- R5 G7 I# R) j; L7 v魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Leave
! M/ E' H; q* c" H; a* x魔力私服,最新魔力宝贝私服技术交流Retn
, t6 h4 E5 z& A8 f妖城在线论坛退出这个过程吧,大概
3 v. a9 R& F: a8 E1 O! U8 U
+ H: b. I2 Z  O. |妖城在线论坛Mov        eax,dwordptrLevelUPtbl[edx*4] 妖城在线论坛" T, K" G! L# |) j3 B2 c
这里是读取经验表的内容给eax,也就是查表读经验
. k) s" p5 B( [7 l( R: k5 q魔力私服,最新魔力宝贝私服技术交流bbs.mocwww.com3 r' q; a8 U; x) V1 \
jmp     short loc_80740B6 魔力私服,最新魔力宝贝私服技术交流; t  ^& \2 O( A1 Z& g" |+ N
强制跳转到80740B6 妖城在线论坛5 [* Q) o+ i# J( M! w
bbs.mocwww.com7 S# e- K: }' |8 W; J% y8 S
好了,这段代码就这点意思,逻辑上不难理解。
5 ?9 ]1 {$ d* c3 X0 Q) B  R—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
* A7 n; x; x. k$ t—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
9 C! f' Y- G! d5 j/ m' _' D—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート分析完了之后开始修改了,上面的代码具体作用如下: bbs.mocwww.com! i0 B. u" o: m+ a" l+ T* _
判断等级下一级是否小于7eh,是则跳转到查表。 妖城在线论坛5 J. |6 r( O5 D1 q$ b+ D$ |
否的话也就是大于7eh时,按照下面算法运算
3 J$ G4 M6 s! y; P—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A3                 push    ecx
- b' t' L6 S4 @$ W妖城在线论坛.text:080740A4                 mov     ecx, 7
9 W& h0 ^3 C9 C% `& ~$ pbbs.mocwww.com.text:080740A9                 push    edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート9 q' E) B( {4 T+ t3 E6 P1 k8 ]9 s& i1 l: s
.text:080740AA                 mov     eax, edx
5 h% u& b+ v8 q+ [3 z7 u—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AC                 imul    eax, edx
$ f' c  ^- ?3 h) ^2 d—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AF                 imul    eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート. R- [, g  J6 ^/ u; b/ s
.text:080740B2                 imul    eax, ecx bbs.mocwww.com" E+ x! e) \; Y
也就是eax的三次方乘以ecx,这里可以改成我想要的。
/ z3 `* s7 b( Nbbs.mocwww.com魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* B" O+ H3 N' g. r. q
我的目标是改称等级的四次方除以50,但是问题来了。 / o$ J7 h3 N% R9 g: m& T$ ]) \
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。 妖城在线论坛% r5 J5 H; @) ?* e/ q

+ z1 o" L/ U7 w, P: X) J) w5 c.text:08074098                 public CHAR_GetLevelExp bbs.mocwww.com2 F$ ~; L1 b; S
.text:08074098 CHAR_GetLevelExp: —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2 }4 _1 O, X# O6 x: Q- L  n; {
.text:08074098               
7 U; }. R" j4 M/ ?' I0 P.text:08074098                 push    ebp 妖城在线论坛$ O, U# \- w: p
.text:08074099                 mov     ebp, esp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* Q  y/ p; r5 S' y- J7 O1 v9 p4 Y% Z
.text:0807409B                 mov     edx, [ebp+8] - F' S6 d$ Y( s- i  x; p
.text:0807409E                 cmp     edx, 0FFh
. d. Q1 d9 C5 |2 z9 F- K  Y" d.text:080740A4                 jg      short loc_80740C0 魔力私服,最新魔力宝贝私服技术交流" c9 i" l# \' R4 b" n
.text:080740A6                 push    ecx 魔力私服,最新魔力宝贝私服技术交流, C9 L+ m* q- n: E" ^0 ^% z8 p
.text:080740A7                 mov     ecx, 32h
( n* l: i0 v5 W$ R3 t妖城在线论坛.text:080740AC                 push    edx bbs.mocwww.com  m! L( d& b- x( Z
.text:080740AD                 mov     eax, edx 4 P+ p, Q8 m' d0 P. n' c
.text:080740AF                 imul    eax, edx
7 F- P' X- i6 r, a' D# S: H6 [( z* obbs.mocwww.com.text:080740B2                 imul    eax, edx
% g, [! W2 \/ \, ?( r7 l—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740B5                 cdq —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% b, T% @. a/ ~. ^* {, y, |4 t) S- H+ S
.text:080740B6                 idiv    ecx
4 I' W  e9 a1 }, l5 r—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740B8                 mov     edx, [ebp+8]
( H3 s, r+ B0 O魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BB                 imul    eax, edx
/ H3 x8 R" a, x3 m$ j& u, D, E.text:080740BE —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 `" ^$ |9 g/ }9 l0 l" R
.text:080740BE locret_80740BE:                     
& J8 H+ S: z% r8 y5 I* O" V3 d.text:080740BE                 leave
. d& m' s0 n1 v" p) Abbs.mocwww.com.text:080740BF                 retn
0 R+ P, h  \! B: l  U% X魔力私服,最新魔力宝贝私服技术交流.text:080740C0 loc_80740C0:                        
( L2 B0 u: J" U- Z2 ^1 [0 A—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740C0                 mov     eax, 0FFFFFFFFh
, O* o: _. W4 x& g魔力私服,最新魔力宝贝私服技术交流.text:080740C5                 jmp     short locret_80740BE 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表: i0 _: ?" ~) w. J
bbs.mocwww.com: j  m% s, r* F3 X9 B
方便起见这里直接把我改好的代码贴出来,与原来不同的地方: 妖城在线论坛" U6 r6 ~( \- ?
Cmp              edx,0FFh " S: D& g( |" h' Q3 Q3 s
Jg           shortloc_8074C0 bbs.mocwww.com" g3 I1 e1 x' E4 F
判断等级是否大于255是的话跳转80740C0
; ^- k0 D  D2 R4 A" E$ j( r否的话进入我们的等级公式:
* C3 O( q% z: F2 q2 Obbs.mocwww.com(等级*等级*等级除以50)*等级 bbs.mocwww.com8 [! j; \, m9 X) a5 I6 z' J2 S
也就是等级三次方除以50再乘以等级
3 j* ^/ t) F: ]! Z  C- s! c妖城在线论坛为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。 # B! w0 t/ x- K  k5 K  o
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。 妖城在线论坛  U5 Q8 S" r0 [0 t' A
所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- l% m% `, _+ {5 n* K
妖城在线论坛1 I3 Q$ a7 x( |, a  g& R$ u
接下去做公式:
3 F4 \" h, ^3 n9 G$ K/ i—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートPush              ecx,32h          这里是经验倍率,就是公服经验除以ecx等于你的经验 bbs.mocwww.com% t9 [$ H0 [* J& V/ k( Q
Mov        eax,edx      将下一等级的值赋值给eax 魔力私服,最新魔力宝贝私服技术交流, |; w$ t* [1 U1 s$ w5 c8 @* M! f
Imul              eax,edx          将eax,edx相乘,结果存到eax
5 k" R7 H" M- t; a+ }; F2 t) D魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Imul              eax,edx          同上
5 X$ ?; W. A4 U, \魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Cdq                             这个做除法不加就会出错,用户登录后服务器当机
, C0 M" q# E0 _魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Idiv        ecx                eax除以32h算到50倍经验 bbs.mocwww.com: D. _  f: g! ^- T
Mov        edx,[ebp+8]    从新获取下一等级的值
& d3 b" S7 l1 Z% ]2 R4 p0 Gbbs.mocwww.comImul              eax,edx          将eax,edx相乘,结果存到eax —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" G* U. |( m3 d4 ?. r' G- g
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート, y& _# P8 R; g: s0 R* r) ^
好了,这样就完成了运算过程。
7 v# O  ^- y. v1 S" Y: h5 P魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& t6 O" h. |2 [
.text:080740C0 loc_80740C0:                        
/ o. B' l) ?9 u) b0 `魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表mov     eax, 0FFFFFFFFh
, o6 K* Y7 h- G6 Z3 Y* B魔力私服,最新魔力宝贝私服技术交流jmp     short locret_80740BE —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) K! b3 A3 s; ^: q. q7 @
这一段代码就是等级超过你设置的上限之后返回-1。 妖城在线论坛% `8 M6 f1 y' R( Z/ {8 X9 B

! B8 Z( m# f, @9 m# J魔力私服,最新魔力宝贝私服技术交流0 m- m9 o0 B8 H1 A8 |7 @6 S
下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% N  {# t& `0 r0 @  Y4 H# |% B  J
这里就要用到FlexHex了。
8 A/ u- `1 F; j! K! S+ L—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- O+ s3 h/ x% y$ _7 H; l2 T
首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。
! Q) H7 m& B; _/ [4 R9 A: l* U; B" r魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表如下对应: . [* W9 t0 k* u4 q! d; ~" S
Cmp              edx,0ffh                       81  FA  FF  00  00  00 bbs.mocwww.com  q0 i1 e4 K. |4 a# W7 ?' b
jg      short loc_80740C0         71  FA —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート' Q4 h' B# b. ?
mov     ecx, 32h                      B9  32  00  00  00 妖城在线论坛' v- S5 h1 r" V/ \0 g( Q

9 I, b: Q4 C9 {# L# G, b依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。
! A9 }; @* c" l3 J/ K—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート这个挺有乐趣可以自己慢慢享受摸索。
' D( C6 p9 W8 ~- |6 I- ]! e8 h( b妖城在线论坛
! C7 j5 ?- M+ ^) a* _  G0 p魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。

TOP

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

TOP

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

TOP

学习学习魔力私服,最新魔力宝贝私服技术交流; n& ~  S) X+ s5 l
谢谢楼主分享经验

TOP

感谢楼主分享,顶!

TOP

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

TOP

发新话题