游客您好
  • 点击联系客服

    在线时间: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 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
千年加密解密代码....虽然看起来挺复杂的.我是对应汇编的.编译后几乎和游戏客户端里的一样...保证了速度.. * l  J  _' v: t; w; N, C; F
二次解密代码我还没去搞.不过一次解密足够了.可以制出很多功能外挂.如自动拾取.吃药.等等...二次解密加密主要用于怪物坐标用的.(自动练功需要解析怪物坐标要用) 6 T: E2 n" K  `* y% q
5 P, ?2 _7 g" z, [$ z, U& N
声明部分
$ m7 S' P3 c& F% ?  [# e
//二种声方法均可 + Q* k9 {1 u  ]
//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’;
6 r. U6 W2 s/ Y6 ~( m: v/ O
const gamestr : array [0..127] of byte =
" R8 G: N& O  B: ]% ~" u7 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);     
; X# q! S' e4 c' K
0 s7 n% F9 v; u; h
代码部分 , h" _* M& V& d: u
function decode (inchar:pchar; len:integer ; outchar:pchar):integer;   //解密
' S) v2 d# S0 L% o3 ?
var
6 t7 F0 Z$ u7 ~
   a1, d1: byte; 7 q" @! W. c5 d, \. T: v( e
   j, count, di, si :integer; " m/ G: k$ a+ b6 A) ~3 }" H
begin
4 q) ^, H% e  u, ^8 H6 U/ T& m
  decode := len div 4 * 3 ;  //返回解密后数据长度
* f2 ~2 c8 v) M2 e
  j := 0; / E* Q3 Q" r4 n9 H
  while i < len do 2 S7 X; f& r# v0 R8 V6 i1 F
    begin ! C. Z( q8 u- x3 L+ R) y: `) o! B
      d1 := byte (inchar[j] );
/ ?! c" p' _" l" t& W( @
      if ( d1 = $3B ) or (d1 = $7A) then
  k) E5 r8 {3 B$ S0 C" u7 q
        begin
0 ]( [/ g  w0 y
        end;
; U' |: `, ]& G
      d1 := d1 and {&content}FF;
8 }) t- J8 h3 x! i& ?" \
      d1 := gamestr [d1 + 05];               //d1 := byte ( gamestr [ 1 + d1 ] ); ! I6 y+ V' P4 T3 ]( D- Q4 [
      byte (inchar [j] ) := d1;         // 根据不同的gamestr数据定义选用不现的方法 0 J$ ~  _& x0 h7 m. W: m
      inc (i);
0 g% X" O" _. A. V
    end; 4 r8 X! A: A' |
: v% d0 p7 P1 v
  di := 0 ;   r' {! ]- [6 O3 L
  si := 0 ;   
% e& k7 e+ W" i1 Z
  count := len div 4 ;                        //循环次数
* |5 R8 S, ~( C5 N- v
  for j := 1 to count do 4 I9 E8 g: B" X1 t( M5 @3 d) a7 k
    begin $ u1 C4 v0 Z3 Q
      a1 := ord ( inchar [di]);               //解密数据 (取4个.转化3个) 3 `" Z+ T( O  {* N" E/ X- z
      a1 := a1 shl 2 ;
* J( D, C# V' {# \. p  N* l% ?
      d1 := ord ( inchar [di + 1]); , o7 H. E$ M9 Z
      d1 := d1 shr 4 ; 3 }% m/ O8 L% I/ y
      a1 := a1 or d1 ; " T& E, w3 W. [
      outchar[si] := chr (a1);
/ f+ J' L, Z# u5 d. V

- |: w% ~8 Q5 l6 ?4 A
      a1 := ord ( inchar [di + 1]); ; B9 l: m7 X  P. [* k" y* ~! k
      a1 := a1 shl 4 ;
5 [5 Y) B  Y% s) J0 w, C
      d1 := ord ( inchar [di + 2]); 7 J6 K( ~: o. x, X4 S+ a* J! x
      d1 := d1 shr 2 ;
$ k) F0 t# A/ B, F4 g  p' M8 s
      a1 := a1 or d1 ;
; S. N, O: Z" c# U, G2 M+ P2 k
      outchar[si + 1] := chr (a1);
/ e; `" c/ x5 W$ {; H- G; B
     N& h3 J* X6 B8 k8 o: l7 X# b
      a1 := ord ( inchar [di + 2]);
8 d) `" i  |: x; _. {' X
      a1 := a1 shl 6 ; 6 \3 d* E0 F/ g. d; O
      d1 := ord ( inchar [di + 3]); 2 ?: s) a! g/ f; H8 n
      a1 := a1 or d1 ;
8 e. n) N& n8 s  f' r8 n2 [% k7 L
      outchar[si + 2] := chr (a1);
