没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 + X2 _6 Q; H3 j/ |
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
& f( S3 q$ x% L# c妖城在线论坛
0 W7 V" M& e5 R用IDA载入gmsv,分析完成后进入Exports选项卡。
$ C- W" t, d3 `$ p3 ^$ I魔力私服,最新魔力宝贝私服技术交流搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。
2 ]3 J) U) W* [8 i% `bbs.mocwww.com.text:08074098 public CHAR_GetLevelExp
$ M+ L# k, b7 a) i0 ?) ~6 Q.text:08074098 CHAR_GetLevelExp:
4 L. A3 @! c4 P8 P魔力私服,最新魔力宝贝私服技术交流.text:08074098 push ebp
0 ^ Z: \# Q% f/ z妖城在线论坛.text:08074099 mov ebp, esp bbs.mocwww.com/ I5 { K }0 @
.text:0807409B mov edx, [ebp+8]
n& p& j- i3 j9 n% c, I9 |妖城在线论坛.text:0807409E cmp edx, 7Eh : [8 ^: s: c9 |' t" w1 n7 W1 c
.text:080740A1 jbe short loc_80740C0 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# A3 E. e- `# E
.text:080740A3 push ecx
' ~, \7 Q! q% o, \0 tbbs.mocwww.com.text:080740A4 mov ecx, 7
; U, p1 w1 U# i# m' \& x8 Y8 q6 c魔力私服,最新魔力宝贝私服技术交流.text:080740A9 push edx bbs.mocwww.com' |1 Z2 T- ?( }5 ]- A
.text:080740AA mov eax, edx
* U' O6 t, Z- E3 y5 r7 ~& f0 f.text:080740AC imul eax, edx 妖城在线论坛# O$ g! ?0 u7 _, g
.text:080740AF imul eax, edx bbs.mocwww.com1 l7 a5 K; }! F* z
.text:080740B2 imul eax, ecx 妖城在线论坛7 `( z0 j8 }, H! r, W4 u
.text:080740B6 loc_80740B6: —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート [9 U. G% A) o# b; m
.text:080740BE leave
+ u% } _& H6 w i$ H8 S# ^bbs.mocwww.com.text:080740BF retn bbs.mocwww.com$ d- m y8 o; N
.text:080740C0 loc_80740C0: 妖城在线论坛" R" I& r' |8 r8 t
.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4] 妖城在线论坛/ Q& K" Y! t$ j6 Q* s5 \3 D( c# @
.text:080740C7 jmp short loc_80740B6 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表2 o3 g# `" c" J Q( g7 @
妖城在线论坛4 B8 u. G# v7 a! q4 C# P7 L7 G
粗糙的解释下这段代码的意思 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 [6 G) t) i7 U
. A* B0 A9 b [; {! _
Push edp
, d0 v4 S: o+ c妖城在线论坛Mov ebp,esp * t! R* C, a' A! c& i# \& j' P
Mov edx,[ebp+8]
+ }% P5 Y/ y+ u) D( s2 `获取当前等级的下一级存到edx
5 V5 Y0 d; ^/ Y" X, d$ }7 ?妖城在线论坛
- M, K3 S$ e; wCmp edx,7eh
0 h6 I4 W' D! _! Y1 N. S妖城在线论坛将edx与7eh也就是10进制数130比较 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% U( p2 X0 }( Q, K* F. m# N; C2 i0 B. g( I7 D
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表) g: o5 ?& _1 n$ m- t" R( T
Jbe shortloc_80740C0
# [& k! T0 `- v: w魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表如果edx小于7eh则进行跳转到80740C0
% w8 k9 N9 k! i( S6 f2 F, z5 n, f9 }1 {) _( m% M! C( N
Push ecx bbs.mocwww.com, X4 w" } X8 G3 I
Mov ecx,7 妖城在线论坛0 @( V- U" Y& b$ I$ t8 C
给ecx赋值7
) f) _# M Y. fbbs.mocwww.com
: R1 a2 H3 {+ j- H4 @& jbbs.mocwww.comPush edx
* S0 N, k6 X7 ?( g/ N5 Y4 ~—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートMov eax,edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 z; ? h, _* I
把当前等级+1的值给eax
4 d4 M" b7 Q3 D* _+ P: T魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
; g. a. ^6 z4 m$ a0 D6 h9 j" bbbs.mocwww.comImul eax,edx
6 K# x6 P( D" Y& _—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート把eax与edx相乘,结果存在eax 妖城在线论坛1 A% ]6 Z8 N# Z! s6 r. |
$ f! J: A, U/ @Imul eax,ecx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% z# k0 ]5 j1 U/ A% C0 L
把eax与ecx相乘,结果存在eax
) M. z- b2 a: S- f魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
& e" o* v9 {8 Z: k6 s9 `1 T—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートLeave
- g0 n& |$ {+ S. v( d7 \妖城在线论坛Retn 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% q; j& e% k0 O5 d# j0 d
退出这个过程吧,大概 妖城在线论坛6 ]/ G% U* @0 c# z v
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% _2 ~8 R; e) N. Y& \- b
Mov eax,dwordptrLevelUPtbl[edx*4] 8 q2 u1 u2 q2 ^- _, |) Q. D
这里是读取经验表的内容给eax,也就是查表读经验 魔力私服,最新魔力宝贝私服技术交流# k$ U ?' l/ e/ Z8 C
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート: i6 P" L, ]4 T& K
jmp short loc_80740B6 ; _$ N* R! _+ h d7 D9 z) G. O3 |
强制跳转到80740B6 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( o9 f5 t( c2 z* b) q
+ B s, A1 @0 Y/ K6 C- a魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表好了,这段代码就这点意思,逻辑上不难理解。
6 o- {5 N1 @ M# ^虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
! C a7 c# E6 I9 M7 Q7 ]妖城在线论坛
5 {. v7 ^$ [ x/ v妖城在线论坛分析完了之后开始修改了,上面的代码具体作用如下:
, A) z C6 C$ b( B1 y2 r判断等级下一级是否小于7eh,是则跳转到查表。
- }4 K! Z4 p5 c/ O. ?" v' J+ [魔力私服,最新魔力宝贝私服技术交流否的话也就是大于7eh时,按照下面算法运算
}7 L8 L }$ v6 s/ v1 d4 \—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A3 push ecx . ]+ f6 c: ?1 k& H
.text:080740A4 mov ecx, 7 妖城在线论坛; P0 y" X; B- V0 }8 s' ?" t
.text:080740A9 push edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# J" u- K2 e+ j# J
.text:080740AA mov eax, edx bbs.mocwww.com" D# f; v, v$ u! f( J
.text:080740AC imul eax, edx
# Y" B% c1 V: k% W魔力私服,最新魔力宝贝私服技术交流.text:080740AF imul eax, edx
4 K- g. T* H) c6 X+ q; v5 J" e魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740B2 imul eax, ecx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表8 s& z, D0 D$ U7 Q& ]# \/ t
也就是eax的三次方乘以ecx,这里可以改成我想要的。 % l$ Y2 q5 C2 y5 l& y O! C) C
; K; K5 q2 K' `0 @0 m0 M8 r魔力私服,最新魔力宝贝私服技术交流我的目标是改称等级的四次方除以50,但是问题来了。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート& @* h# V" m6 V1 L7 b* R* {6 D
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 X S! L7 j1 t! n% ]
3 _% L) n: D6 R9 y妖城在线论坛.text:08074098 public CHAR_GetLevelExp 魔力私服,最新魔力宝贝私服技术交流3 d" D/ T6 ?$ o3 S
.text:08074098 CHAR_GetLevelExp:
! g9 @2 [, D% ?, |0 T1 _魔力私服,最新魔力宝贝私服技术交流.text:08074098 妖城在线论坛3 ~8 u% g V: X0 P$ y
.text:08074098 push ebp
% L6 g6 V8 e& H. {$ U妖城在线论坛.text:08074099 mov ebp, esp 妖城在线论坛4 J, o ?' Z' ?# [1 x8 p
.text:0807409B mov edx, [ebp+8] 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表. `) x9 q" q- r8 ?! [2 c
.text:0807409E cmp edx, 0FFh 妖城在线论坛6 u! `. B9 c" O |2 p
.text:080740A4 jg short loc_80740C0 3 I0 t$ g5 H% T. A4 W0 S
.text:080740A6 push ecx ( |! K% p8 L/ a5 ~* ^$ V
.text:080740A7 mov ecx, 32h —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート7 Z7 m- i( [7 o+ Y
.text:080740AC push edx
. J& t4 l" x+ B: H9 H5 l6 u魔力私服,最新魔力宝贝私服技术交流.text:080740AD mov eax, edx 妖城在线论坛5 b. t) X' `& t. M& `
.text:080740AF imul eax, edx
7 e+ f2 e, B& g! D.text:080740B2 imul eax, edx
, y6 O0 Q" e; Q6 X.text:080740B5 cdq
! m1 x& n, A1 f2 P% w魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740B6 idiv ecx
) y P y- _" `5 I ubbs.mocwww.com.text:080740B8 mov edx, [ebp+8]
8 c9 ?9 u( z0 _+ m) }) {6 R$ [* Q魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BB imul eax, edx
+ f" v t* S' h, D. @; l( Z.text:080740BE 0 w1 }# r) P9 [ v& g8 {. a) v# G
.text:080740BE locret_80740BE: 魔力私服,最新魔力宝贝私服技术交流 K( R3 s3 K' X2 R
.text:080740BE leave 魔力私服,最新魔力宝贝私服技术交流6 s' m/ j3 _9 s) R* T5 A' y" o
.text:080740BF retn
" k w4 z2 X. N3 {+ Q0 T.text:080740C0 loc_80740C0: 0 @' N0 E$ k% Q; {- [3 x1 X
.text:080740C0 mov eax, 0FFFFFFFFh * `9 z/ c% `$ j0 e% H( x4 f
.text:080740C5 jmp short locret_80740BE
, ]+ P! r0 [; u9 [# a—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート魔力私服,最新魔力宝贝私服技术交流8 a( M4 ?1 Y. ~. r. j
方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
( t' c( s0 I9 r, A魔力私服,最新魔力宝贝私服技术交流Cmp edx,0FFh —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート! n0 M3 ?& a, e. K. I6 Y& k! w& h9 Q
Jg shortloc_8074C0 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表! h0 {" N& D0 k: G% w
判断等级是否大于255是的话跳转80740C0
- O Z% G; l# K5 Xbbs.mocwww.com否的话进入我们的等级公式:
' B, h2 \+ d1 }0 y, g5 J6 ubbs.mocwww.com(等级*等级*等级除以50)*等级 bbs.mocwww.com1 N: z5 R: }: X8 V& q
也就是等级三次方除以50再乘以等级 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2 f0 N- i* P$ S
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。
+ C" o* ]# T1 o% i$ n* l216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
& I" b1 J" T5 K7 f妖城在线论坛所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
* f9 ?' I0 A7 ?8 }3 M5 n/ Pbbs.mocwww.com
6 a2 v2 N9 W+ h% B, m( ]接下去做公式:
9 _4 Y* i) u1 T3 S妖城在线论坛Push ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验
- h: e$ s2 z7 @# b. t' o魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Mov eax,edx 将下一等级的值赋值给eax
( r3 r- \* {: R6 R妖城在线论坛Imul eax,edx 将eax,edx相乘,结果存到eax —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# U) u# E* X5 _% c
Imul eax,edx 同上 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 O+ v. X6 L+ k# D! J0 R' ?% }- y
Cdq 这个做除法不加就会出错,用户登录后服务器当机
* \8 w. d, U2 }* h/ O+ D妖城在线论坛Idiv ecx eax除以32h算到50倍经验
% \/ ^2 r2 S" C+ J- Y; n妖城在线论坛Mov edx,[ebp+8] 从新获取下一等级的值
. R6 q& J0 F: }) AImul eax,edx 将eax,edx相乘,结果存到eax 妖城在线论坛* n; m' I+ Y/ F
2 z* a. h- h# `/ e( E
好了,这样就完成了运算过程。
/ W0 }) E+ l* v8 J y# k( C' Y/ Z1 w魔力私服,最新魔力宝贝私服技术交流 c7 X" y' x; w5 C
.text:080740C0 loc_80740C0: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& N9 \/ h/ i& P. U" T
mov eax, 0FFFFFFFFh
- Y9 L: Y+ f% {! e" P3 r, E5 J—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートjmp short locret_80740BE
. E# b# J* W- n魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表这一段代码就是等级超过你设置的上限之后返回-1。
( v) J. z# A$ `& _5 @3 G: C0 obbs.mocwww.com—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# G/ N9 P' o3 O8 ^4 D
妖城在线论坛! K' S# q$ o: b x4 J7 d, M8 j
下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 6 Y% g- P5 X' T, ^
这里就要用到FlexHex了。
7 Y0 ^' g5 ?4 }+ c$ e' F—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 @# i6 @: P- l
首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。
9 q% R# G7 r( S) A4 n5 g& }妖城在线论坛如下对应:
+ K/ F3 ^" _3 {4 ^5 v2 o0 \: b8 T—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートCmp edx,0ffh 81 FA FF 00 00 00 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート. f5 \4 S# B y8 p- w+ c2 y
jg short loc_80740C0 71 FA
+ G5 j, s) m3 c* g* g/ y魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表mov ecx, 32h B9 32 00 00 00
: ?! a, L# u- k3 f# f5 S2 R8 X魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
' x( T9 C7 t [妖城在线论坛依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート7 m( d0 E! U% w
这个挺有乐趣可以自己慢慢享受摸索。
( C5 f: }* ^6 A& u; R魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表bbs.mocwww.com5 B8 k* A0 f1 `
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。