发新话题
打印

[魔力私服分享] 没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。

没有汇编语言基础,参照网上无数教程和相关资料,修改GMSV文件的一些心得体会。
4 z& z4 a+ {% L  s7 i8 Q魔力私服,最新魔力宝贝私服技术交流使用软件IDA,FlexHEX。参考工具AsmFun(汇编指令查询器)Fun_1.2,asm2Shellcode等。
& M4 D. K# b- V
: h) b+ _* c/ U+ z) K9 G+ I魔力私服,最新魔力宝贝私服技术交流用IDA载入gmsv,分析完成后进入Exports选项卡。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" E+ J6 Q/ [/ v) R' C
搜索levelexp找到一个名为CHAR_GetLevelExp的子程序。 妖城在线论坛, E" l" f: [' h$ C
.text:08074098                 public CHAR_GetLevelExp
# e/ g$ p7 I' s5 K6 T$ O魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:08074098 CHAR_GetLevelExp: - p  K; `) Y+ W: }1 T; _% m  P! w
.text:08074098                 push    ebp
& y+ J/ h; J- `* ?4 Q; f.text:08074099                 mov     ebp, esp bbs.mocwww.com" }, l( u7 Y4 X. T
.text:0807409B                 mov     edx, [ebp+8] 妖城在线论坛: _# v* T4 p" S- X0 U! Q1 ?
.text:0807409E                 cmp     edx, 7Eh , b4 }3 m( R9 ?
.text:080740A1                 jbe     short loc_80740C0 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( R* `9 `2 n/ k8 k
.text:080740A3                 push    ecx bbs.mocwww.com1 U' |0 s1 v& i
.text:080740A4                 mov     ecx, 7
2 ]3 D4 U6 Y; p- {- X' n魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740A9                 push    edx
$ J* L  D+ t1 w/ `妖城在线论坛.text:080740AA                 mov     eax, edx
/ Z* l7 X# ~' W: y  G5 {: Q妖城在线论坛.text:080740AC                 imul    eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* l* D9 T% h$ }
.text:080740AF                 imul    eax, edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) K7 m, G# {5 f/ a
.text:080740B2                 imul    eax, ecx
% O% @# d$ q4 L" [1 I5 V9 o; h3 e.text:080740B6 loc_80740B6:   
" H2 W0 ?: K. u& G. V魔力私服,最新魔力宝贝私服技术交流.text:080740BE                 leave
' m7 D$ Y! Y  i5 s- B, n* [( S魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BF                 retn 妖城在线论坛' w+ b& y- ]# k$ g, B4 q! W/ f  R
.text:080740C0 loc_80740C0:                           
: V: h- H& H9 p' L: t( k) j魔力私服,最新魔力宝贝私服技术交流.text:080740C0                 mov     eax, dword ptr LevelUpTbl[edx*4] bbs.mocwww.com) e0 D3 e) [* h* o! J
.text:080740C7                 jmp     short loc_80740B6
, M) p* F& D2 @7 h) ?8 E妖城在线论坛
- _2 I+ Y+ Q8 Q  Q" }/ Z妖城在线论坛粗糙的解释下这段代码的意思 魔力私服,最新魔力宝贝私服技术交流6 W5 {% s! P- [. V5 S2 E' ~/ L+ P% A9 D
妖城在线论坛' Y& y1 O# A4 t$ \
Push              edp 妖城在线论坛7 p9 T# g" P0 d" `# ^; D
Mov        ebp,esp   B+ ?# Z7 K7 S4 g' m
Mov        edx,[ebp+8]
! T! F+ ^7 S$ {( k# a% t" |魔力私服,最新魔力宝贝私服技术交流获取当前等级的下一级存到edx
- }; u: S. e' p7 l& T8 h—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% V) t4 p3 n3 K2 v* ?  b
Cmp              edx,7eh
1 x) R- z% ^3 U! U6 a& \1 P4 K—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート将edx与7eh也就是10进制数130比较
, W& J7 P% v, o& y妖城在线论坛
& B) d' B/ Q& |; A9 o( Z) Kbbs.mocwww.comJbe         shortloc_80740C0
& W: g6 I# i% T" hbbs.mocwww.com如果edx小于7eh则进行跳转到80740C0
; Z4 r$ K4 b: j8 e+ f+ n& H$ Xbbs.mocwww.com魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表9 V# w2 }& ^& o; Q- N$ L
Push       ecx
" p9 e0 \+ @; B! f魔力私服,最新魔力宝贝私服技术交流Mov        ecx,7 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表, w! z, F2 F5 W# o7 U. {% b
给ecx赋值7
- a) @) ?* H# T5 e; M# `bbs.mocwww.combbs.mocwww.com9 K8 Y2 M: S- r. r3 P2 C: o  u0 o
Push              edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート+ m6 m4 z2 k% K' i; y
Mov        eax,edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) j0 k, W2 s: t, O$ @" B
把当前等级+1的值给eax —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート; }6 p1 j8 A8 _; \! a  q! [
妖城在线论坛" G1 z5 m3 [0 q  ]( U" Z
Imul              eax,edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表7 T3 P' G7 b" V* J( K9 n
把eax与edx相乘,结果存在eax
: G0 @& ~( M" X. `5 n" Z" abbs.mocwww.com
8 E% \$ w7 z1 U; [" x* ~6 ?7 z魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Imul              eax,ecx ( x6 v5 m/ z- g  t
把eax与ecx相乘,结果存在eax
, k/ E; s7 b4 V& J妖城在线论坛魔力私服,最新魔力宝贝私服技术交流; O0 L( y, M4 u  I& E$ ?
Leave
  R# c2 v  v) ?/ ~% t7 P/ b2 e. I妖城在线论坛Retn 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" X! C2 }3 @4 l, Z+ ^+ U
退出这个过程吧,大概
8 e0 D& y4 Z5 ?% W* b. s: s魔力私服,最新魔力宝贝私服技术交流
' h% ?' a9 f4 a, fbbs.mocwww.comMov        eax,dwordptrLevelUPtbl[edx*4] —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート$ [6 O+ {) ]0 R" H7 i
这里是读取经验表的内容给eax,也就是查表读经验 妖城在线论坛; H- y/ c: a# i( N4 I0 _0 r
% h5 S4 h9 Y9 `! w1 x" L+ j
jmp     short loc_80740B6 ) W" ?8 J1 [0 {6 X9 e8 U2 C, a2 w; ]
强制跳转到80740B6 魔力私服,最新魔力宝贝私服技术交流' x+ L( }  `  Y; G
- z( I. M: y, z
好了,这段代码就这点意思,逻辑上不难理解。 魔力私服,最新魔力宝贝私服技术交流( u, l& T8 p7 ]  e) V
虽然刚开始的时候我也是一头雾水,但是不要紧,随着一步步地摸索自然就会理解了。
- [2 B. T2 i2 O0 t4 O& m# [" Y  g: D0 _
% ~) v: y3 e/ I  C& b7 c% [bbs.mocwww.com分析完了之后开始修改了,上面的代码具体作用如下:
$ Q' B0 [9 n8 H9 K判断等级下一级是否小于7eh,是则跳转到查表。 魔力私服,最新魔力宝贝私服技术交流2 A* D5 _  n9 A1 T/ S: N
否的话也就是大于7eh时,按照下面算法运算 妖城在线论坛( ?) p2 |5 |# T
.text:080740A3                 push    ecx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表8 o( x5 }  I- }/ R1 M! C; S
.text:080740A4                 mov     ecx, 7
  ]$ \4 h5 ?( z6 [5 Q7 ~2 D—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740A9                 push    edx —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート7 A( ?7 f: J  z8 H- v- j+ F
.text:080740AA                 mov     eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表) t  Q' T% j5 V+ N5 S6 s
.text:080740AC                 imul    eax, edx 魔力私服,最新魔力宝贝私服技术交流- ~& r8 m: x. E% h$ s
.text:080740AF                 imul    eax, edx
. k8 I% I" ?( f3 z, F" I; e5 |  ^魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740B2                 imul    eax, ecx
5 E+ g/ ^& R2 J, S8 J5 v* B魔力私服,最新魔力宝贝私服技术交流也就是eax的三次方乘以ecx,这里可以改成我想要的。 妖城在线论坛9 r$ b' G0 {. x8 H

& M) T1 x- J$ v  Z—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート我的目标是改称等级的四次方除以50,但是问题来了。 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表$ N" x, F/ c5 |0 f
怎么做除法,怎么写代码到反汇编里,一步步来,先列出想要的代码。 魔力私服,最新魔力宝贝私服技术交流" Y, ?+ Y1 [0 F

- t  v' K) u; j. _& ~& i. N.text:08074098                 public CHAR_GetLevelExp
- f8 {* t2 v0 ^* `5 W魔力私服,最新魔力宝贝私服技术交流.text:08074098 CHAR_GetLevelExp:
% a* }! |/ a& M3 q魔力私服,最新魔力宝贝私服技术交流.text:08074098               魔力私服,最新魔力宝贝私服技术交流5 q5 ^. F' `" D* E" x5 b
.text:08074098                 push    ebp
/ q1 f7 A( Q7 N1 J; @—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:08074099                 mov     ebp, esp 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- n8 u( V. Y+ |3 ?) C
.text:0807409B                 mov     edx, [ebp+8] 妖城在线论坛. M. r: q2 A( {6 R2 ~+ J1 D$ T. R- J
.text:0807409E                 cmp     edx, 0FFh
; O, ~# T4 A0 j1 r" q9 k魔力私服,最新魔力宝贝私服技术交流.text:080740A4                 jg      short loc_80740C0
, G: J0 z& U9 K% G魔力私服,最新魔力宝贝私服技术交流.text:080740A6                 push    ecx
2 r# R; a. ^% a. M5 A魔力私服,最新魔力宝贝私服技术交流.text:080740A7                 mov     ecx, 32h
7 I' h+ Z% m6 U9 T.text:080740AC                 push    edx
; F1 o% ]% Q. v/ G" _! a—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740AD                 mov     eax, edx bbs.mocwww.com2 F/ l- v" S1 j+ O- B2 F9 T
.text:080740AF                 imul    eax, edx 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" s9 ]( z& B5 ~1 M7 R9 |
.text:080740B2                 imul    eax, edx
0 T! Q* V; ^( C7 C7 s.text:080740B5                 cdq
1 N# B5 ^& e3 J9 ?0 v—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740B6                 idiv    ecx
3 u4 f; u# Q4 n% [bbs.mocwww.com.text:080740B8                 mov     edx, [ebp+8] 6 H) V& c" C: `7 @) g+ [* D1 Q" R- G8 ~
.text:080740BB                 imul    eax, edx
9 B5 n0 t& I+ h5 ~2 p- K魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740BE
- Z5 M5 o5 ^) B0 Wbbs.mocwww.com.text:080740BE locret_80740BE:                     
" q, R! l+ Y1 u  F1 z7 M—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート.text:080740BE                 leave
) u* \" F  c3 F/ e2 ^! ^2 V.text:080740BF                 retn —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート  M  [& z* V3 ~# z. C9 H' f. c
.text:080740C0 loc_80740C0:                         妖城在线论坛4 f  Z5 \' z5 a0 I, j  [" p2 S
.text:080740C0                 mov     eax, 0FFFFFFFFh
  R4 T: u) C4 k( @.text:080740C5                 jmp     short locret_80740BE 妖城在线论坛  s$ J3 [# P3 G8 Z* D
妖城在线论坛' ?& i3 u) f6 H- E2 T$ i# b
方便起见这里直接把我改好的代码贴出来,与原来不同的地方: 魔力私服,最新魔力宝贝私服技术交流& {, e4 ?; f* B
Cmp              edx,0FFh 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- {1 F3 O" [, c' w
Jg           shortloc_8074C0 * G. ]4 ^! Y: ?# x6 z9 G7 c
判断等级是否大于255是的话跳转80740C0
) ^1 s) O$ m: q+ u- s: \1 Q' d! N妖城在线论坛否的话进入我们的等级公式: 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( x3 a, \$ W% y) z$ a  N
(等级*等级*等级除以50)*等级
: `7 s  k' U7 ~5 X4 T2 v9 h6 ^+ U- H魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表也就是等级三次方除以50再乘以等级 妖城在线论坛9 B) ^$ S% Z; Y+ q8 h
为什么要这么做而不是直接四次方乘以50是因为防止溢出数据。
$ ]) Q1 ]% N5 y/ B) a0 q0 y. R216的四次方是2176782336,这个数字正好可以让下级经验变负,呵呵。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート9 C) S6 D. E  X3 N- I2 P( `
所以先除50再乘到第四次方的时候就不会变负了,这是我摸索了很久突然领悟的真理。
8 s$ J  H! E8 h: j* Q5 r7 {* Abbs.mocwww.com—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート& e+ x& K* x$ M
接下去做公式: —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 f! ?# a9 `' b+ Q( a3 j
Push              ecx,32h          这里是经验倍率,就是公服经验除以ecx等于你的经验
7 C( f( @: l6 |9 x* ?3 `Mov        eax,edx      将下一等级的值赋值给eax 魔力私服,最新魔力宝贝私服技术交流: v1 v2 f- Q$ I
Imul              eax,edx          将eax,edx相乘,结果存到eax
& t8 N# k& Q1 `& ^! `# e  s$ h$ kbbs.mocwww.comImul              eax,edx          同上
0 T" |% \% [) ebbs.mocwww.comCdq                             这个做除法不加就会出错,用户登录后服务器当机
3 F2 E1 J# f& o; O魔力私服,最新魔力宝贝私服技术交流Idiv        ecx                eax除以32h算到50倍经验 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート& M1 d) }2 ]7 b9 M" L3 |
Mov        edx,[ebp+8]    从新获取下一等级的值 . @6 v8 {& ?3 B
Imul              eax,edx          将eax,edx相乘,结果存到eax bbs.mocwww.com& t% @8 F7 D5 }& G6 _7 h2 i
. k3 }/ t. b: ^. T8 l7 }
好了,这样就完成了运算过程。
9 u/ d& u8 T5 J+ h6 B妖城在线论坛
9 o! |: ?* F2 i  _0 ~8 D# N魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表.text:080740C0 loc_80740C0:                        
$ z( g& N3 G# [9 Q魔力私服,最新魔力宝贝私服技术交流mov     eax, 0FFFFFFFFh
. p$ ]& g4 L" ~/ c0 Xjmp     short locret_80740BE
0 d3 z' o* }* D: Z( c. u  n0 ?! c—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート这一段代码就是等级超过你设置的上限之后返回-1。
7 Z+ b- g1 T8 c# Mbbs.mocwww.com
9 e, m1 W2 M9 M0 m! j—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
5 c3 `" C3 H8 l' R魔力私服,最新魔力宝贝私服技术交流下面有个很严重的问题,新手比较难适应的就是如何写入你的代码。
# O; |: \0 b4 I—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート这里就要用到FlexHex了。
4 y4 O( f; y$ J0 L# X, S: r! U妖城在线论坛
8 s% F5 ~. T' w( a( Q1 _魔力私服,最新魔力宝贝私服技术交流首先将我们的汇编代码转成机器码,这一步需要非常的耐心细致。
' [1 d) C) D2 _; @+ O& J4 n0 J. D9 L- ~—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート如下对应:
% Q# e8 b8 J6 E" Q- \4 d" `0 ~1 y妖城在线论坛Cmp              edx,0ffh                       81  FA  FF  00  00  00 妖城在线论坛) ]# K& A1 T8 Q! `0 e+ M6 ~
jg      short loc_80740C0         71  FA 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表! z# P9 v' o0 V2 `( Y/ ^+ `
mov     ecx, 32h                      B9  32  00  00  00 bbs.mocwww.com. I, t5 u6 v5 s/ q, l+ [; U' x

3 n: Z0 Y- T& c9 p魔力私服,最新魔力宝贝私服技术交流依次类推,都可以在IDA中搜索到你要的代码然后做相应修改。 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート. c' s3 L/ O& [* Z
这个挺有乐趣可以自己慢慢享受摸索。 妖城在线论坛, V8 ~1 N8 }( p& F/ R/ U( h- i

, H3 Q' \9 D7 ^% l2 Dbbs.mocwww.com以上是我通宵玩了20多小时的个人心得体会,谢谢网上一些老人们的教程给了我很多指引和启示。

TOP

好文章, 可以帮很多入门的来修改~

TOP

看不懂.............

TOP

学习学习% k% g; {2 I5 \' w  {! R9 b! F
谢谢楼主分享经验

TOP

感谢楼主分享,顶!

TOP

很不错~呵呵~ 继续深入,到call语句的调整和为自己的语句腾空间还有搜索无果而必须自己对着opcodes写机器码就有趣了……

TOP

发新话题