游客您好
  • 点击联系客服

    在线时间: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 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
千年加密解密代码....虽然看起来挺复杂的.我是对应汇编的.编译后几乎和游戏客户端里的一样...保证了速度..
2 N1 q  ?3 R8 Q2 }
二次解密代码我还没去搞.不过一次解密足够了.可以制出很多功能外挂.如自动拾取.吃药.等等...二次解密加密主要用于怪物坐标用的.(自动练功需要解析怪物坐标要用) ; O/ o4 W8 L. N1 J$ D- S
8 ~7 }" h9 j* x
声明部分
5 V- F0 u5 D# R
//二种声方法均可
- i0 o0 S  k: X& Q
//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’; " r1 b5 b+ P7 _( y; J6 n4 _
const gamestr : array [0..127] of byte =
  }/ l+ g/ ^" i7 V+ D
($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);     
& y+ ~+ H* n. s- _$ ]( @
( n6 e: k1 p" n! I
代码部分 4 J' ]; }' ^. p! H" K5 T! K6 c5 ]
function decode (inchar:pchar; len:integer ; outchar:pchar):integer;   //解密
* N1 b3 U3 y# h9 D- V
var 3 @4 C$ i& V' V1 l% W* M1 F* h7 N
   a1, d1: byte;
+ t2 O- [% h/ b6 d, u
   j, count, di, si :integer;
2 X+ L. [3 \7 B( w! q
begin . H# Q  ]- v1 G7 I
  decode := len div 4 * 3 ;  //返回解密后数据长度
8 \7 `% R5 }: s1 Q0 c
  j := 0;
2 y% C- k$ @$ ?$ `: m
  while i < len do
+ \7 d$ C4 J( T4 P
    begin
+ w* f# t* J' E: _$ {7 Z
      d1 := byte (inchar[j] ); % H2 A, r' @" v& C7 ^. P7 k- L
      if ( d1 = $3B ) or (d1 = $7A) then ' X. v% f0 F5 O; }3 ]
        begin 2 g8 V6 [. B$ f* W2 T; D
        end;
0 L9 z2 G5 Q5 M. c+ G, H
      d1 := d1 and {&content}FF;
9 d8 e: ?5 ?9 M
      d1 := gamestr [d1 + 05];               //d1 := byte ( gamestr [ 1 + d1 ] );
# _" D/ k" e/ I& b8 {
      byte (inchar [j] ) := d1;         // 根据不同的gamestr数据定义选用不现的方法
" v6 E7 [3 l- C* u7 k6 P" d
      inc (i); ! L8 c6 I4 W$ W1 e# X: |5 J! x
    end; 7 x) S- |! b9 z& B& ]2 j
  j' s$ g5 D% E; E/ E
  di := 0 ;
4 U( K2 e% h3 `3 g
  si := 0 ;   9 c5 L: }( U/ S8 \& p
  count := len div 4 ;                        //循环次数 3 j) L# F' W8 A5 I3 k1 s
  for j := 1 to count do
, z: C& ]6 g5 V" s2 A- g. Y3 N% ~
    begin
9 l; G7 B5 l; o3 m/ K6 G* b. }
      a1 := ord ( inchar [di]);               //解密数据 (取4个.转化3个)
  H: i/ I  |% q7 t/ ~' @  M8 E
      a1 := a1 shl 2 ; ; p! N& d; P8 ?; P, [, F2 `
      d1 := ord ( inchar [di + 1]);
% B% \) M3 g9 Q" i% C
      d1 := d1 shr 4 ;
) ~$ {; z$ n4 ?9 F; _1 Q
      a1 := a1 or d1 ;
' a# B% R% G! r4 r; K$ H( c8 C. F
      outchar[si] := chr (a1);
, W- F6 V" H- ]. [
' m7 F1 M& [* _1 e* t, B
      a1 := ord ( inchar [di + 1]);
2 e4 @* V! |/ f# j
      a1 := a1 shl 4 ;
$ D7 ]5 s  z  s2 |$ ?
      d1 := ord ( inchar [di + 2]);
+ a8 c3 Y1 t# T, w
      d1 := d1 shr 2 ; 8 E) B: l- d- u$ ~' P
      a1 := a1 or d1 ;
/ n, b& y% N! T+ W* L: P6 [" K* N
      outchar[si + 1] := chr (a1); , E5 i3 j7 C4 Z4 `: R
   7 F; I  F' q1 z2 M: d% i9 M
      a1 := ord ( inchar [di + 2]);
' o$ G" V+ Y9 V5 j/ u
      a1 := a1 shl 6 ;
2 h1 }4 C/ b1 w9 I- Y
      d1 := ord ( inchar [di + 3]);
  C3 l0 x/ k$ S  X0 |" ?
      a1 := a1 or d1 ; 2 E# S+ X( Z* i* H
      outchar[si + 2] := chr (a1); 9 S2 ?& Y( z0 S$ A$ z" ?
0 K" l: C  U; ~% @1 q
      di := di + 4 ;     
7 W$ i5 H. \- F9 q) M; C5 ?
      si := si + 3 ; : H$ v. `5 [/ _! E0 O- N- ]- a
  end; 5 b/ X* R# b$ @9 Q* e: h
end;
0 F) w' F- q0 X1 d9 Y9 q  {; ?' ^
& k( H% ~. j! l4 H
function encode (inchar:pchar; len:integer ; outchar:pchar):integer;   //加密   ^8 R5 a/ j* h+ ~3 ~
var 9 R- @: b& l: D# s/ j
  a1, d1 :byte; 7 r) z! {3 p4 a  [
  j,count,di,si :integer;
4 P2 O7 M' t, i) y- j8 r
* a+ X: J5 N5 K$ {
begin 2 B0 g/ o# w* u7 S0 i
  encode := len div 3 * 4 ;  //返回加密后数据长度 / D4 U$ C  ?( w0 d- b0 B4 [# r
  di := 0 ;   C2 ~- L0 e' n/ [# L. _
  si := 0 ;   |: Z) m. Z0 A; \  h+ T# X
  count := len div 3;           //定义循环次数
  f0 ^" h# C' S2 J" j" A1 V
  for j := 1 to count do
1 n& p+ n7 P. t; _# z4 ^
    begin * [2 }' L2 E$ `, k; M
    a1 := ord ( inchar [di]);   //第一次转换  取3个 输出4个
+ D3 L; T+ f1 Q
    a1 := a1 shr 2 ;
  I( U- S1 Q+ |% n& ?% `. B3 X$ }8 H
    outchar [si] := chr (a1);
0 z3 l: Q3 y7 _* W
6 R+ U. ?  C; B
    a1 := ord (inchar[di]); ' C! P- U) y8 J4 {7 T+ N: `0 e9 G
    a1 := a1 and 3 ; $ b7 S4 N5 t8 B4 d' M! i6 _% c
    a1 := a1 shl 4 ;
9 c* _. u$ m2 k+ Q" r# [
    d1 := ord (inchar[di +1]);
9 l- K" m, b7 k4 s
    d1 := d1 shr 4 ; 4 a4 z6 l1 K+ N3 \% g
    a1 := a1 or d1 ; 5 B' J. X0 K5 ]
    outchar[si +1] := chr (a1) ;
1 L, E! {# F6 |  [0 Y7 J
' l( P; I: r3 k$ \) d, S
    a1 := ord ( inchar[di + 1]) ;
" ?3 I2 ?, L& J8 _4 |
    a1 := a1 and {&content}F ;
7 L8 X1 {* e+ W5 J& [! J4 C
    a1 := a1 shl 2 ; - o& D1 ]" w6 u6 t: u
    d1 := ord ( inchar[di + 2]) ; 9 g2 h3 n8 o0 p' m
    d1 := d1 shr 6 ;
  B  Z* I/ D* p7 P0 g' V: a- u3 U4 f, Z
    a1 := a1 or d1 ;
# k# a- R) p$ q# ]* i
    outchar[si + 2] := chr (a1); $ N4 y* ~) b- o

6 v0 g1 ^0 {7 ~) x) x4 Y, ^7 [
    a1 := ord ( inchar[di + 2]) ; ( s* g8 P; L# @8 k9 M/ M
    a1 := a1 and $3F; % i8 f/ ^* W& ^$ R
    outchar[si + 3] := chr (a1) ;
8 P' [9 _, y  D
0 T( n' L  I" b" z% B, U, L
    //第二次转换 + R2 u0 i# R( U$ G1 u
    d1 := ord ( outchar [si]);          //第 1 个 ! o6 z8 y3 Q" x0 ]7 Y' m2 y( g
    d1 := gamestr [d1];
$ g' a7 X1 C- @; L( @
    outchar [si] := chr (d1);
: l  {& a8 I/ v! ~

  y6 S( H2 H1 ^& v8 L! s" Z4 X
    d1 := ord ( outchar [si + 1]);          //第 2 个 ) w5 u8 ~* O# o$ Q0 g* y
    d1 := gamestr [d1];
/ r' |' V2 O  ]6 {' M$ f' ~, F) ~
    outchar [si + 1] := chr (d1); 3 f  a4 Y1 x# b" B$ e

, b6 z/ |3 Y. h# U) t8 G- B- l' n
    d1 := ord ( outchar [si + 2 ]);          //第 3 个 3 V  S) O1 F1 G9 S" N
    d1 := gamestr [d1];
3 Q7 Z4 Y1 W! y1 h6 z5 U
    outchar [si + 2] := chr (d1);
4 S  n5 r; H; b6 H
( j6 e( B$ H# e' C: u
    d1 := ord ( outchar [si + 3]);          //第 4 个 ' v' e$ p) j( U7 N0 Y
    d1 := gamestr [d1]; & c" m  Q" L. D( q
    outchar [si + 3] := chr (d1);
1 x# g6 L9 O- E1 u: T
1 o' c, }- G. k
    di := di + 3 ; + o* |3 i! Y+ r2 ^
    si := si + 4 ;     + D) D" _8 k4 {+ H4 P
    end;
4 z- x" t6 ]% ?1 q
end;
( y/ \# Q7 m3 Y  J
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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