三千论坛

标题: 初步了解tgs插件的写法(二) [打印本页]

作者: 快要发癫啦    时间: 2023-1-5 09:45
标题: 初步了解tgs插件的写法(二)
本帖最后由 快要发癫啦 于 2023-1-6 09:35 编辑
& \, o& J2 O7 ~+ v% K  ]2 ]) l8 h. ^# t8 ^* e. Y
上面部分已经初步了解色彩设定的方式, 这个时候为了增加我们自定义色彩显示, 就需要在
* G: a  D9 A6 n3 F, K3 N
) E8 J* j' Z7 A5 ?0 f9 I! C
    dll里面进行内存地址读写
7 Z  @+ N/ C' v: m; s/ d
$ {* `( s% w* T3 @8 u% r) A! Q
    我是在 * h% u0 l" p% b+ M
   
/ V2 _  z' U0 Z0 @3 Q
    0053BBFF  |. /0F87 41020000     ja      0053BE46, ]4 _/ Q0 M( B
8 D9 y6 n: B: O" i
    在这个地址进行拦截 在delphi里面 可能可以dll初始化时这样写
9 v8 N8 y1 j' i+ b0 N  b% z
2 ^$ i& \8 f& ~2 ]
    procedure InitDll();
7 c) i( }6 p6 w" I
    var
6 D1 l' \3 c0 i' u3 L% A+ K1 L  F5 Z
      p: Dword;# ~5 x) N& d  I5 L, U9 q* s; A6 B: e0 s
    begin
" P+ {* x6 O$ ?' ?' t" `/ E( ?- L: d
      p := $0053BBFF + 1;; W% a) T7 c% l& B$ ?
      PDword(p)^ := Dword(@proc_0053BBFF);8 x" o$ {! k% S" [8 U) w3 C' s8 r% P
    end;
; D' U% v/ U- R. W1 u
; K6 V: q) W. V/ T
    在自己的代码里面写一个色彩增加的函数判断比如
6 r, |" s' h) M/ Y2 J0 G
' S3 ^1 b( G. c2 S$ s: }
    delphi代码:1 {' M* x* g  `1 a7 T

4 G0 q6 j" B' @; W2 p7 W" u- o
    var
- E  E; B0 }1 {7 d3 s- ?
      EndAddr1_0053BBFF : Dword = $004F470C;
- B# e, z2 k2 M9 d
      EndAddr2_0053BBFF : Dword = $004F44CB;
: h( _& A2 r% D( ]' C9 q4 t4 I
      EndAddr3_0053BBFF : Dword = $004F4736;    //色彩彩赋值结束跳转1 d+ {4 z: E% `* f8 d' k
6 L$ }! ?4 r6 D4 R3 @+ e, U6 S
   CallAddr1_0053BBFF : Dword = $004611D4;
6 i8 [& C, m6 `2 ~" W
      CallAddr2_0053BBFF : Dword = $004611D4;* w/ z) u& N" J$ j* O, A$ L% I

# a. @" }: A! o" b3 s
    procedure proc_0053BBFF();
8 Z8 l6 D6 X/ u$ U7 H/ L! U
    asm# y1 |9 p1 y3 Y! R( c: C$ e
      cmp     eax, $10                        //与预先设定的 最大17比较
( ?: t, h, h6 ]4 a5 g& Z3 x8 z3 x
      JLE      @OldCor                        //小于就跳转到默认16种色彩赋值
8 N; Q4 O1 }6 h4 m; y
1 }. G" z8 s3 u( M
      cmp     eax, $10                        //比较是否等于16
+ D! N/ C* `( ^+ z0 ]6 L
      jnz     @Seventh                        //不等于就跳转到第17种色彩判断部分" e9 a( ~% q) v3 y: R. |& Y
) w2 |8 w: u4 G- C
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试
' j$ N( g0 z2 Y
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF4 u5 Y9 i4 l/ \
      mov     ax, $A$ Y! N3 W- H6 ^6 q# X+ N9 n- G5 q
      call    CallAddr1_0053BBFF ; O' G- T3 F) A' U3 v1 N: J
      mov     edx, dword ptr [ebp-$14]0 K* j' }) v) h: x, x
      mov     word ptr [edx+1], ax
: I$ s8 c; d! ^; W/ u( O) x# D
7 V: J* n; G  b2 N* S$ ]5 X
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试3 m" ^( U1 u* ]3 @
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF6 _/ S  x8 F2 f) K
      mov     ax, $10& a' l* B0 F- ^# r
      call    CallAddr2_0053BBFF 7 j7 q. S6 H9 `* C
      mov     edx, dword ptr [ebp-$14]4 i/ V1 v0 Q  X+ r, D% a
      mov     word ptr [edx+3], ax9 f6 ~, K  H9 x! I; ~% h/ F7 G
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs
8 n5 c  n2 x% [3 B2 D5 n& x! \

' k, @1 Q( h6 l1 t8 r8 A
    @Seventh:. }( J3 R' A. ^' X- J
      cmp     eax, $11                        //比较是否等于17 ( H6 D; E5 f/ E2 F3 K( M, z' g
      jnz     @out                            //不等于就跳转到默认部分& L. D" k+ }! F$ H, i* {
) M$ L5 k6 a; G4 M8 f* ^
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试
. {1 J  L4 s, h$ N+ m; x% T
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
# E- {" ]2 D. j6 P
      mov     ax, $A, c5 k/ @; `" F1 @
      call    CallAddr1_0053BBFF
2 O' H- ~& K+ k1 g
      mov     edx, dword ptr [ebp-$14]1 }7 c( Z, u5 m) j9 ~; n" X
      mov     word ptr [edx+1], ax5 j8 C# s4 Z3 M0 s8 Y; Q5 b0 I  t/ F

6 c+ X$ L( {  V& Q9 ^+ W( Z% S4 Q
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试* a3 L' ~6 n( l7 ^( v9 C" Z1 z
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
+ o4 E& N) |! L& S
      mov     ax, $10
6 z( B  H* N+ ?# D( D
      call    CallAddr2_0053BBFF 7 C6 @( s0 I' L  c7 J; T" M
      mov     edx, dword ptr [ebp-$14]
9 Q$ u" D2 q3 n9 V5 U$ l7 [
      mov     word ptr [edx+3], ax
" S" m) i; {* L4 f  t
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs! {$ n. V* t7 e
                                               //
6 t$ A2 c6 R# g$ E* |$ S
    @out: & r3 l1 a5 B9 G
      jmp     EndAddr1_0053BBFF               //这个是跳转到默认的点
5 V( w4 x$ V9 j6 d/ N  v, W* D
; M, d4 E0 |( v* B: i+ \; D
    @OldCor:
8 m! J1 |  y  B' ^6 ~5 V  q
      jmp     EndAddr2_0053BBFF               // 跳转到原来16种色彩赋值
. o# r, }! T* |4 N2 J- A, V
    end

. f) n+ p# ~6 O7 J8 A/ `




欢迎光临 三千论坛 (http://www.3000y.com.cn/) Powered by Discuz! X3.4