游客您好
  • 点击联系客服

    在线时间: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 编辑 2 w* F# s8 [5 g7 z( ?( `! w
: ~  [5 |7 s1 ~
上面部分已经初步了解色彩设定的方式, 这个时候为了增加我们自定义色彩显示, 就需要在3 z, Q7 H4 Y9 b2 e) i

& L6 [7 a- r) ?/ R) f7 O7 ~
    dll里面进行内存地址读写' O  K5 k. k5 t" j4 {1 P

2 `* j; F. j% ^4 `
    我是在
$ g3 v7 m6 j2 @
   
; D5 r5 `# j" f& V6 h
    0053BBFF  |. /0F87 41020000     ja      0053BE46
* A$ y. b  W9 T# o+ a

1 L: U8 J1 s8 g# c7 t9 q* V% s* D3 w
    在这个地址进行拦截 在delphi里面 可能可以dll初始化时这样写6 S1 A0 w8 g3 v/ L9 \2 i

" d) t% g: f% Y; {
    procedure InitDll();
. \/ ?( |- R1 m% T. U. |
    var7 T3 |; @0 v. @7 E1 g, l& h
      p: Dword;5 ^. n9 j9 d& [7 Y! Y" z/ m- @. H
    begin
' ~& ~% A0 `' L) L% t+ n' {4 M
      p := $0053BBFF + 1;# c5 ~% j# t4 T- q% p) p4 _
      PDword(p)^ := Dword(@proc_0053BBFF);1 z. ?* }$ B# w6 x+ W2 x
    end;
9 \$ O" O( u9 E; V2 c: P. U  x  w' p
! _2 W1 v2 ~8 ^* l! F! P: K
    在自己的代码里面写一个色彩增加的函数判断比如3 p9 K/ J% `- @( M8 Y
- _8 F# B. l, |! F
    delphi代码:
' l9 }1 ?+ ?0 _

8 l2 V+ ]) x' W/ w3 A
    var6 P* J$ E) W' Q2 V
      EndAddr1_0053BBFF : Dword = $004F470C;
" O/ x- C  E2 z1 g  r
      EndAddr2_0053BBFF : Dword = $004F44CB;/ S* F& u+ l- R5 |- h% b
      EndAddr3_0053BBFF : Dword = $004F4736;    //色彩彩赋值结束跳转
) `$ f0 s# O; [- r

  @' ^( d9 a9 ?; f. y2 Z: x
   CallAddr1_0053BBFF : Dword = $004611D4;+ R5 w& z- y7 v5 U2 u; g% @& o5 C* k
      CallAddr2_0053BBFF : Dword = $004611D4;2 t+ S$ q0 j, P' p3 W" L$ O

1 J; p, u' P/ v+ ?9 @. X$ X
    procedure proc_0053BBFF();% ^) S, |' m$ F1 X7 f. y6 y
    asm) t, f3 B, f4 j
      cmp     eax, $10                        //与预先设定的 最大17比较& X# l& n% ~) {" E! f! ?
      JLE      @OldCor                        //小于就跳转到默认16种色彩赋值& d' I* @4 p' M. ^" n- C: }

/ F0 H; V6 U4 }$ N9 w
      cmp     eax, $10                        //比较是否等于16
/ @6 w$ X7 m7 l" S7 G
      jnz     @Seventh                        //不等于就跳转到第17种色彩判断部分* j. i9 z7 p6 Y2 L: b
9 `7 S& {- s8 w, K: y
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试
  z* z* w- H, W* d* ~0 F/ b$ x8 }
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF% H4 c- {' e' ^9 X$ h) h
      mov     ax, $A5 G, i+ m' X9 |8 n
      call    CallAddr1_0053BBFF 1 h# h+ w. k' n9 s0 \8 f6 `
      mov     edx, dword ptr [ebp-$14]) U, _$ X+ I" `: p) ?
      mov     word ptr [edx+1], ax
. \, o# x$ e8 Z/ K

  p- r' a* ?0 N7 D, W
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试/ N' D- Z  {% e
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF1 j' W" y! P4 Z4 L. f6 w1 R4 J4 \
      mov     ax, $10. B8 j( \# x" H, C( `6 K+ v
      call    CallAddr2_0053BBFF
4 |& }. |' G2 |2 E5 M
      mov     edx, dword ptr [ebp-$14], l7 A" B9 g5 V% \8 m- H" a
      mov     word ptr [edx+3], ax5 d* Z: g$ d9 \$ K' q9 A2 q
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs1 ~/ \6 m1 Y2 m5 c6 ]6 \
1 Z+ w. a" I9 s; {
    @Seventh:
1 w7 \' z9 ]0 I
      cmp     eax, $11                        //比较是否等于17
% u% d" [& C. Y- ?6 |" @7 u
      jnz     @out                            //不等于就跳转到默认部分
6 C$ k4 `8 {0 I! _1 P% ~( m8 d0 O

! ?' p) S; Y( ?3 x! p4 |1 g
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试$ E" I4 M/ }% E6 k$ V! q( ?1 @9 R
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
/ i' V- _  Z5 L$ G. c$ Q/ r( G. e
      mov     ax, $A& C6 t# ^7 d+ F$ _
      call    CallAddr1_0053BBFF , r3 `/ J( l# `
      mov     edx, dword ptr [ebp-$14]
  [" X0 b; f/ |! f1 i8 p8 Z' G
      mov     word ptr [edx+1], ax
1 H. E8 K7 H% e% r3 r- X; R" O* i

/ a! E+ s. D3 ?3 f/ w
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试: _! k& u' `& j6 s4 u
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF* H; a: z, R% Z3 s$ C0 G
      mov     ax, $10
0 ^, y4 r& b+ U, j4 q8 y7 e! |
      call    CallAddr2_0053BBFF ! b" T7 m; Z. O5 D2 [) t& X' W4 S0 ~
      mov     edx, dword ptr [ebp-$14]
- z$ J% C2 Q( j. |) l* J
      mov     word ptr [edx+3], ax
; b  E, C" _+ S6 R# N% @
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs* x  x4 o/ E' ~1 T" ?
                                               //3 s6 Q6 Z1 E" ]) u" u: Z' b" x+ G
    @out:
1 u* S, o' N6 R0 n0 Y' @) Z* ^2 a
      jmp     EndAddr1_0053BBFF               //这个是跳转到默认的点( J$ R& d/ H1 e$ |  [

9 ~; i8 q& E6 }8 N" k$ U
    @OldCor:
. F" u3 p& }0 A# U0 v9 g6 a1 z
      jmp     EndAddr2_0053BBFF               // 跳转到原来16种色彩赋值: m3 C& `% O+ U5 U1 \0 ~/ |: e
    end
( n4 v+ q- q1 e* \( n
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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