游客您好
  • 点击联系客服

    在线时间: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 编辑
* t, C7 i' |' K4 Q) k- Y, {$ \( W" h* Q1 t( J
上面部分已经初步了解色彩设定的方式, 这个时候为了增加我们自定义色彩显示, 就需要在
" M( Q! b1 h) v

1 }2 ]% H9 N/ ?3 \
    dll里面进行内存地址读写2 Q, L6 j* I  p- [/ _# h

* i& ]- z; \4 G" @/ n/ K
    我是在
% V$ g( G& f  L+ w/ i2 _
   
% b4 }4 N, e8 ^% }1 |6 {" o% o
    0053BBFF  |. /0F87 41020000     ja      0053BE46, w! O) N2 j  G' T# z* x4 p2 \. C

" t. V) y% q( U+ \
    在这个地址进行拦截 在delphi里面 可能可以dll初始化时这样写
4 z! r2 d# c( b" D, U" K- `

& G- z- q: l/ y9 ~3 `$ x
    procedure InitDll();
4 f+ C, a, o. p  i. {7 l
    var4 |, P8 q- L- L% ]
      p: Dword;/ U2 }4 m  x" m
    begin" c  |) J2 s, r- K- j
      p := $0053BBFF + 1;
6 w/ ^, d4 h4 u! v; A3 I! g# U
      PDword(p)^ := Dword(@proc_0053BBFF);1 m+ }9 t/ ]8 G* n: T
    end;
* N9 Z* h2 n; a

6 y6 ^- x# W; O" O5 G
    在自己的代码里面写一个色彩增加的函数判断比如( U3 C$ p$ E6 C' X+ A1 n( l

3 R8 ~( \% m7 V$ ^. l
    delphi代码:7 q# D/ t) N2 D0 u$ D7 Y! W3 f  W
4 `0 s# W4 v0 ]$ l  i4 s5 P
    var; c3 h4 q1 O4 o, ], L; {6 E. h" o
      EndAddr1_0053BBFF : Dword = $004F470C;
" k  _' @' N9 b7 i. {2 [
      EndAddr2_0053BBFF : Dword = $004F44CB;$ i0 s7 }5 Z6 y
      EndAddr3_0053BBFF : Dword = $004F4736;    //色彩彩赋值结束跳转4 e& x5 G* c8 L  K
: H6 b# e0 m* A5 [; f1 t
   CallAddr1_0053BBFF : Dword = $004611D4;- r0 j8 ^) T/ S4 R0 @0 V
      CallAddr2_0053BBFF : Dword = $004611D4;
& c) Z8 `2 v1 m" y1 [4 J$ Q
; O" V" U; r$ h4 t! g  |  R
    procedure proc_0053BBFF();7 }) B2 G# h$ |  n4 K1 w( C$ E
    asm5 U! F; W' \3 K- P2 |0 Z
      cmp     eax, $10                        //与预先设定的 最大17比较! E6 C9 J( U) M. ]* f' D  q
      JLE      @OldCor                        //小于就跳转到默认16种色彩赋值- J7 t9 t5 S7 y3 P) g( G

0 ?% G9 n. w) H6 O" a" a
      cmp     eax, $10                        //比较是否等于16 + P8 r0 x* v( `+ B% r6 m
      jnz     @Seventh                        //不等于就跳转到第17种色彩判断部分
+ ^$ g- W( `9 L* }- b" B
) E2 w: q& h8 I  W" F
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试) f" q7 a3 L4 x: m
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
4 A: Q4 A* f* M' d3 ~
      mov     ax, $A
6 Y9 Q, U- ^$ q3 Q( ?' Q  m) `: q
      call    CallAddr1_0053BBFF ; D! j' o" B. P
      mov     edx, dword ptr [ebp-$14]" c& b! r. M3 Z% g8 L; q$ i' w
      mov     word ptr [edx+1], ax
+ S) D! ~8 ~- ]! L5 N
3 e4 [, P+ @/ W1 x* i- J" j8 G; i/ s
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试
% I2 p5 f( P$ q3 O( _' D( t
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF) v" K# g0 b: J) Y- d- h) N" y$ y
      mov     ax, $102 U( |+ ?. X4 D2 e3 S" c( L
      call    CallAddr2_0053BBFF * t$ {* C$ R5 p  u5 k1 T: b8 K
      mov     edx, dword ptr [ebp-$14]3 o! P7 Z4 N9 o* S, @5 z
      mov     word ptr [edx+3], ax
, G# d6 a2 l1 j' e1 N" w: I) k
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs
5 C8 b3 Y  u8 k, p8 u* b3 V" ~
: G4 Y4 j1 S# v. a( A
    @Seventh:
7 [: J; g: a( x1 u) ?
      cmp     eax, $11                        //比较是否等于17 % @, j# j1 o& T7 S& ]6 L
      jnz     @out                            //不等于就跳转到默认部分9 \0 j) K* k5 T9 t2 W
5 a7 k# R3 d" v0 T- H6 ?; f2 ^
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试
6 P* [7 M" b* Y  U6 }: S9 e
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF1 z' K7 v* \  N$ [6 M" R
      mov     ax, $A
+ I) b, k, _* g# P  t) N
      call    CallAddr1_0053BBFF
% e: C- z3 `# k; q9 ~
      mov     edx, dword ptr [ebp-$14]4 L0 p" ^8 [6 f- ^
      mov     word ptr [edx+1], ax
$ Y$ ], b$ t' Y) C( ], T
8 a9 e, Y3 X, ?& R* N' `; o' A
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试
& ^4 n+ l1 _9 L) r0 C
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF) O! z& T! ?" M& `/ o
      mov     ax, $10
2 |2 @( \+ T) _5 v8 O3 X
      call    CallAddr2_0053BBFF
2 u" z5 J- t& r, i: o5 r
      mov     edx, dword ptr [ebp-$14]2 M2 @3 m5 }% t4 H( y) f. ~
      mov     word ptr [edx+3], ax2 _- O2 @  \' R
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs: v% G3 p  Y, S) G7 m
                                               /// X5 M% b4 a6 N. Z: X* V
    @out:
/ m7 R- X+ j) v" ~5 l% j
      jmp     EndAddr1_0053BBFF               //这个是跳转到默认的点
1 l7 G3 T% C, P* x$ M8 l* z2 ~
! |. c4 q$ \  f9 _
    @OldCor:: Z6 h. m& d4 A  Q! C
      jmp     EndAddr2_0053BBFF               // 跳转到原来16种色彩赋值
' \3 |9 T" D1 @$ Y, [% z# |  h
    end

8 I; f9 M' W! k* c8 P
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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