三千论坛

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

作者: 快要发癫啦    时间: 2023-1-5 09:45
标题: 初步了解tgs插件的写法(二)
本帖最后由 快要发癫啦 于 2023-1-6 09:35 编辑
, [6 n4 h; ?6 u: E1 U: n+ q6 _, e1 i# a: r5 j7 i4 v7 p
上面部分已经初步了解色彩设定的方式, 这个时候为了增加我们自定义色彩显示, 就需要在0 i) h0 b. l) s" @5 _

8 i/ V& m7 h7 n+ P' Y! j8 P& Y9 |
    dll里面进行内存地址读写) ^+ o( |4 ]1 H; B% S" v& F, L7 G

6 w8 J/ S1 q! N8 R" V0 n
    我是在 5 ?, L2 j) o0 v5 t% j% }* i2 V
   
* R# \, ]! `& i1 W
    0053BBFF  |. /0F87 41020000     ja      0053BE46; f/ Q2 w! m# K5 ^- \

; |: j$ Y) E. s7 n' }  C0 }
    在这个地址进行拦截 在delphi里面 可能可以dll初始化时这样写( K8 ?9 e  t! ?9 Y* D
3 K% R5 E& I2 g. Q2 D8 X; b; P
    procedure InitDll();8 T0 B' _9 b* t2 P7 ~2 o" m: O
    var
  ?( J5 J8 p8 |' Y
      p: Dword;9 C1 i  J: q8 I0 E9 @. Y
    begin4 [! a$ x- f  K, w3 [0 q4 S
      p := $0053BBFF + 1;
; |' K6 z/ X& E# a4 ?4 ]/ t! Q
      PDword(p)^ := Dword(@proc_0053BBFF);' T# m. d  _: Q& ^6 c, _3 C5 x1 i
    end;2 `2 X& }3 d- y2 t( h

2 w: G* x! N& ~8 q5 ]9 }# o
    在自己的代码里面写一个色彩增加的函数判断比如
& [" b: A" x4 R: U
; g; h& r: C) b4 M) L% X- S
    delphi代码:0 N: f* A& X! C

2 x. ^! k+ ]. @# C4 o
    var
2 m: ?+ A' R' f- K
      EndAddr1_0053BBFF : Dword = $004F470C;
5 Q6 w) u( A& }  S
      EndAddr2_0053BBFF : Dword = $004F44CB;
9 f1 G# Z; {1 X8 ?! K9 A& K( K
      EndAddr3_0053BBFF : Dword = $004F4736;    //色彩彩赋值结束跳转- J" \; t1 J' Y" _- x% P
7 c) S# U- L! j/ _7 E
   CallAddr1_0053BBFF : Dword = $004611D4;" K& g2 t! J( F! |6 X/ O: |! e8 g
      CallAddr2_0053BBFF : Dword = $004611D4;% y. p' [6 T# e! h! c2 d4 }( D  B
% F7 ?' ]4 Q4 R( ?% j# r
    procedure proc_0053BBFF();
8 f( Z3 _$ K9 c) e5 e0 V5 C# A
    asm9 |* A9 N) [6 [- S4 \
      cmp     eax, $10                        //与预先设定的 最大17比较
3 G8 J& P8 A) Y2 }  V6 @
      JLE      @OldCor                        //小于就跳转到默认16种色彩赋值
2 h! r1 g; D% x& G
( d  y6 o7 T7 ?) a1 i8 q& ?& ^
      cmp     eax, $10                        //比较是否等于16
* k! s& X5 \* O6 G' q# B* w2 h/ b
      jnz     @Seventh                        //不等于就跳转到第17种色彩判断部分
$ B8 H9 B6 y& J5 O5 j; t

- B) L& h7 |5 ?0 B# u
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试
( k. u2 y$ \# {0 Z9 M
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
" v6 ]0 j" G9 N$ A( I7 U$ ?' @
      mov     ax, $A2 T# [* I9 l$ C5 Z8 ]2 Z) e
      call    CallAddr1_0053BBFF
1 h' [( @* Z$ O# k  p( t
      mov     edx, dword ptr [ebp-$14]( C) s1 i. h' G
      mov     word ptr [edx+1], ax5 ~" _: T% K; ]* G& M! n+ a

( F0 L7 S+ Q' n1 {. Y/ W
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试% e  L' w* N2 x- a# `& D
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
6 l, m+ d9 M- a8 G! @1 @( u) m2 s
      mov     ax, $10) I: Z2 P& ~. E& C+ z6 a
      call    CallAddr2_0053BBFF
  Q. l% D7 q% q; j" S, T
      mov     edx, dword ptr [ebp-$14]
- B: V; R* @# `3 M
      mov     word ptr [edx+3], ax
1 Q8 x8 N$ L/ q3 X. d. N  P
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs
' N. z. S4 l8 C' B2 y% H2 g

7 S- i; ~3 G* A& A* ^
    @Seventh:
8 m4 r2 M. p2 Z2 k
      cmp     eax, $11                        //比较是否等于17
' A% g+ S  B3 h$ o
      jnz     @out                            //不等于就跳转到默认部分
3 c% S2 Y9 m+ |

$ M9 b$ O6 b0 E% ~4 S: e
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试
* }+ y2 f3 B5 ~5 t3 x
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF0 G+ W* n) S0 y
      mov     ax, $A  x0 z- n( g3 s# T+ E6 U2 [
      call    CallAddr1_0053BBFF 0 x/ A# L+ G: L/ b2 F
      mov     edx, dword ptr [ebp-$14]" f. k" x, \& f% V6 V  e
      mov     word ptr [edx+1], ax
* K. `/ M9 I( P( M6 C

! _6 G& C0 ~, i
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试3 e3 o# z) C* H
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
/ F& u+ F+ h9 s$ b* l
      mov     ax, $10$ L& L, v  o  [
      call    CallAddr2_0053BBFF
# E# N6 H4 n/ u8 G7 o
      mov     edx, dword ptr [ebp-$14]
8 M3 U) u2 B8 C9 K2 R
      mov     word ptr [edx+3], ax4 b# F" S$ p( B9 ~$ F3 w
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs% N, U$ F5 t2 u" X  Q3 |( R: d
                                               //8 [6 H% p8 |. H2 Z3 {6 B+ ~
    @out: 7 l1 E4 ?% p; M' d4 b6 q  y& G
      jmp     EndAddr1_0053BBFF               //这个是跳转到默认的点' ?: G( V  u! u) H/ Z

3 w0 `5 U: d. n2 L: s
    @OldCor:' V- h9 n7 I5 \2 d7 L% V
      jmp     EndAddr2_0053BBFF               // 跳转到原来16种色彩赋值
2 g% N: G$ M! q+ `. ^9 ?% T
    end
1 k( c: m$ i& S





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