没有汇编语言基础,参照网上无数教程和相关资料,修改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多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。