游客您好
  • 点击联系客服

    在线时间:8:30-18:00

    客服微信

    Wkr-3000y-kf

    电子邮件

    3000y@wenkeruan.com
  • 手机版

    随时掌握游戏动态

  • 扫一扫二维码

    添加微信客服

Lv.5 解脱境
277号会员,0活跃值,2022.10.27 加入
  • 207发帖
  • 173主题
  • 0关注
  • 0粉丝
这个人很懒,什么也没有留下。
独家推荐 更多>

[安全工具] 千年加密解密代码(delphi)

[复制链接]
快要发癫啦 发表于 2023-2-14 11:29:39 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
千年加密解密代码....虽然看起来挺复杂的.我是对应汇编的.编译后几乎和游戏客户端里的一样...保证了速度..
- _- V) c$ D+ }  `' f8 Q8 W
二次解密代码我还没去搞.不过一次解密足够了.可以制出很多功能外挂.如自动拾取.吃药.等等...二次解密加密主要用于怪物坐标用的.(自动练功需要解析怪物坐标要用)
/ _! O% l+ n4 s' ~8 x, A+ B0 |/ M

: r# q* |: v2 ^- X. o& n
声明部分
& X6 y& |0 p+ k/ j, Y5 q1 }1 D
//二种声方法均可
& e" K% `8 G0 w( i, k
//const gamestr:string[255] = ’N>TSVUJlwdcBMFjnAKb?qxvyeGzfLP=_ER@Z\am]ChgoWD;QuX[<tkpr^`iIHOYs.3" (- ’+chr(13)+’<;’+chr(12)+chr(00)+’=/!,1>#2$’+chr(39)+’89%’+chr(10)+chr(9)+’*):5&+67?40’; 9 w6 _& |% s" \. b& }# j3 K" E
const gamestr : array [0..127] of byte =
) a: R; L9 @+ }4 F# A. J' ], T  Q, n) \
($4E, $3E, $54, $53, $56, $55, $4A, $6C, $77, $64, $63, $42, $4D, $46, $6A, $6E,   $41, $4B, $62, $3F, $71, $78, $76, $79, $65, $47, $7A, $66, $4C, $50, $3D, $5F,  $45, $52, $40, $5A, $5C, $61, $6D, $5D, $43, $68, $67, $6F, $57, $44, $3B, $51,   $75, $58, $5B, $3C, $74, $6B, $70, $72, $5E, $60, $69, $49, $48, $4F, $59, $73,   $2E, $33, $1E, $01, $13, $22, $10, {&content}B, $28, $2D, $20, {&content}D, $19, $3C, $3B, $06,   $11, $1C, {&content}C, {&content}, $3D, $1D, $2F, $21, $03, $02, $05, $04, $2C, $31, $3E, $23,   $32, $24, $27, $38, $1F, $39, $25, $12, {&content}A, $09, $18, $1B, $2A, $29, $3A, {&content}E, $35, $07, $26, {&content}F, $2B, $36, $14, $37, $3F, $34, $30, $16, $08, $15, $17, $1A);     . e- v! q- W! f3 S8 K( C, ?
: y- V+ r: s/ U$ H! @
代码部分 0 a' d1 k  ^, O) p! H
function decode (inchar:pchar; len:integer ; outchar:pchar):integer;   //解密 7 w( z. J2 y0 c3 g3 S
var
4 U# J1 H4 B9 U: |: a3 [7 e6 J
   a1, d1: byte; " S( I: j" {% N5 X+ D/ x2 V
   j, count, di, si :integer; $ d9 E4 K( d7 ~( W) k
begin 9 x3 B5 e' g6 _$ o1 |! L6 J6 z6 f$ V. d
  decode := len div 4 * 3 ;  //返回解密后数据长度 " I& Q- x9 \/ r4 w6 V
  j := 0; & u! [, _! A7 T7 p1 m% b
  while i < len do
/ }+ u6 q$ N! a. ?- J
    begin
( L% h' G) U4 u) M. h
      d1 := byte (inchar[j] ); " m9 P& w. l! N: f
      if ( d1 = $3B ) or (d1 = $7A) then # o- x1 X# j  ~. e# a+ }
        begin
+ S- r' M. @/ Y8 u) L. x
        end; : t; n, [; m5 g& H% \
      d1 := d1 and {&content}FF;
* U, A) z& I+ k0 n
      d1 := gamestr [d1 + 05];               //d1 := byte ( gamestr [ 1 + d1 ] ); 8 q8 O3 G: a  w( D+ ?# h9 W
      byte (inchar [j] ) := d1;         // 根据不同的gamestr数据定义选用不现的方法 & h4 `8 s# |. j, L9 g9 u6 w: C
      inc (i); + {* m* t; Z) ^+ D) ?
    end; # i, Y' U$ g! {0 Q3 v/ E5 k5 x* g
& ?' g* Y$ ?- G# _: ?9 \% D
  di := 0 ;
- c1 T- j& S" o! m* p5 m7 o3 a% X
  si := 0 ;   + i% J/ Q. A" W+ f* R: |
  count := len div 4 ;                        //循环次数
4 a) a3 B1 k2 j5 T
  for j := 1 to count do
5 T! c4 D# Y* b& f; Z, u& S3 [9 ?
    begin
2 c6 d" Q) T# q4 E$ V; Y+ n: G! P
      a1 := ord ( inchar [di]);               //解密数据 (取4个.转化3个) & r3 d+ C! `$ K/ w! O3 }. e( u
      a1 := a1 shl 2 ; 0 O2 z% N' K- g0 J' b1 O
      d1 := ord ( inchar [di + 1]);
* @8 Z: P. e' Y0 u3 B) s
      d1 := d1 shr 4 ;
: ]& W( m& K: E, e4 P
      a1 := a1 or d1 ; 9 S, q# R" g2 w
      outchar[si] := chr (a1);
  I% l# L# m# w& D$ g) k( T
7 S7 y6 z; N# q$ I6 R
      a1 := ord ( inchar [di + 1]); 7 w# V8 T1 J, }9 a/ v& x
      a1 := a1 shl 4 ;
4 ?7 Q! r" e7 V8 W* t/ j: G+ X9 @2 \0 Z
      d1 := ord ( inchar [di + 2]);
7 r. j1 g: A6 A3 ~! E
      d1 := d1 shr 2 ;
( W; O8 B, U1 L8 q, l: m# b
      a1 := a1 or d1 ;
4 ?- i- ^% p8 R, U/ ^1 d2 [$ x
      outchar[si + 1] := chr (a1); " F* B; ~3 P6 U& n
   
% X% W- S0 M3 v  `3 X5 t+ P
      a1 := ord ( inchar [di + 2]); . y& F( r% Z  }3 k( a
      a1 := a1 shl 6 ;
3 }/ O3 P" f6 _
      d1 := ord ( inchar [di + 3]); 5 k6 a2 |& ?) W9 S! t6 h
      a1 := a1 or d1 ; " H/ @$ X5 n- j) T, |: [" y3 G
      outchar[si + 2] := chr (a1); ! t1 Y$ G+ I2 E* X2 _/ F' \

, X) b( X0 R9 U2 Q! k/ v' f
      di := di + 4 ;     
$ [0 M/ f, N' A7 e- D# g- O
      si := si + 3 ; 5 d' w7 ~& J+ ?6 Y! U$ M
  end;
% _% c! O8 v9 A2 {+ I1 K
end; * v( u- H+ p3 X3 W
( K: c8 [6 r3 P. n( c  R& w2 G
function encode (inchar:pchar; len:integer ; outchar:pchar):integer;   //加密 ' r3 i6 l  `5 o( l3 |% k2 J( m/ p
var " k0 E) x6 N+ y
  a1, d1 :byte; / i4 f& z: L7 b6 I
  j,count,di,si :integer;
1 m3 l  B. M) m- n* n: C

# ~+ `3 C! V) r: @
begin
' m5 e1 e5 q; u" U  a: @
  encode := len div 3 * 4 ;  //返回加密后数据长度 + B8 H, m) M& S; f7 V  Y8 S
  di := 0 ; " r/ s  H2 g1 ?, K/ M6 f
  si := 0 ;   l4 ~% K# T; M- C- O+ t$ B! E
  count := len div 3;           //定义循环次数
$ Z. k+ y) t8 d2 S
  for j := 1 to count do
0 a8 o* U$ c8 m( L; ]0 ?
    begin : P/ G& m/ b  z) E. I
    a1 := ord ( inchar [di]);   //第一次转换  取3个 输出4个
; ^% c. S% ^1 \
    a1 := a1 shr 2 ;
$ t  f7 p! k  ^, n, o1 }
    outchar [si] := chr (a1);
$ U" i! y6 h+ \" J3 \$ j

. u( T5 ?+ C0 Z
    a1 := ord (inchar[di]);
5 h3 Z. X1 s$ i/ a4 c
    a1 := a1 and 3 ; - X8 q  l( L6 m  p2 r
    a1 := a1 shl 4 ; ; c8 f; w  t# y- `8 t* V% g5 U
    d1 := ord (inchar[di +1]);
1 }4 t' L. {" K
    d1 := d1 shr 4 ;
! _' \; `+ o3 o) S) V# v2 J
    a1 := a1 or d1 ;
  U1 B9 q( @0 D
    outchar[si +1] := chr (a1) ; % I; r+ ~8 ^1 e

. F3 i* Q3 u1 P# L  U2 c6 s  a0 ^8 F9 I
    a1 := ord ( inchar[di + 1]) ;
3 L6 J* V. I. Z7 t( k: |1 U
    a1 := a1 and {&content}F ;
& Z" A% |, h% m/ q$ [+ Z
    a1 := a1 shl 2 ; : J/ P* \; C" }% L6 p
    d1 := ord ( inchar[di + 2]) ;
' @2 U0 [% g3 b6 s: s
    d1 := d1 shr 6 ;
) u* M7 j& X8 f7 c
    a1 := a1 or d1 ; 7 R% {, t  Z& l$ ]( |
    outchar[si + 2] := chr (a1); / d  f" F0 Y8 _

4 u: y7 V' x0 Y9 D/ f4 r
    a1 := ord ( inchar[di + 2]) ; - O0 L; a, D# G5 w7 f
    a1 := a1 and $3F;
7 k9 J; z+ y$ T1 k  @8 k, D( H
    outchar[si + 3] := chr (a1) ;
4 @( Q% w- `1 a4 S: Q

  N8 d( g# x6 a
    //第二次转换
, v- x+ s! I8 _, ~" ]( \: @
    d1 := ord ( outchar [si]);          //第 1 个 ; }% O3 L" A. o  U7 s5 D
    d1 := gamestr [d1]; . l) M: I! b7 N  W* s9 d/ P
    outchar [si] := chr (d1); % j7 p  G! l+ _8 X+ q, `- @% [

0 K# Y% L! M! b( a- I9 M% z4 s
    d1 := ord ( outchar [si + 1]);          //第 2 个 5 C9 H# E7 u$ @
    d1 := gamestr [d1]; 4 T0 d# ?2 ^( J- X0 m! N/ Q7 f
    outchar [si + 1] := chr (d1);
2 U4 N- g6 s( E. t; C
- C0 ~$ o3 t. M2 x1 Q- H
    d1 := ord ( outchar [si + 2 ]);          //第 3 个
0 [9 U' v6 ?3 [" i- N0 A, d
    d1 := gamestr [d1]; ; k$ ~+ \0 K* a" @+ X
    outchar [si + 2] := chr (d1); ) v) z" m1 p7 I
7 {/ a9 \0 W' k: c
    d1 := ord ( outchar [si + 3]);          //第 4 个
. K% \! l- w% r  _: ~$ e
    d1 := gamestr [d1];
# B/ n8 @) [; |) }( B# v' s$ }
    outchar [si + 3] := chr (d1); 2 C* q. I+ e5 W8 j* A; D

$ V( ?! B' P' V7 k, B* c
    di := di + 3 ;
0 N# z) \- T3 w. `1 y
    si := si + 4 ;     
$ Q" ?' I' e% i
    end;
2 Z/ o9 f" {2 C( h" X  r3 ]
end;

0 w6 t2 C* B  j( }" }/ w$ s
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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