4 \/ |/ a3 c5 I( F! b4 i
, B& z0 B4 s5 E0 }3 [( z" L" c: j
      di := di + 4 ;     
' N7 m5 Y  u" ]' t1 C3 t
      si := si + 3 ;
9 c0 c' G" x7 n2 x
  end; 1 O# f/ Z' p4 T! o
end;
$ m' o  P, V9 p# f5 O- m
$ A; o$ Y* `3 n" X7 L5 j
function encode (inchar:pchar; len:integer ; outchar:pchar):integer;   //加密 2 P8 ~! U( m/ t* _4 X
var
& j8 }' q5 S9 G" c* B9 N! U
  a1, d1 :byte; + j- p; |: `. h3 m2 }
  j,count,di,si :integer; ) o$ X8 B8 d1 U9 k9 b) M. Q

4 @6 {8 {  S4 ]9 s
begin 1 D. g$ n1 B9 P' W  H- l) T" O
  encode := len div 3 * 4 ;  //返回加密后数据长度
! W- D9 g# Y3 Z% I4 V
  di := 0 ;
, w) p- m& m; c. n+ ]
  si := 0 ;
( }9 S' C9 ~( Q% X
  count := len div 3;           //定义循环次数 % x, `- Z+ @$ M% p' j% X  d6 m4 X
  for j := 1 to count do
/ K0 T# q* ?7 @) D- s% J
    begin 0 n/ ]# w3 r; _( @; m" ~% o6 T+ w
    a1 := ord ( inchar [di]);   //第一次转换  取3个 输出4个 1 e, @; H& E+ a0 ?, ^
    a1 := a1 shr 2 ;
  k6 Z0 v) \0 j- L# W  l+ t% c
    outchar [si] := chr (a1);
+ ?3 Y  ?$ c* q) y' M  K, }( Q

. `3 y9 \3 A* S! S5 ^2 w# Z
    a1 := ord (inchar[di]); 1 _1 S  V$ J8 G' q. g
    a1 := a1 and 3 ;
0 K3 T# H- k8 u' j8 ^2 E6 J! E
    a1 := a1 shl 4 ;
! y# N! u+ {& z) X
    d1 := ord (inchar[di +1]);
7 f" o, ]- q# P
    d1 := d1 shr 4 ;
8 B" O, t' f- E
    a1 := a1 or d1 ; " B) K. F% e! {
    outchar[si +1] := chr (a1) ;
) e; Z7 B: G( Y- i. q) O
, P8 o2 W) `1 H8 K- w8 c  l, @
    a1 := ord ( inchar[di + 1]) ;
9 s- Z( c; R" K
    a1 := a1 and {&content}F ;
( P/ M' W  |4 T/ E; X
    a1 := a1 shl 2 ;
2 K, \0 ]* v+ ?# h+ ^8 I/ q0 M& [
    d1 := ord ( inchar[di + 2]) ; & {; V. j7 c# T, I+ W' ?; V7 }
    d1 := d1 shr 6 ;
) Q# x, a- P0 `" H! w  J
    a1 := a1 or d1 ; 0 q' u# p9 Y/ m5 m* |) E0 E
    outchar[si + 2] := chr (a1); & r' p5 ^. [2 y- e& t

2 E3 o% \# M' v. @  m; S* ]
    a1 := ord ( inchar[di + 2]) ; ; P2 d' }+ e6 |% r9 H
    a1 := a1 and $3F; 0 C6 Q- b0 s* z# `; h% @
    outchar[si + 3] := chr (a1) ;
6 ]5 u* G% n7 a3 v7 {' r
" b) y+ v( H" h5 ?' u' Y* z
    //第二次转换 4 H8 p1 H/ B; k' y
    d1 := ord ( outchar [si]);          //第 1 个
8 t0 T: P# w' ]7 i. L; @/ F
    d1 := gamestr [d1]; 8 _; Z7 h. {% S) w  U
    outchar [si] := chr (d1); 7 v. j6 X- A, W& w

8 Z$ P/ a9 r% w0 Z9 S, c5 Z
    d1 := ord ( outchar [si + 1]);          //第 2 个
/ w1 I0 h/ M( e+ e8 {3 G
    d1 := gamestr [d1];
2 E, Q2 B6 Z# s/ u
    outchar [si + 1] := chr (d1);
3 O& w8 T& |! E6 @, _; h9 P1 |' D
9 I2 p* C4 @6 D. P/ O2 D; |
    d1 := ord ( outchar [si + 2 ]);          //第 3 个 * w& a8 G' H- g( I5 @+ i
    d1 := gamestr [d1]; , u9 T, V' {$ f. W
    outchar [si + 2] := chr (d1); 1 H; ^. s! b1 e9 }+ v

$ R' X8 _+ i( {" v0 @' A2 v9 ^
    d1 := ord ( outchar [si + 3]);          //第 4 个
+ T& m( Q! X$ f. C# e9 D- C
    d1 := gamestr [d1];
# F# _- {: _7 @$ N3 [3 P
    outchar [si + 3] := chr (d1);
. r$ d3 m/ m  {. P3 J

) p4 A0 w, a* U8 G
    di := di + 3 ;
; s0 u* a" W8 K; \' V( J9 u
    si := si + 4 ;     ' o2 Q5 b  z; _) B1 H
    end;
, K# C  S9 _7 D- i0 S
end;

* H/ o* `# {: M% O$ f  _! m9 R
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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