没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
5 Y- V& i- p2 O7 i8 L+ ]7 }. f魔力私服,最新魔力宝贝私服技术交流使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
. y9 X! g. y0 @. H4 w" F2 Z5 ?—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 x' a" C$ z$ }: a6 w5 d
用IDA载入gmsv,分析完成后进入Exports选项卡。
; S* D0 o+ M$ X; u魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。
0 V/ u! h V5 ?5 P.text:08074098 public CHAR_GetLevelExp
1 O1 W9 w$ M" [' }7 u0 Z) k: w魔力私服,最新魔力宝贝私服技术交流.text:08074098 CHAR_GetLevelExp: 魔力私服,最新魔力宝贝私服技术交流! e$ m! A3 v/ k: \/ e, a
.text:08074098 push ebp
8 @- u% }- E! s1 {, \+ y! I妖城在线论坛.text:08074099 mov ebp, esp
9 J6 i) Y; I. H0 [* p.text:0807409B mov edx, [ebp+8]
9 j+ @/ }1 X; F5 K5 a( gbbs.mocwww.com.text:0807409E cmp edx, 7Eh 魔力私服,最新魔力宝贝私服技术交流- c; X2 b4 g; ?) A) H0 |
.text:080740A1 jbe short loc_80740C0
$ B+ l# u% w- ~- ` [9 V0 c/ m.text:080740A3 push ecx bbs.mocwww.com3 z Z# A& A3 U) ~
.text:080740A4 mov ecx, 7
& Q0 T: m+ f9 l7 C! Z2 f魔力私服,最新魔力宝贝私服技术交流.text:080740A9 push edx 9 i }- `7 `& T% U3 O
.text:080740AA mov eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表! D* N( ?) ~" r- c" {
.text:080740AC imul eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート& G( y2 p1 }1 I' E
.text:080740AF imul eax, edx 4 `. K* {$ N ^1 Q
.text:080740B2 imul eax, ecx ; z t0 ]. t- w* f U) i5 X% W& P
.text:080740B6 loc_80740B6:
* | B0 @4 H c2 F4 I$ ]妖城在线论坛.text:080740BE leave
" A/ X5 I' `, h' E! W) B. q魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BF retn
% |, \8 O4 C3 s, r7 {妖城在线论坛.text:080740C0 loc_80740C0:
2 h7 h, u8 x: e4 \) h—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4]
5 }* J5 Z2 q" J9 n% ?/ R: Q- Q魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C7 jmp short loc_80740B6
1 N( N. r5 f; P3 m妖城在线论坛
: t$ r# ~9 E( G+ o7 h妖城在线论坛粗糙的解释下这段代码的意思 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表: a3 w6 M( V, ^2 W0 y
魔力私服,最新魔力宝贝私服技术交流0 a+ m& X/ [7 u0 V
Push edp
. d1 _: P! ?" A3 O魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Mov ebp,esp 4 I" G* g5 u9 g5 B4 M
Mov edx,[ebp+8] 魔力私服,最新魔力宝贝私服技术交流6 t: d* l: C2 }. b4 I
获取当前等级的下一级存到edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% I: Z6 I2 C/ ~+ p4 t. B4 c
魔力私服,最新魔力宝贝私服技术交流4 l" b# f$ ?( x3 q/ o7 f
Cmp edx,7eh
6 q) F7 z B. x5 P4 F魔力私服,最新魔力宝贝私服技术交流将edx与7eh也就是10进制数130比较 6 L) J6 k+ C& T9 ?4 Z) \
魔力私服,最新魔力宝贝私服技术交流; K7 ]$ }5 h7 Y' j: I" B; {
Jbe shortloc_80740C0 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( H3 l+ }& \" N/ V0 \, F- J: I
如果edx小于7eh则进行跳转到80740C0
0 S6 \, d% y& b& {9 T5 k E; B
1 l3 s/ D& P- w n' H/ mPush ecx bbs.mocwww.com! U, k" R* O* t" p1 f4 e
Mov ecx,7
; r# S$ A. T7 h4 bbbs.mocwww.com给ecx赋值7
2 m2 h" i0 _/ m- k* |: H魔力私服,最新魔力宝贝私服技术交流
0 S# s7 v2 c" ~) ? V—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートPush edx bbs.mocwww.com" e6 J: B4 F- [- _4 d
Mov eax,edx 妖城在线论坛+ K2 t0 r- z" L
把当前等级+1的值给eax 魔力私服,最新魔力宝贝私服技术交流, t z( w k/ `5 J, P
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート9 Y* B5 [ u- W+ J
Imul eax,edx 妖城在线论坛6 s- J, ?1 Y# L0 D( P- ]
把eax与edx相乘,结果存在eax
% S, K! s! s. r* s' v" c) P0 s) D魔力私服,最新魔力宝贝私服技术交流
( A" D" a6 Q$ U( b魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Imul eax,ecx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) s# B# r; @; W* F% W- v
把eax与ecx相乘,结果存在eax bbs.mocwww.com6 f1 Q$ f0 u. e1 W
bbs.mocwww.com2 D* s+ `/ F/ P( \; t5 Y
Leave 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表2 x: ?% N" U* K6 F% t& v
Retn
I% r. v0 ^/ i1 a6 {# y( ]& y, E" F( O退出这个过程吧,大概 妖城在线论坛1 a2 |# [8 O0 q. P% b
|4 x' C5 k: Y; H' X+ `, _魔力私服,最新魔力宝贝私服技术交流Mov eax,dwordptrLevelUPtbl[edx*4] bbs.mocwww.com5 i# R5 `5 j% K6 x
这里是读取经验表的内容给eax,也就是查表读经验 0 S7 r& z$ v { v5 K
) b8 {1 n: Z: S( Q$ W$ hjmp short loc_80740B6 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2 D& x6 r: H9 _) J2 E% v$ m6 ~
强制跳转到80740B6
8 ^4 _' J- t5 Z( ^
. D4 {9 f: I3 i, d* E, \1 o妖城在线论坛好了,这段代码就这点意思,逻辑上不难理解。
& I4 y# F7 \# M4 d! F5 B魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。 bbs.mocwww.com% m" H5 a. h. v0 C9 l4 y
w3 w: h8 S0 D4 R. b分析完了之后开始修改了,上面的代码具体作用如下: 妖城在线论坛: Z, ]. N# T; W, y5 D
判断等级下一级是否小于7eh,是则跳转到查表。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート3 R0 P) `4 `, Z; x0 H# @9 v
否的话也就是大于7eh时,按照下面算法运算
' a8 @) V6 A. s, ? Zbbs.mocwww.com.text:080740A3 push ecx
( b! O" z2 N+ n* M0 Z魔力私服,最新魔力宝贝私服技术交流.text:080740A4 mov ecx, 7 魔力私服,最新魔力宝贝私服技术交流) Q1 o/ D6 _# [- E" T* d) f, @$ x. F
.text:080740A9 push edx , K" m# }; A+ Q$ t: u
.text:080740AA mov eax, edx
9 J Q; r( y. ?& T$ L' Fbbs.mocwww.com.text:080740AC imul eax, edx
: n) J2 V7 W8 x! p6 F. H# g" \/ [ _! L魔力私服,最新魔力宝贝私服技术交流.text:080740AF imul eax, edx 妖城在线论坛8 }" C2 Z; M) w0 D
.text:080740B2 imul eax, ecx
+ x( y* U6 v7 d6 n; _, x) v魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表也就是eax的三次方乘以ecx,这里可以改成我想要的。 妖城在线论坛; l: U" B4 a& z1 |& m+ h. a2 `
3 w1 n( l# J' n% o! X妖城在线论坛我的目标是改称等级的四次方除以50,但是问题来了。
- L: L8 e; `+ N* S# I8 H# ]0 e魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
& `0 W+ p0 r$ r# i' f: {. s0 ^: K魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% ]$ o% U2 C0 M/ `
.text:08074098 public CHAR_GetLevelExp " E- F. K) G2 u9 D8 F
.text:08074098 CHAR_GetLevelExp:
6 L7 E( x9 p4 s.text:08074098
. V& {: r; b2 D% k- P- [9 H. ^) U魔力私服,最新魔力宝贝私服技术交流.text:08074098 push ebp
" @* G+ e8 X0 b/ `9 k魔力私服,最新魔力宝贝私服技术交流.text:08074099 mov ebp, esp
' r) C! H2 O; b5 ~bbs.mocwww.com.text:0807409B mov edx, [ebp+8]
% W# _4 k. e# d妖城在线论坛.text:0807409E cmp edx, 0FFh 妖城在线论坛% ?/ U, F6 p4 P8 L2 X7 {* O/ p b. L
.text:080740A4 jg short loc_80740C0 ' C+ \! ^5 m+ o% |6 f9 C! v
.text:080740A6 push ecx 妖城在线论坛% T$ s, h ?7 v2 B1 h% V
.text:080740A7 mov ecx, 32h 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表0 t! u* s. x" [ B) d
.text:080740AC push edx
$ D4 B, J! `/ w! H9 {1 ~8 v魔力私服,最新魔力宝贝私服技术交流.text:080740AD mov eax, edx 1 Z3 F$ `- j; z; |+ M% P$ E) z
.text:080740AF imul eax, edx . x9 p6 d5 w- r' v0 a2 a' p' e
.text:080740B2 imul eax, edx
' w3 \5 @6 ]: p0 l+ L魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740B5 cdq
* }/ s. f- b# v9 i2 g妖城在线论坛.text:080740B6 idiv ecx
6 F1 o+ t8 s4 r6 s# f. C L—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740B8 mov edx, [ebp+8]
# {/ m1 G8 g' ], \; @.text:080740BB imul eax, edx 魔力私服,最新魔力宝贝私服技术交流8 m, z3 f$ L) n' _
.text:080740BE
+ W' H9 v- A5 d$ F, a魔力私服,最新魔力宝贝私服技术交流.text:080740BE locret_80740BE:
t) g6 A6 E7 n' Y2 ^bbs.mocwww.com.text:080740BE leave
1 K$ x1 B6 S* o& Hbbs.mocwww.com.text:080740BF retn
& L+ ?+ A, [' H/ X$ j6 n.text:080740C0 loc_80740C0: 3 o( r- z' |1 L9 u" w! R/ Q5 S
.text:080740C0 mov eax, 0FFFFFFFFh 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' B8 x& p1 W9 s" s4 V
.text:080740C5 jmp short locret_80740BE
8 N6 g' I2 C9 E# w1 a: @bbs.mocwww.com3 z( x; Q5 v9 c( M% b
方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
1 A6 ~: d- m$ K/ U魔力私服,最新魔力宝贝私服技术交流Cmp edx,0FFh
8 d Y- d& N* A+ T6 g魔力私服,最新魔力宝贝私服技术交流Jg shortloc_8074C0
. J, F' u& a5 ~7 {! K1 U, S魔力私服,最新魔力宝贝私服技术交流判断等级是否大于255是的话跳转80740C0
. K% j- p' O% m+ N( D7 G& m9 cbbs.mocwww.com否的话进入我们的等级公式: . W- w$ c; D* s! T& s) B
(等级*等级*等级除以50)*等级 魔力私服,最新魔力宝贝私服技术交流" L% o7 J- j0 ~9 G+ x' w$ T
也就是等级三次方除以50再乘以等级 魔力私服,最新魔力宝贝私服技术交流) D1 I* S+ [3 O5 V
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。
7 R9 i0 g- b# w7 o& J; @# K魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
% O0 \6 R: I s. u: D5 r! W3 q所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。 妖城在线论坛9 n' P! B- z! k) k: b+ t
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート: P- J( ^" V) T. h
接下去做公式:
1 Z5 i+ N5 D2 G d( n0 j! p6 g—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートPush ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" h. b- Z! ~% r8 U6 d$ v" J: P
Mov eax,edx 将下一等级的值赋值给eax {. j y3 q* T
Imul eax,edx 将eax,edx相乘,结果存到eax —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 ?2 {: c k% [6 ]/ Q: g$ M
Imul eax,edx 同上 ; z* p5 z% `6 M6 j' u% {$ U
Cdq 这个做除法不加就会出错,用户登录后服务器当机
4 [% b5 R' ?# ]8 Dbbs.mocwww.comIdiv ecx eax除以32h算到50倍经验
+ g+ b$ o: q6 n1 W- S妖城在线论坛Mov edx,[ebp+8] 从新获取下一等级的值 魔力私服,最新魔力宝贝私服技术交流( n) h8 a l2 [
Imul eax,edx 将eax,edx相乘,结果存到eax bbs.mocwww.com! ?; S9 E$ |" b$ D0 L1 |! s, H2 ]: V4 o
4 I# m/ c/ \" V1 z0 Y: W" C- u2 T, a
好了,这样就完成了运算过程。
3 I5 Y! C' G B1 Y+ i; x) i魔力私服,最新魔力宝贝私服技术交流
: i. z9 K0 {4 F5 j妖城在线论坛.text:080740C0 loc_80740C0:
; Q8 J. {, o5 V% [4 u" Dbbs.mocwww.commov eax, 0FFFFFFFFh
W$ _, j @8 T7 j5 Y; R+ fjmp short locret_80740BE
8 K& T0 v6 \4 O4 ]" Hbbs.mocwww.com这一段代码就是等级超过你设置的上限之后返回-1。
* k. \& m% E, Y0 Ebbs.mocwww.com
8 x) T7 C( e' n魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表0 h; }9 N' k. o9 k! Y
下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。
# x% {2 c/ m+ n3 L妖城在线论坛这里就要用到FlexHex了。 ! u, ^% x! p/ R0 p! T
/ ]$ `6 _0 E! }4 `: W魔力私服,最新魔力宝贝私服技术交流首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 # J; q% W% h2 x
如下对应:
$ h4 E4 Z6 D6 \4 c) c$ D) J—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートCmp edx,0ffh 81 FA FF 00 00 00
Z+ ]7 J; L/ W r( k妖城在线论坛jg short loc_80740C0 71 FA
3 N( ^" ^5 z2 F; ?bbs.mocwww.commov ecx, 32h B9 32 00 00 00
0 z' D7 ~+ k4 m& u/ }1 a) X7 Tbbs.mocwww.combbs.mocwww.com0 L, l, u$ q$ F4 @% A3 @4 O" Y
依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。
' |5 b& d. Z# T/ P. l- ]: E9 Qbbs.mocwww.com这个挺有乐趣可以自己慢慢享受摸索。 魔力私服,最新魔力宝贝私服技术交流9 {6 [ m' F) ~4 U
bbs.mocwww.com; [5 _5 C9 B2 i1 {% \( A7 X( |6 P
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。