发新话题
打印

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

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

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 ^+ Z/ N0 `0 E: l: U
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
# q, K7 s& P4 v妖城在线论坛妖城在线论坛+ y  [  P3 i5 C
用IDA载入gmsv,分析完成后进入Exports选项卡。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表8 F/ v# i0 g* z; I, I* }
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。
, R/ ^5 D7 U. [: m- H妖城在线论坛.text:08074098                 public CHAR_GetLevelExp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表  |* N7 S3 e# Z/ H* ]
.text:08074098 CHAR_GetLevelExp: 妖城在线论坛7 G: p- P8 `, r: Z: g6 g0 r" q
.text:08074098                 push    ebp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート. @! h. Y- ]. I
.text:08074099                 mov     ebp, esp 0 Q2 C% O* j$ t1 e7 c5 }0 `
.text:0807409B                 mov     edx, [ebp+8]
6 H' q. ?' e# w' Ubbs.mocwww.com.text:0807409E                 cmp     edx, 7Eh —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# q" c  f# S( l4 n, F, C
.text:080740A1                 jbe     short loc_80740C0
2 }* S  a# N) L魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A3                 push    ecx % i0 z  n: I& X6 b+ E
.text:080740A4                 mov     ecx, 7 妖城在线论坛3 ]- X+ f% y5 u) o$ e" i
.text:080740A9                 push    edx
/ _1 J& a8 S* p8 ebbs.mocwww.com.text:080740AA                 mov     eax, edx
' \! s& q! S( N8 {3 N.text:080740AC                 imul    eax, edx 1 S" h% ^( E1 R* I$ y
.text:080740AF                 imul    eax, edx 魔力私服,最新魔力宝贝私服技术交流$ _7 W6 T  w, i$ |0 o% }5 w
.text:080740B2                 imul    eax, ecx
+ F. [* W) x' Z; a' {魔力私服,最新魔力宝贝私服技术交流.text:080740B6 loc_80740B6:   妖城在线论坛" s! F5 P: r- n4 L' R2 g
.text:080740BE                 leave bbs.mocwww.com* X% D6 k% @# G5 a2 @  q$ [& d4 U
.text:080740BF                 retn —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート: Z5 A6 \# R# g- }- e) Q' \0 D1 S
.text:080740C0 loc_80740C0:                           魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表0 ?& o, F9 w/ D6 T# y! D3 c; v1 G* }
.text:080740C0                 mov     eax, dword ptr LevelUpTbl[edx*4]
2 w$ T6 M7 q6 ^; d7 p6 r9 T1 ~妖城在线论坛.text:080740C7                 jmp     short loc_80740B6
, u; K' N5 ?) X$ B7 D8 m—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
8 z; L  i) k) d, I3 l- e粗糙的解释下这段代码的意思
7 x# T. O, H* M8 l; @妖城在线论坛
* e* ~% K1 U  `# g+ j—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートPush              edp
0 M" \- ^3 q. O( e$ w—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートMov        ebp,esp
* V7 y( i+ F7 S( d( L$ P' {: FMov        edx,[ebp+8] —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) T3 F8 z* Y4 b( w8 O" y% Z
获取当前等级的下一级存到edx 8 G. F5 A( ]/ @; @, Z# X
bbs.mocwww.com: ?. b# F( a3 Y: P( h. C
Cmp              edx,7eh
1 \- M7 y. V9 z* K, w将edx与7eh也就是10进制数130比较 魔力私服,最新魔力宝贝私服技术交流0 }+ D( R$ J' E4 f; Q
魔力私服,最新魔力宝贝私服技术交流. L, @2 c+ [+ |8 p# q3 ]
Jbe         shortloc_80740C0
2 r) l; b- ~- f7 g$ \! p/ T魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表如果edx小于7eh则进行跳转到80740C0 魔力私服,最新魔力宝贝私服技术交流' k6 {' B" U6 l4 b
& m( a6 ?$ {; R: E' |( _0 G
Push       ecx 妖城在线论坛2 y  G! _1 U8 `) B' g  v
Mov        ecx,7 魔力私服,最新魔力宝贝私服技术交流" X: q, a' d, x' @7 p3 H0 T, r& ?+ i4 h
给ecx赋值7 妖城在线论坛. ]( m' }$ L( C# p
6 ?& |6 v' {( r8 c# ]
Push              edx
2 v. c  i' i7 Z- s1 w; s6 r魔力私服,最新魔力宝贝私服技术交流Mov        eax,edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- E' N* y9 X+ w
把当前等级+1的值给eax & U2 F5 r5 k# h4 Y$ v6 j

4 C2 A! K$ |5 i/ E6 [0 ~/ W—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートImul              eax,edx bbs.mocwww.com" l, D) K5 M& \/ Z6 m; O
把eax与edx相乘,结果存在eax
9 B8 g  ]4 g, {1 d—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
5 G# u- N' Q$ @7 B# RImul              eax,ecx
* [( b8 ]! K7 v1 v6 ^8 l—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート把eax与ecx相乘,结果存在eax
! o3 R1 D* w! j3 C妖城在线论坛魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表: s; N5 @% k& C# }7 c( n
Leave 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 R8 q2 U- [! ~& v6 T) G8 C
Retn 妖城在线论坛8 E) @. L3 z, s* o/ c& S7 ~/ b
退出这个过程吧,大概
0 ~' a. T4 z8 }8 T, n3 F  }- J+ gbbs.mocwww.com魔力私服,最新魔力宝贝私服技术交流1 R( I9 Y. j6 ~  z& D& A
Mov        eax,dwordptrLevelUPtbl[edx*4]
/ U+ x) Y: _4 W8 _# B  e魔力私服,最新魔力宝贝私服技术交流这里是读取经验表的内容给eax,也就是查表读经验 魔力私服,最新魔力宝贝私服技术交流: x' _7 u0 Q3 F
- ]4 M- F2 U0 U0 h
jmp     short loc_80740B6 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表! f$ L- J7 Z3 y* N
强制跳转到80740B6 bbs.mocwww.com* _; P8 R; @  c( q( _( x

; G( `' k- h' [( Q: c0 [2 X魔力私服,最新魔力宝贝私服技术交流好了,这段代码就这点意思,逻辑上不难理解。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) Q/ ^; {# L" }3 T& C
虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
+ R' ?- q& o+ b6 N4 }1 J: ^魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表妖城在线论坛6 x* e2 L( m# Y
分析完了之后开始修改了,上面的代码具体作用如下: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* d! S" N0 o- _  S$ F7 d
判断等级下一级是否小于7eh,是则跳转到查表。 bbs.mocwww.com  @2 e% H$ n! B' a- Q, [: N
否的话也就是大于7eh时,按照下面算法运算 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表; ?/ m7 v" ]6 M3 N3 |( v5 a
.text:080740A3                 push    ecx
$ y0 q& r7 L) x0 }0 Z* S0 z& z—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A4                 mov     ecx, 7
, k  Q& w- ?, N5 d# X& \4 kbbs.mocwww.com.text:080740A9                 push    edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* v2 B* C# q- m- e
.text:080740AA                 mov     eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート, x" M# b1 C6 U: ~; Y" J
.text:080740AC                 imul    eax, edx bbs.mocwww.com! s/ k9 u6 {0 h* F& V3 c: A
.text:080740AF                 imul    eax, edx : Z8 j- w& P* @) ~- x1 E
.text:080740B2                 imul    eax, ecx 妖城在线论坛  o3 m3 m# D: B+ ]
也就是eax的三次方乘以ecx,这里可以改成我想要的。
/ V2 Y3 {# q/ P( D4 ?: g- S魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
# f' h# }4 k9 Z- X+ A) I( x$ J我的目标是改称等级的四次方除以50,但是问题来了。 ' B6 |1 j) z' v9 E
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
; H6 X' r2 o  g( s8 W9 J& ]
, d+ e* o( X3 B$ x, ?% Rbbs.mocwww.com.text:08074098                 public CHAR_GetLevelExp
2 l% W; ~2 h2 O# @9 \: \  J妖城在线论坛.text:08074098 CHAR_GetLevelExp: bbs.mocwww.com7 u6 A  `- p$ j
.text:08074098               
6 ]4 A* V5 o3 {$ y/ x- Mbbs.mocwww.com.text:08074098                 push    ebp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表/ d6 t0 ]6 C/ f4 h! h& S" D
.text:08074099                 mov     ebp, esp 魔力私服,最新魔力宝贝私服技术交流( M# r# S* H# w0 m3 z/ @3 ]  b* a# z
.text:0807409B                 mov     edx, [ebp+8] —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 k- Q/ H+ }, ]: \# e( K
.text:0807409E                 cmp     edx, 0FFh
7 \, D% n( {* s: U魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A4                 jg      short loc_80740C0
: n4 q- |/ M" ^" J* }.text:080740A6                 push    ecx
% ]# @5 R9 H& _% r4 D9 g: q—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A7                 mov     ecx, 32h
' y6 ~8 q) a  D" a1 Z魔力私服,最新魔力宝贝私服技术交流.text:080740AC                 push    edx 妖城在线论坛' t0 P3 [) K5 a/ L  h
.text:080740AD                 mov     eax, edx
! }& o& D& `2 O妖城在线论坛.text:080740AF                 imul    eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* i; I9 M; m1 F$ d/ ]3 E
.text:080740B2                 imul    eax, edx
! T/ [% }4 p& I.text:080740B5                 cdq
) y1 Y( q: G( u- ~6 k0 Y& x1 B魔力私服,最新魔力宝贝私服技术交流.text:080740B6                 idiv    ecx
& R+ y" F0 k$ Z! v% k9 K) Mbbs.mocwww.com.text:080740B8                 mov     edx, [ebp+8] 魔力私服,最新魔力宝贝私服技术交流6 G! Q9 n7 u8 d" C7 \/ {
.text:080740BB                 imul    eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# `% T7 x$ v8 d6 x
.text:080740BE 妖城在线论坛1 T7 h/ Q# Y! B0 a  D3 n
.text:080740BE locret_80740BE:                     
6 u9 e; [. Q- [/ c$ }' Ubbs.mocwww.com.text:080740BE                 leave
9 S3 i3 |' A+ q0 U) r" v/ _魔力私服,最新魔力宝贝私服技术交流.text:080740BF                 retn
. e/ s  C6 ]+ f6 s妖城在线论坛.text:080740C0 loc_80740C0:                         0 ~1 C$ n* [) m2 T
.text:080740C0                 mov     eax, 0FFFFFFFFh
* N8 F9 F+ s: }: e" G' ]! P妖城在线论坛.text:080740C5                 jmp     short locret_80740BE
, S7 |6 W2 B/ m  n8 G- L) p
+ b6 }& I, [2 v9 E- ]方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
' N; o$ N: d9 _& a6 m3 y魔力私服,最新魔力宝贝私服技术交流Cmp              edx,0FFh bbs.mocwww.com! O7 O: }: {' |4 `! m: |
Jg           shortloc_8074C0
1 m1 L% A. K7 x2 D魔力私服,最新魔力宝贝私服技术交流判断等级是否大于255是的话跳转80740C0 bbs.mocwww.com' u' z( B/ b# x. j+ C1 K% @3 l
否的话进入我们的等级公式:
% `1 g# B  f5 C魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表(等级*等级*等级除以50)*等级   i+ d! F* ~& d: o( [6 f* ~
也就是等级三次方除以50再乘以等级 bbs.mocwww.com6 ]; t' l6 r* S
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。
! Z! v/ F) b& Z( k# O6 a; p216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
1 ?! V2 f' L1 g0 r8 H/ a! S" r魔力私服,最新魔力宝贝私服技术交流所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
# }& X, x/ Q% U4 I0 Z  `4 kbbs.mocwww.com
& s2 ~4 }4 K% X9 W% \4 w—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート接下去做公式:
/ E! P$ F! d( O2 I; ^魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Push              ecx,32h          这里是经验倍率,就是公服经验除以ecx等于你的经验
( r) a) }, o9 e$ Ibbs.mocwww.comMov        eax,edx      将下一等级的值赋值给eax
8 d$ M, y: J0 x- [0 Y! y! g4 R, q魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Imul              eax,edx          将eax,edx相乘,结果存到eax
+ `. l* v+ J/ |% n5 A魔力私服,最新魔力宝贝私服技术交流Imul              eax,edx          同上 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& f9 E% g& V2 \- _
Cdq                             这个做除法不加就会出错,用户登录后服务器当机
7 K: g5 b0 @5 p8 _" |5 hIdiv        ecx                eax除以32h算到50倍经验
* W# P3 J9 e# N4 ]0 O  S7 i$ ?: L2 K. b魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Mov        edx,[ebp+8]    从新获取下一等级的值
( e8 z) M; ^) ]8 h6 {; \Imul              eax,edx          将eax,edx相乘,结果存到eax
' z3 w" \0 x  j3 Z9 ]魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
! ?5 X" a6 Q1 F6 f- S—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート好了,这样就完成了运算过程。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート! q# l6 T8 _3 y& _- D- A7 A
9 q- Y* F7 h* b) M
.text:080740C0 loc_80740C0:                         魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- O/ W0 s. H3 y. S- Y
mov     eax, 0FFFFFFFFh
- {9 V- q9 d5 L1 t1 Y魔力私服,最新魔力宝贝私服技术交流jmp     short locret_80740BE . f0 W# ?! k. o6 x& s
这一段代码就是等级超过你设置的上限之后返回-1。
2 i' r7 V' H' ~2 E% J
) u1 {4 C( e5 |0 pbbs.mocwww.com
6 s& H5 Y$ K+ K( N下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。
) c2 i2 ?; I  O+ D: _妖城在线论坛这里就要用到FlexHex了。
6 ^: C3 F& @' Vbbs.mocwww.com—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# z$ ?1 h! Z6 k$ `8 }  H& T
首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。
! Q5 J) w# F' Q/ g—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート如下对应:
5 N1 K4 T8 `8 s$ B7 X$ V魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Cmp              edx,0ffh                       81  FA  FF  00  00  00
5 w4 R# j  _) r9 _+ k; C魔力私服,最新魔力宝贝私服技术交流jg      short loc_80740C0         71  FA
( C( S* }4 H$ m  [2 S$ U* l* xmov     ecx, 32h                      B9  32  00  00  00 妖城在线论坛" U- ^1 L/ Q$ G: z" w4 s; v
bbs.mocwww.com, ]% ~7 k! E; P
依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。 bbs.mocwww.com4 o+ W( y5 W# N1 g8 [7 @
这个挺有乐趣可以自己慢慢享受摸索。
5 {& z% }& j1 W8 S" g: kbbs.mocwww.com0 ?% [* G% w; s, a0 A
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。

TOP

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

TOP

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

TOP

学习学习
$ J; ~, E  D3 @) q+ l3 C9 [( }妖城在线论坛谢谢楼主分享经验

TOP

感谢楼主分享,顶!

TOP

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

TOP

发新话题