游客您好
  • 点击联系客服

    在线时间: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 编辑 # q1 l0 S  X; F3 o( Y0 v$ I
! \+ x7 Y7 C0 K
上面部分已经初步了解色彩设定的方式, 这个时候为了增加我们自定义色彩显示, 就需要在0 _) m9 S3 A# R) U+ i
" S" Q$ j: T( b: U8 X! N/ ~
    dll里面进行内存地址读写. d8 b( x' P% Y. Z

' j" k" H% s, J. l# a3 q. m
    我是在
( _! ]( P- a3 X4 T/ X& T
   
6 d) |+ U% W" l, h
    0053BBFF  |. /0F87 41020000     ja      0053BE46
- z( z* q% ]  A: O% k$ u$ {  f1 M

1 ]* \2 q, ]5 K% ~
    在这个地址进行拦截 在delphi里面 可能可以dll初始化时这样写" `5 I# m9 G0 n& A6 h
& G9 T  s3 u0 ?2 M* B
    procedure InitDll();; J% {) f! F# L1 ]5 w* e* d
    var
0 e8 ^% O) t* P; a
      p: Dword;
) |. O* m" _6 \3 B
    begin: U0 T8 s6 Y, m5 h9 `" |
      p := $0053BBFF + 1;/ I9 X" K2 ^/ h, x- `+ J
      PDword(p)^ := Dword(@proc_0053BBFF);( \0 e" o7 }1 S8 {9 o- W0 ~# G
    end;1 u$ T- H( x* y3 f
5 O1 p" u1 V9 x, k6 d/ j; E- T
    在自己的代码里面写一个色彩增加的函数判断比如
' b& m0 l0 p: B+ F& U! R

. B3 @( V5 d5 \0 g+ i
    delphi代码:
8 [; N) V0 x, o6 j5 k$ u8 r
$ w; _' \) T" c' r' P
    var. C  a5 ~, h' F
      EndAddr1_0053BBFF : Dword = $004F470C;
) O' O, S' e1 F0 R' e( E8 }
      EndAddr2_0053BBFF : Dword = $004F44CB;, W' `' O# q$ r/ f# `, G1 b% K7 l
      EndAddr3_0053BBFF : Dword = $004F4736;    //色彩彩赋值结束跳转
8 ?# q: t5 G2 b/ U* _
8 P& f. E& [0 a4 y8 A4 H
   CallAddr1_0053BBFF : Dword = $004611D4;1 p* {" d6 {9 |
      CallAddr2_0053BBFF : Dword = $004611D4;' H# {2 F" Q% P" v. B
9 P' L+ V. c  D6 S; N
    procedure proc_0053BBFF();
7 O2 C$ @4 ?% @( J$ i+ @/ k
    asm
7 j" k' }7 Z' ~7 U) @& x' z8 K1 Y7 f
      cmp     eax, $10                        //与预先设定的 最大17比较
$ z; p) @' g: V* l0 S+ F: I8 ~
      JLE      @OldCor                        //小于就跳转到默认16种色彩赋值" P5 M1 V# S/ l& Z8 N& J

3 C) a5 ?0 Z% O: }6 D6 V
      cmp     eax, $10                        //比较是否等于16 ! W/ ?. R2 T5 B# C7 k0 ~( O
      jnz     @Seventh                        //不等于就跳转到第17种色彩判断部分
9 O1 b5 t( ^2 V  S) K$ d7 x

' z% C# J) x" {/ k$ Y6 P3 d
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试
3 c7 I1 j4 q; ?, E9 C
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF& C; y/ B& n& v8 x, \7 q+ D/ n
      mov     ax, $A
- A/ g+ U' ?/ ^) e, R& {
      call    CallAddr1_0053BBFF , l. d8 b2 t# v% W9 g
      mov     edx, dword ptr [ebp-$14]0 B! v# B) x  w
      mov     word ptr [edx+1], ax
- z5 C7 S8 j+ N/ F4 K$ w& _3 F

- C5 A6 u$ P0 H$ y: X- |
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试
  Y- H4 B  p, I
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF6 [! t2 y/ x) O* g3 ?& d
      mov     ax, $10
" ^, j0 }3 D4 I' k! d* ~4 G
      call    CallAddr2_0053BBFF
( f$ a2 Y5 n0 \; A. i
      mov     edx, dword ptr [ebp-$14]
  T0 V1 u4 P) N5 Z1 I/ V6 J1 I9 ]
      mov     word ptr [edx+3], ax- B2 K7 f( z) v( _1 M- Z5 z
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs
5 i( A* O3 q( ?( a
+ L/ T  R6 O+ I( N/ _( n  b; N0 Q
    @Seventh:; p$ `# k/ @, [" F1 D
      cmp     eax, $11                        //比较是否等于17 " Z  Z1 ~9 l5 m5 l6 Q# f+ d
      jnz     @out                            //不等于就跳转到默认部分
, Q8 L( s! x  ?6 i: ~/ t, d7 `
, j. j3 a1 _! |# m. H( [3 H6 ?
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试: f1 T7 `3 K  q2 I0 b
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF6 B3 |8 G. w! o. {4 b
      mov     ax, $A4 d. n9 s# q0 o9 W
      call    CallAddr1_0053BBFF
9 B+ K, H  [8 E8 k* v7 n8 w, Q9 O
      mov     edx, dword ptr [ebp-$14]
' H% H' ?- g4 i. j
      mov     word ptr [edx+1], ax5 @8 _; h; c3 T5 V/ s4 H9 X+ s
6 V( v7 f- u6 A! D! O$ N
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试2 `) p$ C/ R, T6 {
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
$ P: ~. l; w& v! d+ g0 R
      mov     ax, $10
  _. {. X8 k0 I' z: a& _6 ~0 x
      call    CallAddr2_0053BBFF # D# O! V5 b9 N" `' s
      mov     edx, dword ptr [ebp-$14]! x; P2 q* r$ M* |  N
      mov     word ptr [edx+3], ax( ~5 B0 c' F, \3 u( o0 k" S& P
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs8 Z; d7 I8 \5 T
                                               //
. O" g& o2 p: v1 ~; U$ B
    @out: / }4 P' _  c1 ?; V% H9 W3 E- n
      jmp     EndAddr1_0053BBFF               //这个是跳转到默认的点4 }8 r7 o  L: g2 B2 \' `" k0 f
# Z# V! {1 z- I/ B8 h" T
    @OldCor:
' g( X$ c8 u, v) l6 S
      jmp     EndAddr2_0053BBFF               // 跳转到原来16种色彩赋值/ J0 Z) k8 j3 a! t
    end

5 ]1 o2 a0 T$ i3 }6 j/ C
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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