游客您好
  • 点击联系客服

    在线时间: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 编辑
, l; i( o4 ]: Z4 L" @" s
; {9 P  k# ~* T; h
上面部分已经初步了解色彩设定的方式, 这个时候为了增加我们自定义色彩显示, 就需要在
. C1 e  l: ]9 m

, y' r3 _; t: [5 Z: f
    dll里面进行内存地址读写
' _, T. L2 U, Q* L& R" _3 L
7 z0 [; m0 Q+ |$ `% X; {
    我是在 ) G4 G/ x" J: V0 q6 j: m
   
. o& Z3 j; u1 S3 a: P6 {
    0053BBFF  |. /0F87 41020000     ja      0053BE46( T2 ]; S! p- }$ S1 b: `
. K3 ~/ h2 ^5 V
    在这个地址进行拦截 在delphi里面 可能可以dll初始化时这样写1 \9 a7 ?7 ]! C: r% P. W

! U: e  W3 c* F) o0 n
    procedure InitDll();
- k% Q7 c8 Z! h
    var: X0 N6 H5 t4 x1 f& g  r
      p: Dword;
; q: L: ^: k' J9 d) p- J- d. D1 A4 [
    begin/ s7 V  k% ?$ n; w3 X- e2 v1 e: ~
      p := $0053BBFF + 1;, f$ B/ c( d' S" z* f- E
      PDword(p)^ := Dword(@proc_0053BBFF);
7 g9 v" T6 N  q8 B
    end;
: {1 P% J4 I% A$ G

# a% B' s0 E0 L/ ]" Q& `
    在自己的代码里面写一个色彩增加的函数判断比如
: M. z# C/ E" G1 b$ d6 b5 g! H6 @. d# Z

7 I$ i* ~5 R) f, s5 V, J/ g$ \
    delphi代码:: p0 Y3 g: y; g; y% u, e  N/ b
. V! v) V+ G$ b! G( X% _+ [
    var
3 _0 W5 ?  ?  \8 L
      EndAddr1_0053BBFF : Dword = $004F470C;/ ~; p& p) B' k5 w7 J* R
      EndAddr2_0053BBFF : Dword = $004F44CB;
, I& c' ?6 v7 [" ?. o# }
      EndAddr3_0053BBFF : Dword = $004F4736;    //色彩彩赋值结束跳转
  e6 G4 k3 c8 `  m
: [, v' N- ]5 a3 q
   CallAddr1_0053BBFF : Dword = $004611D4;
0 l3 ~$ G. v* i
      CallAddr2_0053BBFF : Dword = $004611D4;: \! A: |1 q: N

5 T- T0 Q0 U6 c8 k' T  b7 l
    procedure proc_0053BBFF();# ~% S* i% u. w  k8 I- Y
    asm
, W/ n6 W% |- f$ u. T& F$ L% Z
      cmp     eax, $10                        //与预先设定的 最大17比较
$ T8 f3 t& `, S0 I: X) y2 I" {
      JLE      @OldCor                        //小于就跳转到默认16种色彩赋值
' o0 w, k  j$ r+ X+ o

! K  W# Q( L% _& W6 P# o5 n) ^/ t
      cmp     eax, $10                        //比较是否等于16 0 r# W/ \7 p: L  H8 L$ z8 X& j
      jnz     @Seventh                        //不等于就跳转到第17种色彩判断部分2 n# [! X/ i* c3 F3 f% Y4 C" c
0 e; _& Q& k7 G
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试2 _( d) w6 G0 H: G% r
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF6 z7 ]7 R9 _  \# {
      mov     ax, $A2 t) b* \$ d* T) T! x9 B1 p
      call    CallAddr1_0053BBFF
9 B5 O6 o% L& [4 @5 `5 A
      mov     edx, dword ptr [ebp-$14], _! l" i9 E0 ~7 i; e% E2 l
      mov     word ptr [edx+1], ax
5 W2 X( e0 E; T# @3 V- u& M8 w/ L
* {1 M5 M1 R8 I9 m0 F
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试9 v. B+ |, b. B- o) f$ z" J
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
& o: }' q2 r0 l5 q( H+ T
      mov     ax, $10  r. z. z( V! I) ]/ g
      call    CallAddr2_0053BBFF   ~; B; U: O( e$ S! l+ a
      mov     edx, dword ptr [ebp-$14]
" d7 j9 E: u3 G  u5 b
      mov     word ptr [edx+3], ax
: w5 s9 A# @% P+ ~
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs
7 o' |! d( r4 I8 }$ {. C

" e* _6 Q' k/ c* n
    @Seventh:7 ^% U- H: `/ E% u
      cmp     eax, $11                        //比较是否等于17
; x  j- s9 D8 W/ L2 E+ j( I# Q
      jnz     @out                            //不等于就跳转到默认部分
  y: s7 `. y  ]8 E) t; I( p

1 f/ |& F5 S/ _8 ?
      mov     cx, $A       //字色或背景色? 没有去详细了解请自己测试0 T. b7 W: n+ e6 m* I( M
      mov     dx, $A                          // 可以通过修改赋值给ax, cx, dx的值 不超过$FF4 F2 h+ q# x$ }; S, j0 L
      mov     ax, $A
2 E8 D8 p5 U- [) Z4 \
      call    CallAddr1_0053BBFF ( A/ e) I' V6 Y- X
      mov     edx, dword ptr [ebp-$14]6 i( x- l* v) m
      mov     word ptr [edx+1], ax2 l. q) l, B2 A6 [7 a
  A7 [! `6 F' x( C' i
      mov     cx, $10       //字色或背景色? 没有去详细了解请自己测试
: ~& e  E, A. |4 b0 V9 n; D0 v
      mov     dx, $10       // 可以通过修改赋值给ax, cx, dx的值 不超过$FF
$ E% T9 p. f4 L2 f/ K5 m  n
      mov     ax, $106 x8 `/ R! ]$ b1 i
      call    CallAddr2_0053BBFF
; ~4 z/ t* N% Y, }( g1 k  _# ^$ P7 Y
      mov     edx, dword ptr [ebp-$14]: e. ~) I9 Q/ e9 J* J
      mov     word ptr [edx+3], ax
2 b+ s- K) Q. r' Z) Q$ A
      jmp     EndAddr3_0053BBFF               //色彩赋值结束跳转到tgs$ F  t6 e; b6 s1 h8 c
                                               //
0 d! j" G/ N% T) E7 z- E1 ?  _  e
    @out: & j, V0 v0 q# z* t. S
      jmp     EndAddr1_0053BBFF               //这个是跳转到默认的点' Y( ?6 j- o$ }: h  s6 d9 I

3 `" Y2 f0 x7 O; B9 g" v5 A
    @OldCor:$ r$ e' N8 r2 W; H. v: j
      jmp     EndAddr2_0053BBFF               // 跳转到原来16种色彩赋值; j# V* S/ N4 P# |: C+ R
    end

- ]7 j+ n! d$ ^# h/ x" [- c
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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