三千论坛
标题: 初步了解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 v2 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 |