三千论坛

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

作者: 快要发癫啦    时间: 2023-1-5 09:45
标题: 初步了解tgs插件的写法(二)
本帖最后由 快要发癫啦 于 2023-1-6 09:35 编辑
: @- a7 K2 z; }' ^0 p$ c8 d. ]* A$ Q0 q# `) x- \- m4 B0 Q+ B
上面部分已经初步了解色彩设定的方式, 这个时候为了增加我们自定义色彩显示, 就需要在
0 q) c9 h4 `" a2 a' y1 H  o# A$ i

; p6 m4 }* `2 F3 l* E
    dll里面进行内存地址读写2 v; `$ `* B0 h/ [; w
8 s" g9 P; V! ]0 S
    我是在
0 F0 l4 Y$ C5 S; a! G' F' s
   
4 u9 I1 b# H6 j! v" c/ U/ Q
    0053BBFF  |. /0F87 41020000     ja      0053BE462 ~$ \+ p. f0 M" u5 P& u

6 [2 ^& [% u0 _( A' N) E
    在这个地址进行拦截 在delphi里面 可能可以dll初始化时这样写
* w. @& j4 _+ f; z4 X, [9 g6 I
7 H& e9 k3 L( m  m; I6 @
    procedure InitDll();+ ~; U" i  N7 a3 \+ Z* m& l
    var8 J9 i# c* z; \  m1 }* M
      p: Dword;
4 \7 p) _( Y, D8 r# k8 ?  e+ ]. y
    begin2 M6 @8 N0 d4 t' h4 E+ }  P, ]
      p := $0053BBFF + 1;5 _% d# i0 v) B5 Y: p
      PDword(p)^ := Dword(@proc_0053BBFF);8 w+ Y; @/ R" |3 i  B" P$ `$ S% A& U
    end;2 p8 v" i. X! K# F* q0 T

& {& a# L" F9 V  D- q
    在自己的代码里面写一个色彩增加的函数判断比如
& W+ t. V4 O0 v1 z+ s$ n

, p5 ~; g2 o  n$ b2 h+ n8 ~
    delphi代码:
+ d9 M9 R3 e' p( p$ A' G% a4 ?; B) {
6 ^( k4 [8 B6 _# @! d* A
    var3 L* Z# l1 i; ?! ^5 `7 R, y7 |" W5 e
      EndAddr1_0053BBFF : Dword = $004F470C;" o- }9 l$ e1 E5 ]- V, ^
      EndAddr2_0053BBFF : Dword = $004F44CB;) ~5 ~' _- L* M
      EndAddr3_0053BBFF : Dword = $004F4736;    //色彩彩赋值结束跳转
$ a7 N& H; I/ ^4 t6 y& M! `( @$ m7 J
) h2 f3 g3 S* G5 e
   CallAddr1_0053BBFF : Dword = $004611D4;* H1 J" h* p8 }4 `/ @
      CallAddr2_0053BBFF : Dword = $004611D4;
% A* ?# d: e0 d4 \9 H5 a4 w
. H% [: U, B7 m8 M% f
    procedure proc_0053BBFF();" d( k& f5 X, |; m. r
    asm/ j" p+ r3 e; o# b9 @/ e7 t# k
      cmp     eax, $10                        //与预先设定的 最大17比较
* t. {/ `$ v4 ^; {5 W; k
      JLE      @OldCor                        //小于就跳转到默认16种色彩赋值. f. s" \' O5 B/ F7 i, m6 `6 U7 O

* }9 _( C  |% ]+ p( N2 D7 |5 O" [
      cmp     eax, $10                        //比较是否等于16
& d9 O) B1 U' W& k- O- ?( t3 Z
      jnz     @Seventh                        //不等于就跳转到第17种色彩判断部分
! L' E2 E5 ~  g* q" M

! L, _" j8 D6 u; I7 j% U
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试9 w  |. U6 @5 }) w2 g
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF0 F' ?: z! A5 s& a2 E% p3 o7 C* b
      mov     ax, $A1 |& x% [1 c0 [3 z- ?
      call    CallAddr1_0053BBFF 1 T+ `+ m( h: }) \
      mov     edx, dword ptr [ebp-$14]8 H2 R& [5 V0 c7 N4 s4 `- J# P+ u6 N
      mov     word ptr [edx+1], ax' R9 M) J4 e2 Z9 t! s3 H2 \" t

" {3 o; K4 B+ p% V0 e, ?
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试6 v7 ^2 j) V! s- n
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF! H. n* W3 s  H) {$ u
      mov     ax, $10
$ u% t  M% b, U& ]+ t7 d& h5 D
      call    CallAddr2_0053BBFF
1 f: a5 W7 f& K
      mov     edx, dword ptr [ebp-$14]
. V4 a+ J- ~" H8 ?# {# U, C
      mov     word ptr [edx+3], ax
3 o9 k% {! n$ I; D' F
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs& A4 Y! J6 ?, I: M1 M
+ s" s! n$ H/ ?! Y5 o
    @Seventh:
+ F7 v& c+ S% A  u9 ?
      cmp     eax, $11                        //比较是否等于17 $ N: W/ D! R3 x
      jnz     @out                            //不等于就跳转到默认部分* ?; H  k8 h. e1 d

6 P  h8 c1 K7 O/ f& ?
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试* a) [. b5 j% l0 l
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF  G. v% b, K5 ~, ]
      mov     ax, $A
4 i/ d$ t; |+ `' O  a$ K; Y
      call    CallAddr1_0053BBFF
' p" f' }. J' w# Q
      mov     edx, dword ptr [ebp-$14]7 l1 l$ F& e$ d0 v+ u
      mov     word ptr [edx+1], ax
. R& A5 f5 [; Q9 x- B/ T

* p/ Z1 G1 z/ u8 P, P
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试' u" ]# ~9 O8 i* x8 A  T
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
0 q6 e7 p" t% }+ j& c
      mov     ax, $10
2 U8 o/ D1 h7 u, y# u3 h% W/ v. E
      call    CallAddr2_0053BBFF
7 a& U3 y: K6 j- _! J0 n1 n
      mov     edx, dword ptr [ebp-$14]: h! Y( I' p/ i+ W, ^' P9 }
      mov     word ptr [edx+3], ax
1 ^$ t$ c4 P+ t7 ]) W' i# R
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs
* H! p% E. _  K
                                               //8 ]8 _% {) C; K; ~- h1 [7 ~: Q
    @out:
5 U. A$ \& B4 i$ _
      jmp     EndAddr1_0053BBFF               //这个是跳转到默认的点
# ]( d4 o4 ~" q# M% e& i0 B3 ]

) K: O/ v, p9 E
    @OldCor:& o1 ^/ c! o* N* G
      jmp     EndAddr2_0053BBFF               // 跳转到原来16种色彩赋值+ p( K; w$ F0 H4 N+ z/ [7 [, z
    end
1 F% G; d+ {# ~( g2 W. m9 z0 _





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