游客您好
  • 点击联系客服

    在线时间: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 编辑 9 l8 M4 P" ?3 U* _. O) s, p* c

/ R, w5 x/ v. R/ v1 ~0 x
上面部分已经初步了解色彩设定的方式, 这个时候为了增加我们自定义色彩显示, 就需要在6 _2 t4 ^* _4 V2 y3 X7 f: N

1 R/ D+ j2 N% t+ [) W- @4 |
    dll里面进行内存地址读写
" k2 @# E4 V# H  B. X& S; K

/ n5 H! K" o/ U
    我是在
0 Y4 M$ `* c" |3 q
   
% z' G) ^1 w- `+ K  s1 M
    0053BBFF  |. /0F87 41020000     ja      0053BE467 a$ j8 R7 h7 D
' c+ l# C2 K! l
    在这个地址进行拦截 在delphi里面 可能可以dll初始化时这样写
6 b6 A3 V3 z6 b: q' H
" Q) `- l$ u4 a% H2 S
    procedure InitDll();
% s6 t% x1 `- K* Q8 I; W6 |
    var
. b/ K* t  j4 ^  u3 t, T! C5 {1 G
      p: Dword;) x8 X. t$ x! ?9 [" N& p4 a0 }
    begin4 H3 Z7 x5 e$ t, t7 l
      p := $0053BBFF + 1;  q$ g3 x  c  C9 e6 y7 Y! c) Q
      PDword(p)^ := Dword(@proc_0053BBFF);* R. R4 l# H0 [/ o+ e5 A: y
    end;0 s# V3 [+ ?% c" d; A7 b# F9 |

+ [7 P) K% t# e! R" Q2 j. {
    在自己的代码里面写一个色彩增加的函数判断比如
& q. J" ?- M6 |3 N' N5 [
- P: \8 c% g$ R. G* h
    delphi代码:
4 I+ E* W" m% ?  X9 e

! g$ n' x& _+ B: u5 h2 F( s6 g0 T) @
    var) D  m2 o1 j+ k6 x+ D
      EndAddr1_0053BBFF : Dword = $004F470C;
( c/ e% t! v4 s0 p; H% E7 B: l
      EndAddr2_0053BBFF : Dword = $004F44CB;
8 F2 [4 I5 @3 i5 N/ a/ r  ^# T
      EndAddr3_0053BBFF : Dword = $004F4736;    //色彩彩赋值结束跳转
  v. N( J; n8 Y" b

0 D! n5 E$ Z3 ~6 d, g
   CallAddr1_0053BBFF : Dword = $004611D4;
+ l' Q5 A) @3 P9 _0 I! v) N
      CallAddr2_0053BBFF : Dword = $004611D4;
3 P; Y# Y+ u1 O7 }% z/ V9 e$ C6 n
& b* w) o+ Y' \& x# f  w' h4 Y1 g
    procedure proc_0053BBFF();. d; {; N. H9 u( T! s+ e' C
    asm6 A/ z# s+ k0 r* x0 _
      cmp     eax, $10                        //与预先设定的 最大17比较
% e" U9 l6 X  N
      JLE      @OldCor                        //小于就跳转到默认16种色彩赋值
$ p  X; t% y4 T  M$ [( f
  _' ?: r& k  [* H3 x) ?0 }- ]7 y3 s, i
      cmp     eax, $10                        //比较是否等于16 # J. @9 a' ]* s7 W
      jnz     @Seventh                        //不等于就跳转到第17种色彩判断部分
" u* v$ r$ U; |7 C

( n( Q  e9 h; j1 p" Y& G
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试8 b1 n5 M9 u; `. k' c" E3 R) p8 H+ O
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF  p  |' ]( @8 q' ?4 H
      mov     ax, $A: P8 ]& b& T& ^2 C5 T' m) ]9 l: `
      call    CallAddr1_0053BBFF
! E/ [6 b1 P# a5 G
      mov     edx, dword ptr [ebp-$14]5 J: `; J2 O5 P2 f/ a
      mov     word ptr [edx+1], ax" `. g4 V# e. }: K$ k
; d3 i1 U& _: p! m/ m
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试
0 I# e: t" ^% L4 F
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
5 ]0 j  q3 V+ G( B% K0 Z
      mov     ax, $10
  M* \; g0 i1 h8 b. B
      call    CallAddr2_0053BBFF   a& C2 {6 S8 @7 n( l
      mov     edx, dword ptr [ebp-$14]
3 i" m( \3 X) W5 u9 B
      mov     word ptr [edx+3], ax, v4 m7 m0 m% J( ?# X4 y
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs$ k8 S7 i- O5 W1 p+ I: t. ~8 Q* Z

# f2 F4 G2 M. ^# X
    @Seventh:1 R7 |/ q# c6 F4 K7 ~' T
      cmp     eax, $11                        //比较是否等于17
+ T7 u( u  N( D
      jnz     @out                            //不等于就跳转到默认部分
) X, g. ]0 m& o; f5 C

' O0 y! ~- r: m0 \
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试
* [( I6 Y% [0 k& ^2 B/ h
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF$ L+ c5 j/ P& {) _
      mov     ax, $A6 K8 f9 y2 p' ?0 n7 g
      call    CallAddr1_0053BBFF ! R3 s8 o& O: G4 x1 C( C
      mov     edx, dword ptr [ebp-$14]
7 i1 W* J; x4 `1 O. F
      mov     word ptr [edx+1], ax
2 l: f: P+ o% A5 e+ x
) R9 ]7 E4 M. m  }0 L" P: \
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试% q( s: c0 Q1 a( }/ B" F: r
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
# n$ L" a! i) ?3 U, K
      mov     ax, $107 |, ^7 ?. w1 S2 P( m* o1 C" C
      call    CallAddr2_0053BBFF , E$ ]2 ~& O& t; c1 O3 a% a
      mov     edx, dword ptr [ebp-$14]/ T3 z( T' B/ B0 N
      mov     word ptr [edx+3], ax; S) A) ]( S( Z( z; B: f
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs/ W' o9 e1 q9 S7 z; O: z" w' h
                                               //
  u5 P( I/ _3 M5 ^) ~
    @out: * F" _8 G. r% d$ E$ \1 w; P
      jmp     EndAddr1_0053BBFF               //这个是跳转到默认的点
8 [& K0 P0 e) }( R  n- i4 V# q5 w# w7 w
' N# z( X3 B* Z# T7 d/ {9 H
    @OldCor:+ m% t& ^) Y; [# @
      jmp     EndAddr2_0053BBFF               // 跳转到原来16种色彩赋值
# ?4 E  D6 f" w/ p  ?1 K( h" o
    end
3 q. j! e( b' e) @% W
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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