三千论坛

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

作者: 快要发癫啦    时间: 2023-1-5 09:45
标题: 初步了解tgs插件的写法(二)
本帖最后由 快要发癫啦 于 2023-1-6 09:35 编辑
. h6 `7 s4 {: O* s: C8 O5 t' u! W$ ]* h- L: g# z
上面部分已经初步了解色彩设定的方式, 这个时候为了增加我们自定义色彩显示, 就需要在
+ y  G/ R$ l1 q( ]1 u, R2 n! Z
/ B; q& V; L. a1 h, J( p
    dll里面进行内存地址读写* `  k3 V1 I2 z' `& \0 l3 m

) h, l% ~5 A. t! t0 ~) S% r3 c
    我是在
+ A0 C- ?, p% ~3 ~$ o* g
    ; Y$ z' S- v1 D( V3 u  F  x5 b) q
    0053BBFF  |. /0F87 41020000     ja      0053BE46
9 g2 G7 W8 L' S) A& w
& |& L1 @0 o+ O& j
    在这个地址进行拦截 在delphi里面 可能可以dll初始化时这样写
# O- W" @! K1 c
6 Z6 U1 K2 F/ r' Q2 ~& d' a& f
    procedure InitDll();
! d$ v6 d7 T, Q5 u. K( i. e3 m
    var+ Q* W3 J4 y0 Y# M5 t8 e9 Y
      p: Dword;6 D3 o  s/ `8 f  w
    begin
$ Y. |, t  }7 ~" Q
      p := $0053BBFF + 1;
$ V+ e) m# Y& ]' Q9 T
      PDword(p)^ := Dword(@proc_0053BBFF);* A- c8 l; E7 w) T5 D% g, F% L
    end;! Q; ]! r4 {5 D: k. f2 |

; V2 ]% x- W1 k. |
    在自己的代码里面写一个色彩增加的函数判断比如
3 C  [3 e8 r3 i. ]7 A3 ^+ V

9 e3 I, O) |4 j( D/ O- o
    delphi代码:
# ~. r' g  W9 C" m1 ?* n1 N
" V7 u4 L( D; V- l
    var) f6 ?4 y! A: x% @
      EndAddr1_0053BBFF : Dword = $004F470C;
6 ^# w2 L+ [9 `, ]
      EndAddr2_0053BBFF : Dword = $004F44CB;
  w% v2 B5 `3 J. F" l
      EndAddr3_0053BBFF : Dword = $004F4736;    //色彩彩赋值结束跳转" G3 f% J5 B; w) f- a# G6 n
7 G4 u  A; i. M9 o  S9 N
   CallAddr1_0053BBFF : Dword = $004611D4;0 a# [" A" |/ B: e7 {- e
      CallAddr2_0053BBFF : Dword = $004611D4;
8 c  l( r6 {8 A+ Z: m
6 k4 M" T. A9 j# d
    procedure proc_0053BBFF();
# ]1 ]$ ^$ p* c
    asm
7 i# w! K# }; _( l; X" P' e1 G
      cmp     eax, $10                        //与预先设定的 最大17比较
. V( H" u% o0 n( \+ E- K
      JLE      @OldCor                        //小于就跳转到默认16种色彩赋值
$ i8 u* p$ G& x& k# ~
4 x) |( z7 ?  E6 r. {& T' \, a
      cmp     eax, $10                        //比较是否等于16 * X0 w- f& x3 [' U9 P$ k
      jnz     @Seventh                        //不等于就跳转到第17种色彩判断部分$ w: D3 ^/ w6 |3 W; Y" P" J) c1 T
$ x* K0 s, d) V
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试
, J5 }) P. h8 h/ `1 z  {* r. ]
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
: u& c8 F* l. V# O' c
      mov     ax, $A
# W# X9 R0 F9 N9 X! S
      call    CallAddr1_0053BBFF
- L) Y8 D4 l: x# w
      mov     edx, dword ptr [ebp-$14]
, ?6 v( \2 w) K0 F
      mov     word ptr [edx+1], ax- u' f  d1 w3 i' g6 B
% s. q0 m6 W; Y! z' L
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试+ m( V4 x0 g3 K) K8 ?
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
+ |2 C$ t5 B" T; [- W
      mov     ax, $10
4 \% J, ^5 G( C( ^
      call    CallAddr2_0053BBFF . t* d' ]/ ~, X/ w& M
      mov     edx, dword ptr [ebp-$14]0 r3 N6 D) ^( F' _. K: v" {
      mov     word ptr [edx+3], ax
4 g' A& B0 D9 J0 R" D
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs
5 G3 @! l6 H8 e+ |4 ]# t. x( b

# k6 N$ R" v7 y" x7 D5 C& ?. |, U
    @Seventh:
" {6 p9 A" i0 Y: e% e* t
      cmp     eax, $11                        //比较是否等于17
8 Y; [+ v" \+ w% {- a& ^2 }
      jnz     @out                            //不等于就跳转到默认部分
) W$ b5 ]& Q) {, e& M
4 |3 d9 R. x  W" @% w; W
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试6 F  \; P2 V3 P  v
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF( h; P% g0 K( _( A- \1 F) i
      mov     ax, $A9 T; L& P+ p. a0 E# s( n3 E
      call    CallAddr1_0053BBFF / f8 }/ V6 {0 O" [! p. u' _7 i
      mov     edx, dword ptr [ebp-$14]
: @- [6 b* k0 p! E+ E8 X; `
      mov     word ptr [edx+1], ax
. D6 ]# u: c2 u" S/ w  w3 v3 d
( k7 P1 I2 Z8 y0 t
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试$ J$ S6 Y6 D; n& k  S3 ]  q
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF' X0 i: H, s) H( ?
      mov     ax, $10
& P3 R( i% e( ~: \* @  r
      call    CallAddr2_0053BBFF
  {3 \3 r( u# n2 L7 w
      mov     edx, dword ptr [ebp-$14]. R( f8 P9 Q! R9 d8 q/ `( n8 O; [  M% C
      mov     word ptr [edx+3], ax
. U+ F$ {3 ^/ ]* c3 I1 \4 i
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs/ M" D  x3 j7 N  ^
                                               //
$ C& K' L( y" z. x& Z
    @out: - Y+ Z7 U( p  p3 K, s2 U' M) d
      jmp     EndAddr1_0053BBFF               //这个是跳转到默认的点3 C9 f0 W1 e8 p' c0 ^9 v  D

! P: z0 L) u( c2 ^4 L' p) w3 E
    @OldCor:
' _* x: t8 b( t1 z. x7 j. V
      jmp     EndAddr2_0053BBFF               // 跳转到原来16种色彩赋值4 A9 I. m2 `- \$ J/ p6 V# V
    end
/ H" m: s* T& U$ n





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