三千论坛

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

作者: 快要发癫啦    时间: 2023-1-5 09:45
标题: 初步了解tgs插件的写法(二)
本帖最后由 快要发癫啦 于 2023-1-6 09:35 编辑 ! P0 L4 h9 i. a# E8 E* z2 i& y* P
6 m7 f. ~, P2 [% P. N
上面部分已经初步了解色彩设定的方式, 这个时候为了增加我们自定义色彩显示, 就需要在
7 W3 }6 b0 M- m) `: U3 u% n

  ~2 t1 s# \! N5 T/ k& K4 C
    dll里面进行内存地址读写
; g9 m- h0 P0 s, T  p

0 }0 W. f  Q3 f5 ]5 C2 i3 P
    我是在
1 N. e+ u) D" r3 V' _
   
8 l' @, x0 s8 {6 ^* a4 l- R, `
    0053BBFF  |. /0F87 41020000     ja      0053BE46
' C: k4 z1 t  M# m/ W
% u. Q3 y1 i6 ?/ Q
    在这个地址进行拦截 在delphi里面 可能可以dll初始化时这样写
9 _9 j6 K4 u; y. z% G/ n. {2 v
2 h# D, E- n3 [+ e( l
    procedure InitDll();
0 w( N. ~. N+ Z( v
    var
3 X8 W* R) b$ I- |; j- d
      p: Dword;& }) F8 b3 r- T( n+ z. F0 n
    begin, s. o" s1 D  m
      p := $0053BBFF + 1;
2 `  L$ {- x  ~0 P0 l' E: u* S
      PDword(p)^ := Dword(@proc_0053BBFF);' H* O& M" C  M8 K
    end;
/ {& V; T' x+ R5 _
6 O# E, H. i4 _2 g+ O3 `9 b# `
    在自己的代码里面写一个色彩增加的函数判断比如
$ r+ j  F9 z% w- q7 N
* K, ~% g+ e$ g% T( d9 p
    delphi代码:
3 ?: Q9 s% v1 _3 d0 F

, t3 w5 f5 ~, d  {( x5 T
    var3 @$ T7 a+ K8 b% L* d) A
      EndAddr1_0053BBFF : Dword = $004F470C;& M% W/ W1 w- C, n# ?
      EndAddr2_0053BBFF : Dword = $004F44CB;
: h5 Y% D' {  K& `
      EndAddr3_0053BBFF : Dword = $004F4736;    //色彩彩赋值结束跳转
1 m2 M* V9 C2 [" E3 x+ q4 L

3 k4 O4 q2 ]0 a5 \
   CallAddr1_0053BBFF : Dword = $004611D4;
( W. d. @8 r4 Z2 Q; J
      CallAddr2_0053BBFF : Dword = $004611D4;0 K; i: d/ u$ ^& P/ _
; D  z% a, d" ?9 X
    procedure proc_0053BBFF();
+ N  U' ~3 F& O0 N
    asm
- X( _* ~9 U. J3 H: z$ A* b
      cmp     eax, $10                        //与预先设定的 最大17比较
& T* ~7 A5 w2 o2 C
      JLE      @OldCor                        //小于就跳转到默认16种色彩赋值, \8 g: X3 D7 A# k- B
% H/ L0 e- I1 f, K& y
      cmp     eax, $10                        //比较是否等于16 ; l# y+ r$ B- O# h0 C
      jnz     @Seventh                        //不等于就跳转到第17种色彩判断部分- I+ z/ F  V0 F- |
/ C5 s& |! Z+ n' W
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试
" M, o, E7 ^9 H; Q7 t/ h6 ]- u
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
8 W4 Y% t9 `+ d, S
      mov     ax, $A( E* `( l4 _' x& Q; K5 b
      call    CallAddr1_0053BBFF 4 f  P9 h6 O( |3 K2 h* U  T, s
      mov     edx, dword ptr [ebp-$14]& d) h4 n0 c) m  a8 w
      mov     word ptr [edx+1], ax
9 e- L* P0 f+ r! ]% I
" A/ R$ h9 I: B* b/ Y
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试
. @8 H' Q+ \& {& y7 C' F7 `
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF) u& F- N: D: J% z
      mov     ax, $10  H4 x( A# i* ^
      call    CallAddr2_0053BBFF
9 J# A; E/ H9 w$ n- p$ Z0 D' v
      mov     edx, dword ptr [ebp-$14]
; n* S2 s0 h% e# U& w! v5 [
      mov     word ptr [edx+3], ax2 |! L5 U: I$ R  U! o) I
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs
# U! ]0 r7 M6 G

: C: l2 b9 q* y& n
    @Seventh:
* ?& Y. d) ^' n0 C4 f" M) h6 X
      cmp     eax, $11                        //比较是否等于17
8 b0 g, N! n6 ^1 ~0 ^6 m
      jnz     @out                            //不等于就跳转到默认部分* E: a; Q& t6 M
, L6 P1 Z3 O* {+ M$ [; U$ E7 J& |
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试
3 ?$ J7 O. Z3 G  y* G
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF, f( u" N$ U, d/ b/ W
      mov     ax, $A: k% z  T! c) V
      call    CallAddr1_0053BBFF
5 D9 f$ G. Q) g6 M$ o
      mov     edx, dword ptr [ebp-$14]0 _/ D7 ]1 r6 J4 X  w( S
      mov     word ptr [edx+1], ax$ s! W  R+ b7 [6 I

) A6 u8 U. k$ }
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试$ _% _+ ~8 g: o  Y' \8 Z
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF& p% r, P5 I+ d1 b: b/ l8 S) T) H
      mov     ax, $108 w) p2 m  T* p" O
      call    CallAddr2_0053BBFF
3 C+ |; i8 N# ^  k% s4 j, m1 T
      mov     edx, dword ptr [ebp-$14]2 u8 V+ e6 S! L' X' l5 _
      mov     word ptr [edx+3], ax4 J! a! i  ^, t, _8 ~$ g# ^* H, \
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs
" Q+ ]2 P, b+ \/ W( C) l* ?0 r
                                               //
3 |4 h, Y8 D  A' j5 d: w1 _
    @out:
+ y! J) m9 G, W5 d, s1 r6 }$ s! j( {
      jmp     EndAddr1_0053BBFF               //这个是跳转到默认的点; {6 {, _$ B3 K0 E

7 k5 w* s9 Z8 _: u! _
    @OldCor:1 q( Q3 O! o. M3 S# V
      jmp     EndAddr2_0053BBFF               // 跳转到原来16种色彩赋值( {1 P: a0 n  J- v) i
    end

5 e. s3 P! K! u




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