游客您好
  • 点击联系客服

    在线时间:8:30-18:00

    客服微信

    Wkr-3000y-kf

    电子邮件

    3000y@wenkeruan.com
  • 手机版

    随时掌握游戏动态

  • 扫一扫二维码

    添加微信客服

Lv.5 解脱境
277号会员,0活跃值,2022.10.27 加入
  • 207发帖
  • 173主题
  • 0关注
  • 0粉丝
这个人很懒,什么也没有留下。
独家推荐 更多>

[安全工具] 初步了解tgs插件的写法(二)

[复制链接]
快要发癫啦 发表于 2023-1-5 09:45:00 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
本帖最后由 快要发癫啦 于 2023-1-6 09:35 编辑 . B* e& J% u1 n. r, X  L
* ]  b5 i  u" M
上面部分已经初步了解色彩设定的方式, 这个时候为了增加我们自定义色彩显示, 就需要在$ o; L6 J6 o1 t# G/ J# X

. ~: F$ f: \7 Z3 Y
    dll里面进行内存地址读写
; |9 @8 G$ [& M+ v6 R
5 j" G' e: B* [
    我是在 + w2 K  d- p0 D- F% L; S
   
; w" a  t) X; x- }: N
    0053BBFF  |. /0F87 41020000     ja      0053BE46
& ^9 S' A+ R* x" y$ a# y/ ^4 @
$ ~2 b( g+ i! W1 d
    在这个地址进行拦截 在delphi里面 可能可以dll初始化时这样写
" p2 V' u9 s) k& U, ^0 M+ @1 o
4 {/ }; C) w( X" C, g
    procedure InitDll();3 b# U/ R) T9 c$ f' l: W! R0 h
    var+ Z& m4 ]) D3 n( D7 [: ^% R  ^
      p: Dword;7 Q6 g; S! J$ M" e
    begin
4 U, a3 E# J" X" a4 m# K3 b
      p := $0053BBFF + 1;
+ B# L) x  |- l  N
      PDword(p)^ := Dword(@proc_0053BBFF);
. f- z. S3 X! i3 v% d
    end;
; }  z* [+ r8 e; W
* w9 o! V2 n% e! z+ V0 K! X
    在自己的代码里面写一个色彩增加的函数判断比如+ f& I) B% `/ F. }8 j

& P+ i+ O3 i, {7 t, ~- V; `
    delphi代码:5 }( L1 o( @1 O5 |( D

2 j0 t* c9 e3 \8 [* G9 M8 n" S
    var/ I$ n2 S( L( u, }. Y
      EndAddr1_0053BBFF : Dword = $004F470C;7 Z; Z# h' h$ v% w2 W0 f
      EndAddr2_0053BBFF : Dword = $004F44CB;& S. j$ K8 C+ i1 Z
      EndAddr3_0053BBFF : Dword = $004F4736;    //色彩彩赋值结束跳转% w9 v" i) P0 ~, V$ E

% e1 T# O7 W2 z6 C3 p$ i
   CallAddr1_0053BBFF : Dword = $004611D4;
) g. B/ T/ y8 ^4 M" u8 f! z
      CallAddr2_0053BBFF : Dword = $004611D4;
/ c4 `5 y1 g! E) `& |$ s0 n3 o
+ O3 W* Q# b" n$ e. C
    procedure proc_0053BBFF();7 `# A' e5 |. v5 g) E# |
    asm
* f* @) u1 n8 o# j
      cmp     eax, $10                        //与预先设定的 最大17比较
: g( W4 v: r, m3 a$ D  \* V
      JLE      @OldCor                        //小于就跳转到默认16种色彩赋值' O7 r; Z" L. J: Z9 [

& `, U; m6 ?9 o/ @6 [* o; i3 |# n2 ^
      cmp     eax, $10                        //比较是否等于16
3 ?$ p; q; }& l# c/ A2 _0 k
      jnz     @Seventh                        //不等于就跳转到第17种色彩判断部分
& z/ O( R9 ?) Z. Z

* P" \- D4 S' Y: d. w+ r
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试
; |( W* S7 k( m* V, |" T+ W& `
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
5 e$ O/ k% X0 x
      mov     ax, $A
  Q2 z. \+ @1 D8 \$ K& b; n5 \3 ]
      call    CallAddr1_0053BBFF
! G8 J4 X3 P) @5 A; k
      mov     edx, dword ptr [ebp-$14]
) A- u  I' g" t
      mov     word ptr [edx+1], ax9 q, H, R/ k* h1 w. z" Z

& G5 @" E, b6 d, M0 a0 Y4 S
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试
6 s  a% f  |4 n2 v+ o7 ?
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF" g( X0 C/ I* T" B1 K* l: ?
      mov     ax, $10
3 d" I4 w6 ^4 c  J/ r& O" R
      call    CallAddr2_0053BBFF
6 D* W! F; G+ _- _( j6 ?# V
      mov     edx, dword ptr [ebp-$14]
0 }2 }' \% E4 b3 M; t% ]
      mov     word ptr [edx+3], ax9 b/ ?, }6 n. h$ ~7 G8 q+ O  L  J
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs! @. D9 J8 e* n! }- b

/ d: o3 w1 v/ f4 m# K. o
    @Seventh:! |1 Y+ {7 k& M1 Y& r4 V
      cmp     eax, $11                        //比较是否等于17 3 E5 P1 R* g, ]* s' H. w
      jnz     @out                            //不等于就跳转到默认部分# R# e9 H1 `3 L, ^6 F, L/ L2 v
+ F, C% w/ D# l2 x" x# Q1 b8 \( U
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试
" n) y6 P5 W( n( V1 e8 n
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF2 d2 R& J$ L5 h, a0 x' y( m. J
      mov     ax, $A
6 ^4 W5 X7 ]; i9 n3 s# U$ J6 u. n
      call    CallAddr1_0053BBFF
% |! H; \+ A" ~; ]
      mov     edx, dword ptr [ebp-$14]  t1 H; _& ?( Z4 i  r4 q
      mov     word ptr [edx+1], ax
& V0 s" n) `% y3 X- ~: J: i
' j- V+ |' H0 u/ ~6 I7 T: u* O
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试1 N; b/ \( `# D: }: T2 S. t4 i* l4 W5 [
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF$ ]+ S! t( j8 y& m, t0 O- \. B
      mov     ax, $10
9 J3 r0 D: t- c
      call    CallAddr2_0053BBFF 3 N+ W( [1 h$ a/ ]1 U* e6 D
      mov     edx, dword ptr [ebp-$14]2 A1 H2 ]" d: }3 n5 l
      mov     word ptr [edx+3], ax/ G3 Q- r4 i7 ~4 \* I
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs( \' i5 D. v: _/ b! V
                                               //. d1 S0 n$ a" g, T/ _% t) ^/ q
    @out: ! X1 |  o# t) g8 O% z
      jmp     EndAddr1_0053BBFF               //这个是跳转到默认的点
9 E0 o/ x! L; z: V; T& Z
* Z$ z6 U0 I/ f* O0 X1 q- k
    @OldCor:
+ j/ Q& D. F3 N2 }3 b& ^* G
      jmp     EndAddr2_0053BBFF               // 跳转到原来16种色彩赋值/ c  e6 B2 Y' O( Z9 ?0 t; v1 c
    end
* @7 l% f* Y* W% R( l
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

Powered by Discuz!X3.4 ©2001-2013 Comsenz Inc.闽公网安备 35099902000100号增值电信业务经营许可证 闽B2-20220593 闽ICP备2023014375号