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