没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 ( n6 X2 C; V1 _( X* |
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
/ x4 h; |8 p1 _% Q6 r8 H6 c. U
, \! p+ [0 d% g8 hbbs.mocwww.com用IDA载入gmsv,分析完成后进入Exports选项卡。 bbs.mocwww.com0 i: m8 x( K1 W4 f$ d
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。 妖城在线论坛3 X! o( p2 g3 I1 ^# ?; H
.text:08074098 public CHAR_GetLevelExp
4 P; A( f ~. M! Q0 `* v妖城在线论坛.text:08074098 CHAR_GetLevelExp:
) L3 L$ n# G5 n$ L4 Q. D0 c, ]# }妖城在线论坛.text:08074098 push ebp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 L. i% M/ w8 l7 Y3 c8 ^
.text:08074099 mov ebp, esp 魔力私服,最新魔力宝贝私服技术交流2 u4 g4 ]( j4 u" Z) @7 k: m
.text:0807409B mov edx, [ebp+8] 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' m! R* ]" x/ @2 P+ g
.text:0807409E cmp edx, 7Eh , w9 u0 o& D9 k
.text:080740A1 jbe short loc_80740C0 . W# c( d7 D3 |+ G8 u
.text:080740A3 push ecx
4 h" U! V. s* f$ U" E; w+ W魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A4 mov ecx, 7 妖城在线论坛9 w* \) T9 s: |$ P
.text:080740A9 push edx
4 a* b2 [3 |$ L5 Wbbs.mocwww.com.text:080740AA mov eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート6 ^/ s( ^* N \( U% h
.text:080740AC imul eax, edx
0 |/ h0 a" [ B( @4 J4 _/ z妖城在线论坛.text:080740AF imul eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表# U8 v6 ]0 v5 g
.text:080740B2 imul eax, ecx 魔力私服,最新魔力宝贝私服技术交流1 Z" @8 p1 [& Z2 f0 ^2 E
.text:080740B6 loc_80740B6:
9 Z: ^" R& C4 w, g# vbbs.mocwww.com.text:080740BE leave
. A4 a+ t# @' m; D. `* g0 b7 `; @) [.text:080740BF retn
! ]6 n: d" ^; I魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0 loc_80740C0:
3 ~7 y1 `( C2 v: a# R+ _魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4]
& g' x9 w% T, |+ C4 B% H魔力私服,最新魔力宝贝私服技术交流.text:080740C7 jmp short loc_80740B6 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表, w8 F+ x) B! W
+ j. q% L+ ` g( v4 N- x+ J8 b3 u/ C—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート粗糙的解释下这段代码的意思 妖城在线论坛/ b) S* O- u' T% \& l$ D: b& m8 g
# ~* M. D7 m2 p |. ~- Y& o' l% ]Push edp 妖城在线论坛* ?' W9 q* l; d: x' b
Mov ebp,esp & D5 O* {! B5 }. H. `
Mov edx,[ebp+8] 魔力私服,最新魔力宝贝私服技术交流# S3 B2 X3 e3 ~4 [9 Z: K
获取当前等级的下一级存到edx 妖城在线论坛% l7 L8 e* p0 D9 s1 y. b: h
, B0 \" e9 @/ w5 c m- G1 i—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートCmp edx,7eh
8 H, ?* e( M/ C" G妖城在线论坛将edx与7eh也就是10进制数130比较
. G& I# y9 I' o2 W1 Lbbs.mocwww.com( y( `0 n$ L$ Q* W5 ~$ t
Jbe shortloc_80740C0 bbs.mocwww.com' B9 t) e' O) w
如果edx小于7eh则进行跳转到80740C0
: o) K/ n, g4 ^6 w( |! ]3 S: @4 Vbbs.mocwww.com
; I, d. Q0 P' K妖城在线论坛Push ecx 妖城在线论坛; S, Y8 ~, v! N; t$ K& R) B) d! i
Mov ecx,7
4 |, V6 z6 ~" {. A魔力私服,最新魔力宝贝私服技术交流给ecx赋值7 魔力私服,最新魔力宝贝私服技术交流1 O: ?: B9 c6 e
# y5 L, L6 ?; o) A3 R% ePush edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2 A1 o: F3 y W; m1 z4 V
Mov eax,edx
8 Y. c1 G- ?5 [0 y- T, x9 I! _把当前等级+1的值给eax
# X: t, f! F; f4 e1 z& M. ^魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
! @8 Y6 C3 G0 U+ ]2 o! qbbs.mocwww.comImul eax,edx
6 q3 P& v5 C" n+ x' O魔力私服,最新魔力宝贝私服技术交流把eax与edx相乘,结果存在eax 妖城在线论坛( S& F6 ~4 y. I9 Q
H5 C2 Y: D: a* ^/ R) q4 z魔力私服,最新魔力宝贝私服技术交流Imul eax,ecx
& V$ i) u" V' L V6 G6 _魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表把eax与ecx相乘,结果存在eax 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% ~9 S# @1 j, K8 D+ _) Z
妖城在线论坛4 s/ F0 _+ w9 h3 s! @& M
Leave
3 s9 R- n8 j, u! A魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Retn
6 b$ i" w8 H0 L0 Y/ \0 O4 J# `魔力私服,最新魔力宝贝私服技术交流退出这个过程吧,大概
0 i$ O, ~$ [0 C( A, J: L; B9 c魔力私服,最新魔力宝贝私服技术交流魔力私服,最新魔力宝贝私服技术交流! c3 ?; D8 |, q# T" S4 a
Mov eax,dwordptrLevelUPtbl[edx*4] 5 ?0 }4 n" _# B6 h6 E7 h; ^! J
这里是读取经验表的内容给eax,也就是查表读经验 魔力私服,最新魔力宝贝私服技术交流 U: J+ w+ w( G* s3 O( T- s1 }
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% R! U. @8 J! `3 O5 v# I5 I
jmp short loc_80740B6 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表/ ]1 ^( c) x; Z) R2 v
强制跳转到80740B6 妖城在线论坛 A) e# X- M8 a2 L) D8 K/ h0 f
bbs.mocwww.com* K8 E+ P& L" H9 A% F) f
好了,这段代码就这点意思,逻辑上不难理解。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート: `& Y& H0 u! D6 d$ H9 l) t/ ~: l
虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
, D) L" S( Z- d0 x—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 A; u8 O; Z# S# H9 Z- Q) V4 e
分析完了之后开始修改了,上面的代码具体作用如下:
) r' G' [4 _1 m8 U8 h; w& V判断等级下一级是否小于7eh,是则跳转到查表。 魔力私服,最新魔力宝贝私服技术交流% j5 E! L. u# P& O
否的话也就是大于7eh时,按照下面算法运算 " A9 a3 H# a/ d' g7 I n
.text:080740A3 push ecx
' H& ^$ ]- e7 I- {" B.text:080740A4 mov ecx, 7 魔力私服,最新魔力宝贝私服技术交流' d$ l1 m3 G5 @' F
.text:080740A9 push edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表2 g4 x2 c8 w: o+ S# i m
.text:080740AA mov eax, edx
6 J+ z, s) g+ L! m3 r9 m魔力私服,最新魔力宝贝私服技术交流.text:080740AC imul eax, edx
# c- q$ V& u* k1 [. ^# i+ B.text:080740AF imul eax, edx 妖城在线论坛7 {$ T+ L& b# y6 B9 J; m
.text:080740B2 imul eax, ecx 魔力私服,最新魔力宝贝私服技术交流3 @9 `7 ~& ^5 k$ [$ ^# I1 d4 J
也就是eax的三次方乘以ecx,这里可以改成我想要的。 bbs.mocwww.com# I9 H9 p9 e9 {5 D- j
bbs.mocwww.com9 e. W" n+ d J# ?
我的目标是改称等级的四次方除以50,但是问题来了。
& H, S' c" t0 ]/ M2 B" Jbbs.mocwww.com怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
4 g8 j ~+ M; M% W# j$ _8 E K妖城在线论坛妖城在线论坛0 A9 C- K' R5 U6 i
.text:08074098 public CHAR_GetLevelExp 妖城在线论坛/ E: l0 M0 c* J" H/ c+ r6 y7 f
.text:08074098 CHAR_GetLevelExp:
# D* W( f$ I) U魔力私服,最新魔力宝贝私服技术交流.text:08074098
$ P, Z2 v/ ^* }( _2 `, Z0 }2 w魔力私服,最新魔力宝贝私服技术交流.text:08074098 push ebp
- s5 |8 ~* j+ v: D0 S; `1 \—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074099 mov ebp, esp
* n) l5 D4 t2 _# r8 ^5 o& V魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:0807409B mov edx, [ebp+8]
) @' Y9 q# z2 S; T) i' P+ D) J! _妖城在线论坛.text:0807409E cmp edx, 0FFh
( Q* g$ n" M# r& a, Q% ?.text:080740A4 jg short loc_80740C0 2 a" |7 R" g, k
.text:080740A6 push ecx 2 ]1 T# Z; [8 j$ w- j o: f. R
.text:080740A7 mov ecx, 32h 妖城在线论坛/ q1 K& c0 A; J) e+ e& f' Y
.text:080740AC push edx
. h, t* X& R- A( s- Q; D妖城在线论坛.text:080740AD mov eax, edx
: P C0 ^* J/ g$ F4 c! f% h魔力私服,最新魔力宝贝私服技术交流.text:080740AF imul eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート7 J) \' \" y) d2 o; G
.text:080740B2 imul eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) \" k; _, ]0 S. |$ E9 [# x+ p" j
.text:080740B5 cdq 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表7 M) ]+ p: f; h
.text:080740B6 idiv ecx 7 q& R) G: n! ~
.text:080740B8 mov edx, [ebp+8] 妖城在线论坛" ?" o+ \4 Q& l* r4 K, ~: I! I
.text:080740BB imul eax, edx : F: r+ C, V6 f$ D1 N s
.text:080740BE 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" w/ l, h8 @$ R+ {/ d# F6 V1 ?0 D
.text:080740BE locret_80740BE: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表/ `& m2 I$ _: f4 m( T2 D# _ k' a
.text:080740BE leave
/ O; _1 Q5 ^& G* R/ @& k.text:080740BF retn
+ ]; \1 p# R! h1 W妖城在线论坛.text:080740C0 loc_80740C0:
( L' S' M7 g6 @魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0 mov eax, 0FFFFFFFFh —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" Y1 c. B% W9 O* G) \# F
.text:080740C5 jmp short locret_80740BE 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表; M: B- f$ m6 }. Q% N; x
, N7 ^9 F$ }# z4 U—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート方便起见这里直接把我改好的代码贴出来,与原来不同的地方: 妖城在线论坛+ x0 B e+ H2 ?* G! W% ?; a2 {( f
Cmp edx,0FFh 7 U% i0 N# M$ E, V0 f; {
Jg shortloc_8074C0
+ l" j2 }5 p9 D. h, t妖城在线论坛判断等级是否大于255是的话跳转80740C0 bbs.mocwww.com# z; Q* u7 |. b, Y8 F
否的话进入我们的等级公式: —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート, ?' i' V# W1 n" E4 D' D; P
(等级*等级*等级除以50)*等级
6 e$ t! {7 Y1 E! e2 E; u: O8 Tbbs.mocwww.com也就是等级三次方除以50再乘以等级
7 q+ i5 w' f* p# Q6 V* Y: b—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。 bbs.mocwww.com" |. Q1 [0 W* E- G
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート+ z8 b; P, i$ w* r
所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。 bbs.mocwww.com- H( @% B1 A2 B$ G& T) \
8 R. D7 m& l" u# A) ^; h" s魔力私服,最新魔力宝贝私服技术交流接下去做公式: —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート, `2 p! k( Y! { r* o# ^
Push ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验
I& j& N( A, O( E% d f. p魔力私服,最新魔力宝贝私服技术交流Mov eax,edx 将下一等级的值赋值给eax
6 v0 e9 [; B' p" u obbs.mocwww.comImul eax,edx 将eax,edx相乘,结果存到eax 4 l$ l8 y, @8 q9 w
Imul eax,edx 同上
2 J8 \; a( }' k$ m5 C* T B妖城在线论坛Cdq 这个做除法不加就会出错,用户登录后服务器当机 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 b' n1 y: j* c) I2 E. G
Idiv ecx eax除以32h算到50倍经验
! ~- W. n! K6 Z& p- F魔力私服,最新魔力宝贝私服技术交流Mov edx,[ebp+8] 从新获取下一等级的值 妖城在线论坛, }, y, |. M P* X# X8 w* b. s. _
Imul eax,edx 将eax,edx相乘,结果存到eax
2 v% A( D+ s- X- g% j9 w3 o1 x魔力私服,最新魔力宝贝私服技术交流魔力私服,最新魔力宝贝私服技术交流, f8 v/ X9 X9 K) @
好了,这样就完成了运算过程。
( T8 r5 ^# s3 G- k1 m% ~妖城在线论坛魔力私服,最新魔力宝贝私服技术交流1 [3 a' j$ x: M( j% c5 Q$ R! }% C, D
.text:080740C0 loc_80740C0:
5 k. G: m3 e9 T4 n5 r# k3 K4 l( g魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表mov eax, 0FFFFFFFFh 妖城在线论坛; Q1 X! g. B+ S& d# z
jmp short locret_80740BE —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- P3 u: H6 }; L9 q
这一段代码就是等级超过你设置的上限之后返回-1。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' F9 M- m1 J# y: `8 X ^# ]
% J3 v* _: [# [: U
# d) s1 k. k1 R3 L1 J2 s魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。
7 S) C' Z/ [* w8 j: t魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表这里就要用到FlexHex了。
; Q* ^3 p% V5 m魔力私服,最新魔力宝贝私服技术交流魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* B! z0 u# o& b
首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。
, @: S* y8 J1 M% H% |7 ~—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート如下对应:
+ Y: y& ~- A6 Q# m5 A8 U: X+ D—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートCmp edx,0ffh 81 FA FF 00 00 00 bbs.mocwww.com6 P$ q. x6 H4 D, ]9 W0 _
jg short loc_80740C0 71 FA bbs.mocwww.com( Q" W0 X6 _+ H6 F# ?9 a
mov ecx, 32h B9 32 00 00 00 妖城在线论坛. Z$ {$ w7 T: e! z" R! K
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( Q* d2 m3 N6 w& N) Y+ G' [
依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。 魔力私服,最新魔力宝贝私服技术交流+ X: t0 U5 K; g4 |
这个挺有乐趣可以自己慢慢享受摸索。
4 L" c1 c3 s; B8 R魔力私服,最新魔力宝贝私服技术交流妖城在线论坛% m* R2 |# W/ d6 V
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。