没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 / J" P ^; L( \ B4 `
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。 6 a! {8 _* g2 U2 p) `
" Y2 [' R+ \. v& s" }3 j—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート用IDA载入gmsv,分析完成后进入Exports选项卡。
) y. n7 R! h, J魔力私服,最新魔力宝贝私服技术交流搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。
% r! @/ n) |) M: a9 n; ]魔力私服,最新魔力宝贝私服技术交流.text:08074098 public CHAR_GetLevelExp 魔力私服,最新魔力宝贝私服技术交流0 l% l* w" d+ E1 _3 B5 |5 c
.text:08074098 CHAR_GetLevelExp: 妖城在线论坛( m. r- j/ l6 R1 _
.text:08074098 push ebp 妖城在线论坛, Z# k. C; [! S8 p# z" A4 Z
.text:08074099 mov ebp, esp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート$ B2 m) [0 s V
.text:0807409B mov edx, [ebp+8] —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート! O$ g$ D; ]6 E6 O' X
.text:0807409E cmp edx, 7Eh ' k$ D+ }6 F, W# B; I
.text:080740A1 jbe short loc_80740C0 bbs.mocwww.com8 z6 F; C4 z7 k* V$ U
.text:080740A3 push ecx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 ]$ m4 V0 Y. W$ d0 H9 ^: c4 z/ Q
.text:080740A4 mov ecx, 7
2 c& C; c f$ k" \% s0 L" K- f& pbbs.mocwww.com.text:080740A9 push edx
1 J# H+ q, U: U.text:080740AA mov eax, edx
2 v- U. H8 c" q H.text:080740AC imul eax, edx 魔力私服,最新魔力宝贝私服技术交流" M$ L0 m- ^3 F2 |' s, d" D. N# L
.text:080740AF imul eax, edx bbs.mocwww.com3 I$ ?2 k( k$ K8 u: w
.text:080740B2 imul eax, ecx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表1 s1 k3 a$ G4 W7 r6 d& g1 q
.text:080740B6 loc_80740B6: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表$ \( d5 f: M+ v; {, u
.text:080740BE leave
0 K1 Y% ^ |+ cbbs.mocwww.com.text:080740BF retn
# @; _/ b4 |, y4 l* w* l1 [( f. R# O妖城在线论坛.text:080740C0 loc_80740C0:
; w3 B* S8 |1 V ~( c魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4] 妖城在线论坛$ F. ]6 D; a" t* p9 Z
.text:080740C7 jmp short loc_80740B6 妖城在线论坛5 M$ S% |2 Z. Z: C# i8 K
bbs.mocwww.com! u5 A2 g% Q/ u
粗糙的解释下这段代码的意思 bbs.mocwww.com" F" o* U( L: g9 U& l
bbs.mocwww.com5 n/ ~& n, L9 ]3 P/ X: q- c; G4 u* P
Push edp 魔力私服,最新魔力宝贝私服技术交流/ ]8 n7 K) o! T" l+ [
Mov ebp,esp # {, N( |; x+ _ Y% d
Mov edx,[ebp+8]
; N) y" K0 y5 r. @6 }' [! h获取当前等级的下一级存到edx 魔力私服,最新魔力宝贝私服技术交流: [9 ?5 ], B1 R: |0 U# _7 }# M/ {
' l: { ` r1 P& H1 D魔力私服,最新魔力宝贝私服技术交流Cmp edx,7eh bbs.mocwww.com9 |. G0 t4 P" F( {( A6 j
将edx与7eh也就是10进制数130比较
9 I3 l5 C9 O! o+ |( f; Q魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
/ B& m" F" V5 Q" `—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートJbe shortloc_80740C0 魔力私服,最新魔力宝贝私服技术交流+ i& }& c% M" r$ e
如果edx小于7eh则进行跳转到80740C0 妖城在线论坛6 h# V: B8 B W" ^! i, l2 X* Z
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- m. x$ j8 Q: }2 f; m& P# @
Push ecx
) Q+ N8 g8 D: M魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Mov ecx,7 $ V* k: }2 ]" C
给ecx赋值7
; L! I8 L9 U5 o—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート9 v0 b1 s; }& M) o: {( i8 j
Push edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表5 @8 N0 }, S; H5 }8 t) N d2 a* M
Mov eax,edx 4 s V$ C! }! _- L& @
把当前等级+1的值给eax 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ G) X- v, f0 M3 z- i) k6 L+ f
/ L, c' E! r$ [, j0 C! \/ DImul eax,edx 魔力私服,最新魔力宝贝私服技术交流% W/ { o) f+ Q/ o& f" i+ d/ t w
把eax与edx相乘,结果存在eax
: o$ k% e" ?8 j, [) p8 I% k
+ |$ ]* d( l9 ]2 n3 q: oImul eax,ecx
8 O* ?$ d7 d9 k: n5 e0 i3 _魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表把eax与ecx相乘,结果存在eax
" ^' G. p, S8 r3 C8 G( @, ~魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
3 d8 Q6 h. w7 E" S# c魔力私服,最新魔力宝贝私服技术交流Leave
/ l0 K# P# I# J妖城在线论坛Retn
5 z; P0 \7 P7 g, P4 G, ^—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート退出这个过程吧,大概 bbs.mocwww.com" D, F* Y( r' r8 O5 M/ {4 m
' Y1 L% ^6 k5 u/ |Mov eax,dwordptrLevelUPtbl[edx*4] 魔力私服,最新魔力宝贝私服技术交流" M1 ~% y1 Z* N; x* P
这里是读取经验表的内容给eax,也就是查表读经验 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2 F& g) v) E6 s( G8 d% q7 y
4 n: M1 f+ `9 K/ d( d魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表jmp short loc_80740B6
/ ^" _+ n4 o% ~- p2 @8 r—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート强制跳转到80740B6 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( N! `' P: Z! h5 w
' Y0 C# U% s% E魔力私服,最新魔力宝贝私服技术交流好了,这段代码就这点意思,逻辑上不难理解。
' \& S e$ B1 E3 K! K7 v: f- i3 u! i虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
8 o7 H. B) V& h/ N$ h1 i
; `1 r/ Q; p' ~/ B( D, V7 E—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート分析完了之后开始修改了,上面的代码具体作用如下: bbs.mocwww.com7 V7 Z! e# {- _: V8 {1 E& K& g
判断等级下一级是否小于7eh,是则跳转到查表。 妖城在线论坛9 m) C# q& \5 G
否的话也就是大于7eh时,按照下面算法运算 / z( n) x( ?" g5 ]6 Q
.text:080740A3 push ecx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表1 i9 x: ~8 t. H/ D( G5 c9 U
.text:080740A4 mov ecx, 7
! T# {. y2 w# P" U N) x$ Z魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A9 push edx
1 s M7 V7 X7 }' vbbs.mocwww.com.text:080740AA mov eax, edx + i& m' {/ O$ \% s5 V
.text:080740AC imul eax, edx
/ Y @2 o3 M# b魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740AF imul eax, edx
$ N9 b L" G2 p: b% H# E.text:080740B2 imul eax, ecx
/ g9 @3 t ~+ {+ i) B7 c1 h, e—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート也就是eax的三次方乘以ecx,这里可以改成我想要的。 bbs.mocwww.com) [) U. M, T' g1 I! Q2 H
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 B+ [0 Y! Q4 u6 B' N
我的目标是改称等级的四次方除以50,但是问题来了。
$ ?+ r& J: A5 @0 c& Zbbs.mocwww.com怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。 妖城在线论坛. e' v9 c9 K. t) B
# q8 Y+ c; r2 a8 k$ ]8 r* h' j7 x.text:08074098 public CHAR_GetLevelExp
7 {, ^0 c& D) j2 q1 O& ^4 x( j9 F" r.text:08074098 CHAR_GetLevelExp: 7 c, V m! \1 ?3 G! }# D- {$ f
.text:08074098 5 o% w1 B- O4 ]* P( s% k$ ~
.text:08074098 push ebp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表. N, \- S$ h4 R0 k0 T
.text:08074099 mov ebp, esp
6 f9 Q$ |( X" N0 i0 }; s* r- ?3 e魔力私服,最新魔力宝贝私服技术交流.text:0807409B mov edx, [ebp+8]
8 H1 d. L; L& o0 x魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:0807409E cmp edx, 0FFh 魔力私服,最新魔力宝贝私服技术交流9 W/ ?7 D" ^- V
.text:080740A4 jg short loc_80740C0 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表, M0 C9 O5 ^; j# w) q- g9 e2 I/ W9 w
.text:080740A6 push ecx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート/ O$ f8 F6 t) X4 N, Z
.text:080740A7 mov ecx, 32h bbs.mocwww.com0 L: F# {& O: r# i6 I
.text:080740AC push edx
! t8 ~- c* a; y& P0 h5 ?魔力私服,最新魔力宝贝私服技术交流.text:080740AD mov eax, edx bbs.mocwww.com- X1 \1 c4 v+ A9 m+ h
.text:080740AF imul eax, edx
) p1 N$ [* m6 j5 D—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740B2 imul eax, edx
- x C* ~8 w, M魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740B5 cdq 妖城在线论坛 D' ~7 W" I3 u E
.text:080740B6 idiv ecx
' f% S# m$ \6 v1 O( r1 @魔力私服,最新魔力宝贝私服技术交流.text:080740B8 mov edx, [ebp+8]
" B& u3 q8 z# L& _7 I1 H妖城在线论坛.text:080740BB imul eax, edx 妖城在线论坛# |) [1 T! _9 i5 o) Z; Y. U! p( I$ o
.text:080740BE 妖城在线论坛' d, z) V8 ~& z# d- I3 X
.text:080740BE locret_80740BE: bbs.mocwww.com' V* H9 i8 [* G1 `
.text:080740BE leave —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート W4 ` p% o* Q/ r8 c: H+ e
.text:080740BF retn bbs.mocwww.com" b" x8 Q* L, p# X# g
.text:080740C0 loc_80740C0:
. r) i$ d+ q7 `, i" S) R) j魔力私服,最新魔力宝贝私服技术交流.text:080740C0 mov eax, 0FFFFFFFFh 魔力私服,最新魔力宝贝私服技术交流, q5 }; G* @5 ] V' u" {: v/ O
.text:080740C5 jmp short locret_80740BE 妖城在线论坛! O; V$ e4 y3 G) I* U' O D
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% o/ r2 c7 l: [ o2 [+ e
方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
& K2 }+ S ]: d& E% D( m7 Y魔力私服,最新魔力宝贝私服技术交流Cmp edx,0FFh 妖城在线论坛8 ~% M& T1 }$ S. P
Jg shortloc_8074C0
}( g8 N9 n6 l2 ?; g) w. G s—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート判断等级是否大于255是的话跳转80740C0 妖城在线论坛$ d/ U7 e3 J- |
否的话进入我们的等级公式: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表# f2 f* D6 g8 O+ q$ D
(等级*等级*等级除以50)*等级 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート/ |: L& G, M0 W: I( W! r
也就是等级三次方除以50再乘以等级 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) \2 ?' E$ v% q$ L. o. ?
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。
# t; T' ]( T' O2 ]0 T—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。
- u' l% q+ W; H% F. @魔力私服,最新魔力宝贝私服技术交流所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
; c* o1 V4 y v- z5 @" |# Z—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表7 \; B' X3 G9 H9 R* v
接下去做公式:
, k! n# z: A# I6 @8 Tbbs.mocwww.comPush ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 \0 V& ]% x: b
Mov eax,edx 将下一等级的值赋值给eax
9 c5 y" L; x6 b2 J: e/ g# [Imul eax,edx 将eax,edx相乘,结果存到eax
9 p* w) \ [* `) |# Z/ @$ o0 @—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートImul eax,edx 同上
+ {/ S+ m& G5 h5 { F; Q; }0 uCdq 这个做除法不加就会出错,用户登录后服务器当机
, y! C ~. i, i- Q7 C1 b/ \3 c1 [妖城在线论坛Idiv ecx eax除以32h算到50倍经验
' I z$ a* H8 H7 a—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートMov edx,[ebp+8] 从新获取下一等级的值
9 k( }6 K% j$ O' u" e# \魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Imul eax,edx 将eax,edx相乘,结果存到eax
" T" l" c2 P) Z魔力私服,最新魔力宝贝私服技术交流
, m+ W4 v2 c' P& x0 f# t好了,这样就完成了运算过程。
% N6 {. l( ?# `- p. _魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート1 U$ f: [( Q- }
.text:080740C0 loc_80740C0:
& F- F; ^$ x' v: p/ R3 ?* p) }妖城在线论坛mov eax, 0FFFFFFFFh 魔力私服,最新魔力宝贝私服技术交流4 I; O4 f0 i5 u4 |# }1 V! }8 b& U
jmp short locret_80740BE bbs.mocwww.com" l/ W1 g5 ]+ D) K! Z/ `4 N* i; Y
这一段代码就是等级超过你设置的上限之后返回-1。 : Z! _& K, w! t( ]
6 w/ h" C5 S$ x( j9 i—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートbbs.mocwww.com; q$ x1 _6 e/ Z/ B) B( j, T! P
下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。
* M. t& v0 W" `! {. k, \6 P P—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート这里就要用到FlexHex了。
2 t) b9 R% f4 y7 [) Lbbs.mocwww.com
# G" @; \3 h/ i5 X/ t2 e, Y( {—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 1 v- x I$ G+ c5 \0 |2 D
如下对应:
/ j$ U( Y5 O) V* \5 f$ Ebbs.mocwww.comCmp edx,0ffh 81 FA FF 00 00 00 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% \$ o( T9 a1 @8 G
jg short loc_80740C0 71 FA 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表0 X+ x5 C. e* F) w. ?$ c" E
mov ecx, 32h B9 32 00 00 00
- {! H8 q9 r3 h1 t
9 A" w" R# p& ^0 ^9 S" W, j& i魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。
5 b+ X K# u" i" R3 x2 q: P—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート这个挺有乐趣可以自己慢慢享受摸索。 ; w7 k6 d$ d! Y! B1 L
妖城在线论坛$ Y! E( x4 t' n& z1 ?
以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。