没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。 bbs.mocwww.com% v& i8 _( ]* S( c3 w- q
使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
4 `/ s7 M/ c4 `0 |—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート魔力私服,最新魔力宝贝私服技术交流$ _' X) ?/ j( @ g5 m- B T& u
用IDA载入gmsv,分析完成后进入Exports选项卡。 bbs.mocwww.com1 m$ _! F- n8 v
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。 9 p) O" Y) r9 L* y# Q+ d
.text:08074098 public CHAR_GetLevelExp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- _! h8 c r+ n' ]- f# C4 v
.text:08074098 CHAR_GetLevelExp: 妖城在线论坛- s4 Y) @) q' r: c; e9 A
.text:08074098 push ebp
2 L8 W" p& w0 D魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:08074099 mov ebp, esp
, p, U! ?0 }1 Z5 @. Z魔力私服,最新魔力宝贝私服技术交流.text:0807409B mov edx, [ebp+8]
( @2 Q; C, a, s) C) o—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:0807409E cmp edx, 7Eh
; X4 p9 ^% b* |2 R/ U% mbbs.mocwww.com.text:080740A1 jbe short loc_80740C0 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 Y; f! o! ~" K( A2 k5 A6 V
.text:080740A3 push ecx - v1 I: t2 ~2 ^3 ^# K7 D" p
.text:080740A4 mov ecx, 7
# c/ X& z0 A( Q2 e8 ?' s" p妖城在线论坛.text:080740A9 push edx
1 }- S- O" ^; f' V' t.text:080740AA mov eax, edx
, i3 M/ i X" ^' L& n) h—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AC imul eax, edx 妖城在线论坛) y9 }% O9 y, x" _
.text:080740AF imul eax, edx 妖城在线论坛! Z& X3 w% K' h1 A8 k
.text:080740B2 imul eax, ecx
% S( J6 b. Z5 z F妖城在线论坛.text:080740B6 loc_80740B6:
7 }6 i4 m- |1 |+ \bbs.mocwww.com.text:080740BE leave bbs.mocwww.com4 \( j7 G/ T/ C& L$ ?- ]) i# E. i
.text:080740BF retn —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート! q" i" N8 U) o2 i% C2 r' M
.text:080740C0 loc_80740C0: 7 n$ r7 n1 p/ A7 H
.text:080740C0 mov eax, dword ptr LevelUpTbl[edx*4]
: e0 j6 E- {. I0 K2 s/ `.text:080740C7 jmp short loc_80740B6 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" p/ A* j ?% ? J, T
& u+ `* }. A6 B0 P( s4 b—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート粗糙的解释下这段代码的意思 妖城在线论坛8 m( n Q9 k; _( Q$ T) A
% E$ k( ^, X. C2 I1 o! |—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートPush edp
2 |4 R. k' @% [魔力私服,最新魔力宝贝私服技术交流Mov ebp,esp —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート9 W, K" O% l- f) X' P
Mov edx,[ebp+8] - l2 [$ I/ ?$ O& X2 k! M- a! S5 {
获取当前等级的下一级存到edx
9 W5 Y3 `4 [2 f( n, m魔力私服,最新魔力宝贝私服技术交流8 M2 {- I* F" }# b) s2 l% E
Cmp edx,7eh 妖城在线论坛+ l: O v1 r8 v, E
将edx与7eh也就是10进制数130比较
1 d2 E3 b4 t! T1 C: ?9 A妖城在线论坛bbs.mocwww.com, B1 O/ ?/ S0 S6 {9 y, _" I
Jbe shortloc_80740C0 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( f$ k- ~" L6 x" d" m
如果edx小于7eh则进行跳转到80740C0 妖城在线论坛7 i; ^' q0 A; w" N3 {
* E8 M+ k! m) T# ^) p' R7 m+ F1 ?# X( a魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Push ecx
. ~3 p$ e4 \0 I2 [, P魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Mov ecx,7
* @4 R8 A6 Y& k4 H: f9 y. W给ecx赋值7 魔力私服,最新魔力宝贝私服技术交流" ~1 R- @: W, r* Y5 P
8 m/ [ Q8 R( _# G9 S. _2 C2 f7 T" z' `
Push edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート/ g6 S! q1 l* w
Mov eax,edx
~5 d6 W+ I# g; X把当前等级+1的值给eax
: H. q6 x: F* Y+ z4 b9 |4 O* |0 ~魔力私服,最新魔力宝贝私服技术交流
0 J7 @4 t+ ~: v) k+ [8 D- w5 @5 x魔力私服,最新魔力宝贝私服技术交流Imul eax,edx 妖城在线论坛/ a3 G) G6 g& I7 S H
把eax与edx相乘,结果存在eax
4 k) P9 l# L5 \$ Bbbs.mocwww.com
/ N; b; L2 E( O9 `: X6 Ibbs.mocwww.comImul eax,ecx 魔力私服,最新魔力宝贝私服技术交流& b, C( w; v9 |6 D
把eax与ecx相乘,结果存在eax
$ w, ^' M7 M' `5 ^3 ]bbs.mocwww.com
" K9 ^# G% L; a3 D$ c9 ~" L8 M* @+ Bbbs.mocwww.comLeave —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート' U2 H1 f) L& h) s: |
Retn
$ _) H3 C+ H, i4 x$ u" Y+ Cbbs.mocwww.com退出这个过程吧,大概
: E, M# K$ ]2 c7 S5 B妖城在线论坛
$ U- c8 s/ A( L) z; z妖城在线论坛Mov eax,dwordptrLevelUPtbl[edx*4]
/ R, {8 L5 J) Q5 f" L—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート这里是读取经验表的内容给eax,也就是查表读经验 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表! h0 N. D/ N0 Q1 a2 B7 M# j1 ]
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表9 `' G9 I+ Y7 w* u
jmp short loc_80740B6
( f$ }; Y6 I5 k- u' T7 _+ S' y! I, o B魔力私服,最新魔力宝贝私服技术交流强制跳转到80740B6
2 `7 z0 \8 G! w+ {魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
: C0 K# {: w0 A; R+ L# H zbbs.mocwww.com好了,这段代码就这点意思,逻辑上不难理解。
% C0 q2 R; e0 K: I. O' Y* [虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。 妖城在线论坛1 C6 {- B A) f3 y; e& {) \6 w" I" F
1 q2 Y+ @: j, Z2 H& `5 k; L6 mbbs.mocwww.com分析完了之后开始修改了,上面的代码具体作用如下:
- \% K: k* I9 }& S+ y6 }妖城在线论坛判断等级下一级是否小于7eh,是则跳转到查表。
! Z. F2 Z4 w: F& @ S, z魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表否的话也就是大于7eh时,按照下面算法运算 魔力私服,最新魔力宝贝私服技术交流) e. @4 E- g! _ F' n6 C
.text:080740A3 push ecx
1 ?9 b' H$ ]% x4 F& k2 f" Y8 K妖城在线论坛.text:080740A4 mov ecx, 7
3 `+ D- Y0 J4 z2 X' h# \妖城在线论坛.text:080740A9 push edx
+ ]9 `2 {% x/ V1 S5 h- g! v2 [, }—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AA mov eax, edx
j3 L4 v) g, c2 A: ?4 i8 X—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AC imul eax, edx
- m. K6 k, h) ~! `' t! O4 t6 x1 D魔力私服,最新魔力宝贝私服技术交流.text:080740AF imul eax, edx bbs.mocwww.com1 K6 H! N8 ^9 B% B% Y0 g( F
.text:080740B2 imul eax, ecx
- j$ F# X2 a: U- i& s妖城在线论坛也就是eax的三次方乘以ecx,这里可以改成我想要的。 妖城在线论坛" }$ `% i5 k% J
! S3 s z$ t* l7 W( p/ m& _—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート我的目标是改称等级的四次方除以50,但是问题来了。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& L5 y$ [ e5 P" `' L
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。
K* B% l: d0 g; q: p0 K9 W5 Y
* M9 D" o4 i- U8 d3 l8 H5 f* h% P妖城在线论坛.text:08074098 public CHAR_GetLevelExp
& `) B8 L5 f6 P& Z% R妖城在线论坛.text:08074098 CHAR_GetLevelExp: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表/ G4 Y8 B2 d: C6 u
.text:08074098 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- J# A7 W, {9 @. z7 j
.text:08074098 push ebp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 X4 r7 @/ o* [) @
.text:08074099 mov ebp, esp
. ^2 p8 H, C6 L) P; b; L1 n魔力私服,最新魔力宝贝私服技术交流.text:0807409B mov edx, [ebp+8]
0 n& i8 B- T, E7 i( P2 k妖城在线论坛.text:0807409E cmp edx, 0FFh
! W, T0 H S0 q; ^) \. E妖城在线论坛.text:080740A4 jg short loc_80740C0 bbs.mocwww.com* F" `4 e0 V+ S6 b0 V3 H: L$ h \
.text:080740A6 push ecx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート6 S \* H: ?( E' j6 N9 u1 |
.text:080740A7 mov ecx, 32h 妖城在线论坛7 g1 y4 O: h7 n
.text:080740AC push edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- }# R1 n8 t2 P% O+ W8 Y1 p: G
.text:080740AD mov eax, edx
3 e+ Q& ]: k2 e) A, r$ x J魔力私服,最新魔力宝贝私服技术交流.text:080740AF imul eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表1 D I* z6 {# T+ l
.text:080740B2 imul eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表7 h# V3 F; J$ C2 t4 ^
.text:080740B5 cdq 魔力私服,最新魔力宝贝私服技术交流; }/ d$ t& \1 N' v) A0 K
.text:080740B6 idiv ecx 魔力私服,最新魔力宝贝私服技术交流/ n1 h( z2 V, [3 t8 @
.text:080740B8 mov edx, [ebp+8] 3 C9 t2 O0 Z, g2 N5 Z' Y
.text:080740BB imul eax, edx 魔力私服,最新魔力宝贝私服技术交流( K3 ?% w+ ~+ J/ A F
.text:080740BE 魔力私服,最新魔力宝贝私服技术交流: z% N* _3 Y/ ]4 B/ Z
.text:080740BE locret_80740BE: bbs.mocwww.com" c. I6 P% F/ `! {3 b7 a
.text:080740BE leave 妖城在线论坛. ^4 w. I$ E; ]0 i( o; O
.text:080740BF retn
; s9 R7 h* ~ B—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740C0 loc_80740C0: 魔力私服,最新魔力宝贝私服技术交流" f+ g% a& }+ K3 d9 _/ U
.text:080740C0 mov eax, 0FFFFFFFFh
7 j% V O7 \* x/ b' kbbs.mocwww.com.text:080740C5 jmp short locret_80740BE 魔力私服,最新魔力宝贝私服技术交流# c- K: h( u7 F
2 M. e, {# U+ u3 s2 T# Z: G妖城在线论坛方便起见这里直接把我改好的代码贴出来,与原来不同的地方:
9 `9 T, n' Q* Y' U4 O9 F8 KCmp edx,0FFh 魔力私服,最新魔力宝贝私服技术交流4 S1 L9 C/ H3 a$ a0 l
Jg shortloc_8074C0
0 e1 j) M2 ?" b3 ?. J魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表判断等级是否大于255是的话跳转80740C0 / m! U( _3 V$ I" [* d
否的话进入我们的等级公式: bbs.mocwww.com( w% o* e5 i# w4 A' {7 {! B
(等级*等级*等级除以50)*等级
0 S8 `5 T, }3 g! }7 @8 D& Xbbs.mocwww.com也就是等级三次方除以50再乘以等级 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート, Q, H) b; p) { W
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。 3 [( B9 U; R6 Q4 J7 F4 ~6 Z
216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。 魔力私服,最新魔力宝贝私服技术交流, I( M) Y# k$ {$ r) M7 D+ N
所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
# g0 H, W3 o6 |- }
* @& Y* A( h. ibbs.mocwww.com接下去做公式: 妖城在线论坛* h+ U W- @; u; [: ]' [! S; u
Push ecx,32h 这里是经验倍率,就是公服经验除以ecx等于你的经验
& n! ^' _8 Y# Y% I/ C2 s; d妖城在线论坛Mov eax,edx 将下一等级的值赋值给eax
7 B0 a8 m" ^8 e4 c( c+ |; E0 L6 }- c—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートImul eax,edx 将eax,edx相乘,结果存到eax
( v7 J4 l ]$ F# F2 e2 G& K妖城在线论坛Imul eax,edx 同上 5 c& ]- `8 ~6 E2 R7 |+ j z; j
Cdq 这个做除法不加就会出错,用户登录后服务器当机
& _# I( I& }8 M, G3 g% AIdiv ecx eax除以32h算到50倍经验 妖城在线论坛; Q9 ~9 B, F8 W: G0 n3 z' C
Mov edx,[ebp+8] 从新获取下一等级的值 妖城在线论坛9 u# q ]# N) K* `) m& [
Imul eax,edx 将eax,edx相乘,结果存到eax 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表1 x6 \4 W' k/ a1 {$ j, l5 L
& Q8 e' ~/ t4 h" A% V/ S+ _—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート好了,这样就完成了运算过程。
# o: s Z4 u4 h8 w' nbbs.mocwww.com—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート& I8 I$ ~8 c J8 I& Z1 `: J& K
.text:080740C0 loc_80740C0:
u8 z. c. [3 B6 `1 R! Nbbs.mocwww.commov eax, 0FFFFFFFFh
% K o$ x8 c! G+ }. Rbbs.mocwww.comjmp short locret_80740BE —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート( q; |. l; Q) G7 ~- J# q: s
这一段代码就是等级超过你设置的上限之后返回-1。
& Q* I* z2 d: i0 Bbbs.mocwww.com—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) C/ V8 \6 F+ A! M7 x
0 O8 z+ B. G3 \7 G1 H魔力私服,最新魔力宝贝私服技术交流下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。 6 [) S/ \( w# H7 |0 e% U& p! K4 J
这里就要用到FlexHex了。 妖城在线论坛! F, n! d5 a% [0 q" v! Y. |
9 p1 ?! w& J$ B5 K% [妖城在线论坛首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% q; B5 z( \2 |3 D* c. `" ?; s) U
如下对应:
3 d1 M' F+ Q9 V( S4 o+ y0 Pbbs.mocwww.comCmp edx,0ffh 81 FA FF 00 00 00
]6 U" J8 H0 X+ T+ M/ ?6 g& X魔力私服,最新魔力宝贝私服技术交流jg short loc_80740C0 71 FA 5 ^9 C& G9 j3 x3 B6 Y* o) W' v4 o
mov ecx, 32h B9 32 00 00 00
( `3 q1 Y/ A5 ~( x* k* W—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2 z5 F, G+ I s3 Q
依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。 魔力私服,最新魔力宝贝私服技术交流' q O# { _6 B2 G: Y
这个挺有乐趣可以自己慢慢享受摸索。 妖城在线论坛* r" t6 v1 X x- y& [
, n3 K; M$ E) A; x7 J( _- h妖城在线论坛以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。