游客您好
  • 点击联系客服

    在线时间: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 编辑 0 ]3 M4 D6 u+ p: @
% j3 j7 u1 b0 [* _* x$ j
上面部分已经初步了解色彩设定的方式, 这个时候为了增加我们自定义色彩显示, 就需要在
' s  i4 L4 @8 P5 h# X

5 [) Y. \! u5 a. c, X, d
    dll里面进行内存地址读写, q4 W: i( Q# s/ k
- K+ E) @6 d3 K9 m. q: d
    我是在
* E9 q+ I" T2 o9 Q! Q2 V
   
) Z# d. \3 I) F1 g: o" m
    0053BBFF  |. /0F87 41020000     ja      0053BE46& y: a: P6 _8 ^% D. B; b9 ]( q5 h
! b- }! D% R( L0 V6 ]: S
    在这个地址进行拦截 在delphi里面 可能可以dll初始化时这样写1 b# |7 B8 j; X! c' h4 t; d5 {

' w8 s2 G" K& J
    procedure InitDll();
4 `' C; G/ Q' w5 B  p9 P
    var
8 D; s, L2 Z) w9 v( a+ _4 P. x
      p: Dword;$ c# t; w5 J$ r
    begin
* m+ l7 C; n5 `" u; P( |; a3 `9 o: b" C; C
      p := $0053BBFF + 1;7 R! U, ]0 Y/ W4 Z  `8 Q6 f
      PDword(p)^ := Dword(@proc_0053BBFF);
9 l" ^, [8 i; P& x5 ?% j
    end;# C! Z, I8 p0 ]+ j) [% V: O, B  R

+ t8 h( C1 M+ k! ]" M6 Q  W
    在自己的代码里面写一个色彩增加的函数判断比如7 h5 G) K( u+ h  D

4 W0 X5 v6 B; s6 H
    delphi代码:
0 [& b# u) k! r0 n( I+ n

# |( C) r$ v$ o  Y7 S# w
    var9 _  ~" I, I4 [$ v# U2 R$ f
      EndAddr1_0053BBFF : Dword = $004F470C;
; s% {- O6 f# u" ]* [$ j
      EndAddr2_0053BBFF : Dword = $004F44CB;! o! M# v/ v: C) l' s1 ?
      EndAddr3_0053BBFF : Dword = $004F4736;    //色彩彩赋值结束跳转
# Z& A+ F% F+ e. i% p

8 s* U1 s5 o7 d4 ^
   CallAddr1_0053BBFF : Dword = $004611D4;( b! T9 r2 r8 i, ~  {4 K
      CallAddr2_0053BBFF : Dword = $004611D4;, K  c1 ^8 D$ Z" G+ H

6 Q  X2 |  ^2 X) j
    procedure proc_0053BBFF();
: W, d# }7 ?1 I1 f# ?& k" G( H  F3 f
    asm
  b/ R" \- B" {3 K* O, ?  l$ y/ ?
      cmp     eax, $10                        //与预先设定的 最大17比较+ M0 ]) j' {2 K6 q$ n
      JLE      @OldCor                        //小于就跳转到默认16种色彩赋值
: b% ~* O6 r9 K5 t* k

& L! `+ N3 {! N! g1 N# {
      cmp     eax, $10                        //比较是否等于16 / d$ P! Z, N6 K  i
      jnz     @Seventh                        //不等于就跳转到第17种色彩判断部分# G6 C- y4 p: X1 a

- k  T: [/ _8 F1 q; _: K* c7 l) v
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试. f4 {$ s( J- S+ ], N. z- t
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
+ N* o0 `# }8 }: D% @
      mov     ax, $A
+ F. T2 |! z( X$ W, b$ Y, b% \
      call    CallAddr1_0053BBFF 3 t# ^1 w9 {$ j$ e% |' g0 C
      mov     edx, dword ptr [ebp-$14]; d" t9 H( w2 M5 R
      mov     word ptr [edx+1], ax& Q$ K. Q* x' ^* }' @. e! O

4 ~; ^. ^$ `' B% F0 m2 u0 ~
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试0 ]6 {6 s. ?$ R& k4 y% G9 C. R
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
& O( f: i" D4 O0 f% a
      mov     ax, $10
+ @6 h1 Q0 R1 `; m
      call    CallAddr2_0053BBFF ! |3 T9 Q/ h* K; {& L1 ^
      mov     edx, dword ptr [ebp-$14]* {' J/ B7 ]* U4 K
      mov     word ptr [edx+3], ax9 b2 m5 ]) j$ @; X7 ~- |4 s0 B
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs, {6 O' H. |) O* E3 H  T

' h: j" N6 w# r' E' C2 k
    @Seventh:
$ q* l& r, z' H8 ]- Z; R, }
      cmp     eax, $11                        //比较是否等于17
0 t2 q3 n4 ~4 O" {
      jnz     @out                            //不等于就跳转到默认部分
' j, r$ p' }5 a+ C0 l7 A

# H# x) ]: \8 r4 K, o7 P
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试
6 a$ ]% d4 Z3 j2 h$ R0 Y8 @
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF" W" g! l5 X, [& Z; ^) y, i
      mov     ax, $A
$ _- q- p. u1 R6 d- W: o
      call    CallAddr1_0053BBFF
; r. k9 n1 i3 y1 \( H0 d8 a
      mov     edx, dword ptr [ebp-$14]6 ]/ x* Q( }1 G0 R2 T) W" d) M! |
      mov     word ptr [edx+1], ax0 C) U) X& ?* H

: ]' X1 G/ F) {) C: W
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试
. N2 @7 I" x: c7 q, w
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
# E' `2 Q8 i* q  ~$ b
      mov     ax, $10
- P1 {8 x" V& U* F- ~. q' N6 p0 N; E
      call    CallAddr2_0053BBFF
2 }* M1 j2 e" Z4 T: @
      mov     edx, dword ptr [ebp-$14]- g( k$ ?) y0 X
      mov     word ptr [edx+3], ax; L% `" O8 M( l5 a
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs( ]: y( \1 |* O" P# z+ T& C
                                               //& s/ b. Q: [: f* c7 w6 [
    @out: 5 v! A! s1 F3 v; U) i8 M8 h
      jmp     EndAddr1_0053BBFF               //这个是跳转到默认的点
5 v6 X! v" Q- v) Z! X% I

4 T. u2 ^& H. Y0 q6 V$ B' V
    @OldCor:
2 }  a9 \- R7 ^  G; r& N  s2 V! g! @
      jmp     EndAddr2_0053BBFF               // 跳转到原来16种色彩赋值
5 i( b( p3 h2 `. Y# L
    end

0 u% b8 l5 _: u" ]/ y5 h" n
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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