三千论坛

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

作者: 快要发癫啦    时间: 2023-1-5 09:45
标题: 初步了解tgs插件的写法(二)
本帖最后由 快要发癫啦 于 2023-1-6 09:35 编辑
  I) B  P5 ]4 `- B* v5 Q# g( N8 T( G9 Z" {& v
上面部分已经初步了解色彩设定的方式, 这个时候为了增加我们自定义色彩显示, 就需要在' U+ Q& k6 G+ P$ J! I# v
8 |1 ]" G% U8 j; r$ S+ B+ o( ~( k& p
    dll里面进行内存地址读写; J. O8 m2 M7 U7 n, i; ^
1 M- g- q$ G! u9 z9 S+ E7 l# n
    我是在
7 f" O) L0 m! L
   
1 K- G5 p; D: {, c( X
    0053BBFF  |. /0F87 41020000     ja      0053BE46
1 D$ J" U8 X' ]) d. I
; n( e% F4 a2 J- @" W  G
    在这个地址进行拦截 在delphi里面 可能可以dll初始化时这样写" ?, `8 f3 y8 Q/ c

5 b! }; ^! E! \# w' R% L! b* y
    procedure InitDll();
! U8 c3 n1 @+ }" N2 c
    var
4 t3 l, e$ g& I5 Y9 T9 w
      p: Dword;
' ~2 p6 Q. w( ^: R+ ~, @  K1 x
    begin
+ P* D2 d$ f" T9 ]/ ~0 E. |
      p := $0053BBFF + 1;) @0 p; P  u. f! j
      PDword(p)^ := Dword(@proc_0053BBFF);- N# T+ s+ }9 s8 t7 n; a
    end;" `8 P. v4 L3 z5 a7 q4 O
7 H/ e% ?3 h9 G  \. V9 e* m8 s
    在自己的代码里面写一个色彩增加的函数判断比如/ u4 h- v$ h% A5 h0 ~
! z& z7 _& k! L
    delphi代码:+ s8 h! q; O  U4 j2 X
" ~+ {# Y' Q  O  Z/ @' G; T
    var
2 ^: I' M2 `$ O
      EndAddr1_0053BBFF : Dword = $004F470C;. G* O/ P# j. s6 S$ J. o) V
      EndAddr2_0053BBFF : Dword = $004F44CB;
1 w, Y; w% {3 d& @- \
      EndAddr3_0053BBFF : Dword = $004F4736;    //色彩彩赋值结束跳转
1 k' |1 T; q6 k0 n$ X( }6 a
5 e: D* R; i8 h9 [" E. {3 K
   CallAddr1_0053BBFF : Dword = $004611D4;- l3 i5 S- Y4 Q; K5 P  U  x
      CallAddr2_0053BBFF : Dword = $004611D4;
' q8 e/ o- a" ]. e- ]
. s6 G4 O: G' l0 _( `% `" b3 q& T
    procedure proc_0053BBFF();
7 ^, w" G. @! o4 K
    asm
: f# k  Q8 C8 o  [3 F
      cmp     eax, $10                        //与预先设定的 最大17比较2 R: |! G+ I+ c* B9 M8 B/ o, q
      JLE      @OldCor                        //小于就跳转到默认16种色彩赋值' x5 y; F2 Z% T1 r" f7 a

4 k- E/ @) X7 t
      cmp     eax, $10                        //比较是否等于16 + \1 f5 {# G3 \* D" q+ ]
      jnz     @Seventh                        //不等于就跳转到第17种色彩判断部分& x+ q8 F! y# g

3 G, T7 E" V# z$ ^
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试" P% Y# S# x) |8 [; g
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF( ~, a; P; j6 d0 ]5 ~: I! X/ l
      mov     ax, $A
. v' I& k: ~1 I
      call    CallAddr1_0053BBFF
) D+ }+ {9 \( b2 ~3 V( g
      mov     edx, dword ptr [ebp-$14]1 j" z1 Y+ T4 ]1 k4 w
      mov     word ptr [edx+1], ax5 F2 Q3 t* a) b5 s: w) C9 `
0 ]. a, d; l+ }# h8 P% }
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试
1 p$ O/ E/ x5 r' A3 q2 @) j
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF% X+ Y! D  M( @/ U& v9 ^5 F
      mov     ax, $10* R/ k6 }. e; H8 g: `/ I+ ?
      call    CallAddr2_0053BBFF
# q) J  x+ C4 M  X7 r
      mov     edx, dword ptr [ebp-$14]
5 Y8 W; t( L: O
      mov     word ptr [edx+3], ax
% y0 p/ A/ I% ?6 Y1 Q
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs
9 h$ `" [/ ^+ d! Q1 b' G
" `$ K' f. K# I
    @Seventh:
6 y. ?6 N4 h3 ?3 L1 Q
      cmp     eax, $11                        //比较是否等于17
/ Q; ?/ o: S  }6 r# y- a2 X
      jnz     @out                            //不等于就跳转到默认部分! r0 o! m9 `* T1 b

$ o; m2 T/ `' z# f' z: [
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试
9 A3 v$ z# p+ L2 L6 a9 `
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF. F- Q8 E$ h) n% Q, L
      mov     ax, $A
. J/ k! t* [( R4 ~+ e% `6 K
      call    CallAddr1_0053BBFF
) ]3 g+ L; k# A% q! x4 \0 D6 L
      mov     edx, dword ptr [ebp-$14]
# r: O. \$ E1 j) ^- m( d
      mov     word ptr [edx+1], ax" z& |1 j! ^* I8 X) P7 W" }
7 f+ L6 e, t' g) q1 @
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试
+ I( r7 ~; B7 U8 f( |' [  L* c& Q
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF# K" F& _5 h& v7 @8 O+ n( j
      mov     ax, $10
/ g7 J6 k8 M- T7 W
      call    CallAddr2_0053BBFF
! f9 J8 c3 E% a7 ^6 P' J7 P
      mov     edx, dword ptr [ebp-$14]
6 }/ s" s  c- }# _7 x9 B, S
      mov     word ptr [edx+3], ax
7 D  S) R1 E2 q( `
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs; q% }/ s; A& C9 Y( ]
                                               //% i5 U" E# i  F! Y5 ], T+ ]
    @out: 0 `! I6 U8 D' e! z. w6 _
      jmp     EndAddr1_0053BBFF               //这个是跳转到默认的点! x+ ~' k- y5 P- ~7 }. S: Y& S
2 r/ |. B. @2 {6 h+ l" t
    @OldCor:
4 q9 i' I( O( v9 B. J% b4 C
      jmp     EndAddr2_0053BBFF               // 跳转到原来16种色彩赋值
# |# C: u. _: r/ i8 u
    end
! q) V& ?/ T. B* T! {





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