三千论坛
标题: 初步了解tgs插件的写法(二) [打印本页]
作者: 快要发癫啦 时间: 2023-1-5 09:45
标题: 初步了解tgs插件的写法(二)
本帖最后由 快要发癫啦 于 2023-1-6 09:35 编辑
: @- a7 K2 z; }' ^0 p$ c8 d. ]* A$ Q0 q# `) x- \- m4 B0 Q+ B
上面部分已经初步了解色彩设定的方式, 这个时候为了增加我们自定义色彩显示, 就需要在
0 q) c9 h4 `" a2 a' y1 H o# A$ i
; p6 m4 }* `2 F3 l* E dll里面进行内存地址读写2 v; `$ `* B0 h/ [; w
8 s" g9 P; V! ]0 S
我是在
0 F0 l4 Y$ C5 S; a! G' F' s
4 u9 I1 b# H6 j! v" c/ U/ Q 0053BBFF |. /0F87 41020000 ja 0053BE462 ~$ \+ p. f0 M" u5 P& u
6 [2 ^& [% u0 _( A' N) E 在这个地址进行拦截 在delphi里面 可能可以dll初始化时这样写
* w. @& j4 _+ f; z4 X, [9 g6 I7 H& e9 k3 L( m m; I6 @
procedure InitDll();+ ~; U" i N7 a3 \+ Z* m& l
var8 J9 i# c* z; \ m1 }* M
p: Dword;
4 \7 p) _( Y, D8 r# k8 ? e+ ]. y begin2 M6 @8 N0 d4 t' h4 E+ } P, ]
p := $0053BBFF + 1;5 _% d# i0 v) B5 Y: p
PDword(p)^ := Dword(@proc_0053BBFF);8 w+ Y; @/ R" |3 i B" P$ `$ S% A& U
end;2 p8 v" i. X! K# F* q0 T
& {& a# L" F9 V D- q 在自己的代码里面写一个色彩增加的函数判断比如
& W+ t. V4 O0 v1 z+ s$ n
, p5 ~; g2 o n$ b2 h+ n8 ~ delphi代码:
+ d9 M9 R3 e' p( p$ A' G% a4 ?; B) {6 ^( k4 [8 B6 _# @! d* A
var3 L* Z# l1 i; ?! ^5 `7 R, y7 |" W5 e
EndAddr1_0053BBFF : Dword = $004F470C;" o- }9 l$ e1 E5 ]- V, ^
EndAddr2_0053BBFF : Dword = $004F44CB;) ~5 ~' _- L* M
EndAddr3_0053BBFF : Dword = $004F4736; //色彩彩赋值结束跳转
$ a7 N& H; I/ ^4 t6 y& M! `( @$ m7 J) h2 f3 g3 S* G5 e
CallAddr1_0053BBFF : Dword = $004611D4;* H1 J" h* p8 }4 `/ @
CallAddr2_0053BBFF : Dword = $004611D4;
% A* ?# d: e0 d4 \9 H5 a4 w. H% [: U, B7 m8 M% f
procedure proc_0053BBFF();" d( k& f5 X, |; m. r
asm/ j" p+ r3 e; o# b9 @/ e7 t# k
cmp eax, $10 //与预先设定的 最大17比较
* t. {/ `$ v4 ^; {5 W; k JLE @OldCor //小于就跳转到默认16种色彩赋值. f. s" \' O5 B/ F7 i, m6 `6 U7 O
* }9 _( C |% ]+ p( N2 D7 |5 O" [ cmp eax, $10 //比较是否等于16
& d9 O) B1 U' W& k- O- ?( t3 Z jnz @Seventh //不等于就跳转到第17种色彩判断部分
! L' E2 E5 ~ g* q" M
! L, _" j8 D6 u; I7 j% U mov cx, $A //字色或背景色? 没有去详细了解请自己测试9 w |. U6 @5 }) w2 g
mov dx, $A // 可以通过修改赋值给ax, cx, dx的值 不超过$FF0 F' ?: z! A5 s& a2 E% p3 o7 C* b
mov ax, $A1 |& x% [1 c0 [3 z- ?
call CallAddr1_0053BBFF 1 T+ `+ m( h: }) \
mov edx, dword ptr [ebp-$14]8 H2 R& [5 V0 c7 N4 s4 `- J# P+ u6 N
mov word ptr [edx+1], ax' R9 M) J4 e2 Z9 t! s3 H2 \" t
" {3 o; K4 B+ p% V0 e, ? mov cx, $10 //字色或背景色? 没有去详细了解请自己测试6 v7 ^2 j) V! s- n
mov dx, $10 // 可以通过修改赋值给ax, cx, dx的值 不超过$FF! H. n* W3 s H) {$ u
mov ax, $10
$ u% t M% b, U& ]+ t7 d& h5 D call CallAddr2_0053BBFF
1 f: a5 W7 f& K mov edx, dword ptr [ebp-$14]
. V4 a+ J- ~" H8 ?# {# U, C mov word ptr [edx+3], ax
3 o9 k% {! n$ I; D' F jmp EndAddr3_0053BBFF //色彩赋值结束跳转到tgs& A4 Y! J6 ?, I: M1 M
+ s" s! n$ H/ ?! Y5 o
@Seventh:
+ F7 v& c+ S% A u9 ? cmp eax, $11 //比较是否等于17 $ N: W/ D! R3 x
jnz @out //不等于就跳转到默认部分* ?; H k8 h. e1 d
6 P h8 c1 K7 O/ f& ? mov cx, $A //字色或背景色? 没有去详细了解请自己测试* a) [. b5 j% l0 l
mov dx, $A // 可以通过修改赋值给ax, cx, dx的值 不超过$FF G. v% b, K5 ~, ]
mov ax, $A
4 i/ d$ t; |+ `' O a$ K; Y call CallAddr1_0053BBFF
' p" f' }. J' w# Q mov edx, dword ptr [ebp-$14]7 l1 l$ F& e$ d0 v+ u
mov word ptr [edx+1], ax
. R& A5 f5 [; Q9 x- B/ T
* p/ Z1 G1 z/ u8 P, P mov cx, $10 //字色或背景色? 没有去详细了解请自己测试' u" ]# ~9 O8 i* x8 A T
mov dx, $10 // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
0 q6 e7 p" t% }+ j& c mov ax, $10
2 U8 o/ D1 h7 u, y# u3 h% W/ v. E call CallAddr2_0053BBFF
7 a& U3 y: K6 j- _! J0 n1 n mov edx, dword ptr [ebp-$14]: h! Y( I' p/ i+ W, ^' P9 }
mov word ptr [edx+3], ax
1 ^$ t$ c4 P+ t7 ]) W' i# R jmp EndAddr3_0053BBFF //色彩赋值结束跳转到tgs
* H! p% E. _ K //8 ]8 _% {) C; K; ~- h1 [7 ~: Q
@out:
5 U. A$ \& B4 i$ _ jmp EndAddr1_0053BBFF //这个是跳转到默认的点
# ]( d4 o4 ~" q# M% e& i0 B3 ]
) K: O/ v, p9 E @OldCor:& o1 ^/ c! o* N* G
jmp EndAddr2_0053BBFF // 跳转到原来16种色彩赋值+ p( K; w$ F0 H4 N+ z/ [7 [, z
end
1 F% G; d+ {# ~( g2 W. m9 z0 _
欢迎光临 三千论坛 (http://www.3000y.vip/) |
Powered by Discuz! X3.4 |