三千论坛

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

作者: 快要发癫啦    时间: 2023-1-5 09:45
标题: 初步了解tgs插件的写法(二)
本帖最后由 快要发癫啦 于 2023-1-6 09:35 编辑
" E3 Q* V# g, h- G- _$ K1 b% |# Y8 O7 d9 y0 }( ^
上面部分已经初步了解色彩设定的方式, 这个时候为了增加我们自定义色彩显示, 就需要在
; [- ~2 d  r$ ]
( p& C# M! |$ G2 f: |
    dll里面进行内存地址读写" u& ~9 q: @, G& ?1 J$ O4 E9 i& `

7 r) L# W, M9 O
    我是在 # F- U/ @7 _4 O; x
    9 J6 b5 z: t. r
    0053BBFF  |. /0F87 41020000     ja      0053BE460 ?) a7 x; o/ a' t$ y7 Y
/ a' k& q5 @  ]; h( N+ `6 Y
    在这个地址进行拦截 在delphi里面 可能可以dll初始化时这样写
/ G+ w- f8 d3 A
( q% V# ~8 T9 a  j% ]# _
    procedure InitDll();& f) B3 U8 P4 k  q
    var
5 F! _2 `8 c8 H( q$ T: A
      p: Dword;8 Y) O: J' B: J0 q0 v. ?
    begin3 N  j, A/ m9 t0 k5 e3 F$ j
      p := $0053BBFF + 1;
( r. ^' s/ c: K; {% ]/ ~
      PDword(p)^ := Dword(@proc_0053BBFF);
, \: q9 I" ^8 ?+ F3 J
    end;9 O+ t- u+ O% X2 [+ d+ I4 @# d

: w" W( w2 U! }" v1 K
    在自己的代码里面写一个色彩增加的函数判断比如
7 K4 b* t& J% V1 Z2 h

) m  l5 b, ~2 G& ]4 Z% k
    delphi代码:
# f: C+ d. L! h* g! n  V. \
4 e: q  R1 D. m" F2 @7 ?4 ]# t
    var9 m  K3 }* U+ E- o% a8 z4 J
      EndAddr1_0053BBFF : Dword = $004F470C;/ ?/ i/ m) [& u" }
      EndAddr2_0053BBFF : Dword = $004F44CB;
2 ?# q# i, u1 K7 v2 ]. D
      EndAddr3_0053BBFF : Dword = $004F4736;    //色彩彩赋值结束跳转
+ m) [: m. w1 j0 G' Z% O9 x3 }  r

; C5 ^, ^4 h, v$ @5 I. m+ u1 A
   CallAddr1_0053BBFF : Dword = $004611D4;
. o; f5 J! H' h+ k* M
      CallAddr2_0053BBFF : Dword = $004611D4;* a& p6 e- j$ e, P4 i* v% t# z0 |
6 ^% q. b+ |2 n% L# u% M' w! k
    procedure proc_0053BBFF();' C& q  \- J; k' \8 v+ C& x' s* ~
    asm
' s# g& ?4 ~0 F' @: u- @
      cmp     eax, $10                        //与预先设定的 最大17比较* r/ b) ~6 [5 d! h) O& c
      JLE      @OldCor                        //小于就跳转到默认16种色彩赋值
/ j% {$ [" t, S! D  o; j( j

: ^0 k! P3 ]! b& L7 v
      cmp     eax, $10                        //比较是否等于16
- N- Q$ p2 m/ V( T( N, B5 ]& \
      jnz     @Seventh                        //不等于就跳转到第17种色彩判断部分
$ H0 t& v( |+ S; a  q9 E

# L( w0 h+ n& p! R' W- k
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试  n. w. g/ A- V, |! U+ o! F
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF9 b6 l( |/ a) {) i# P9 g2 [. v( ~6 [
      mov     ax, $A) d- q/ F$ ?$ A9 z9 e* z$ i' v
      call    CallAddr1_0053BBFF
  ~( U# h+ X& {& U' }# }. p, J& b1 U& a
      mov     edx, dword ptr [ebp-$14]& h4 {/ i! l) \8 E! X2 O; M  S; I. I
      mov     word ptr [edx+1], ax9 z1 Y8 N9 }) x

7 _5 l, ]/ o$ W+ E$ s1 `0 A* I
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试* e9 Z; a. B7 u* x& m$ V
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF) s* w+ r* V2 @7 j
      mov     ax, $108 Z" i2 T. V& s+ [  \0 ^3 l
      call    CallAddr2_0053BBFF
1 U$ ~0 P+ T( b8 @, t  W
      mov     edx, dword ptr [ebp-$14]8 L5 v0 B7 _+ w
      mov     word ptr [edx+3], ax
; l5 \! D0 W, L5 s" S! G! F8 X
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs4 Y3 j) _1 u# f  ~

/ U( |4 ^5 \! x3 T- F9 T
    @Seventh:
; ]9 r0 ^' J/ l1 u
      cmp     eax, $11                        //比较是否等于17 , F! C# P8 p1 I3 P) ~, [/ W2 S
      jnz     @out                            //不等于就跳转到默认部分
" h3 ?' s2 S. I2 Q

; L9 U) F5 G5 b" q" O  C
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试
- t+ U( s) q0 T) m$ m; R
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF, i, k& r! P$ f# F; |3 |2 ^
      mov     ax, $A
0 V" o* l4 r/ {+ b5 d
      call    CallAddr1_0053BBFF / R8 w9 `+ J( J: ?# E/ k
      mov     edx, dword ptr [ebp-$14]) E: o# l5 U% y& V( F
      mov     word ptr [edx+1], ax0 Q+ b& L+ V  `) C4 k  V0 Q/ M

0 U' H. [( f9 I- i3 c1 Y) p$ k
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试* O6 k. E' k, ~% {# r. s
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF" ?( [7 r  s$ P$ E$ ~# Y+ C' \$ a
      mov     ax, $10
% f; p/ P( a% t& m
      call    CallAddr2_0053BBFF . |5 V1 w) p. l# r1 X4 O
      mov     edx, dword ptr [ebp-$14]8 ~! b4 m) e3 V/ B
      mov     word ptr [edx+3], ax
! O, l- k! Y" I  E1 d! G  h
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs: b! P) }& _' s( F. z
                                               //  b( O# C- U1 D9 u
    @out:
7 w: `+ u  b1 h0 p
      jmp     EndAddr1_0053BBFF               //这个是跳转到默认的点& E/ Y/ Z: s2 b& c
3 e2 E1 D& v& j' h5 ], I0 n
    @OldCor:3 E8 v5 P4 G9 j+ Y5 i! `! g2 M
      jmp     EndAddr2_0053BBFF               // 跳转到原来16种色彩赋值
0 ?4 ^% z& j! r; w! J) D& D. H  y4 g
    end

3 a6 E+ @9 Y' m# w% d# D4 y8 k- h




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