游客您好
  • 点击联系客服

    在线时间: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 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
千年加密解密代码....虽然看起来挺复杂的.我是对应汇编的.编译后几乎和游戏客户端里的一样...保证了速度.. 0 f$ j9 m' W0 T
二次解密代码我还没去搞.不过一次解密足够了.可以制出很多功能外挂.如自动拾取.吃药.等等...二次解密加密主要用于怪物坐标用的.(自动练功需要解析怪物坐标要用)
, s+ e8 g5 a) H, M3 A' s7 ^

9 ]+ X* q1 l: L! u* w
声明部分 ' @/ w- q9 ^1 ]7 K$ q% {
//二种声方法均可 6 _5 O4 }8 L( y( {. S
//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’;   W9 b5 f: l/ e/ Z. a3 I
const gamestr : array [0..127] of byte =
2 f+ g* |- O3 Y! k" W
($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);     
. t; t- l; ]" t1 a+ A/ k

9 Q. \/ B) ^/ E! b+ `
代码部分 5 z0 o- s( t+ L
function decode (inchar:pchar; len:integer ; outchar:pchar):integer;   //解密
4 i& v( A1 U4 x1 }" ]4 f
var ) z% G, u* Q$ [* ^$ V
   a1, d1: byte; 1 g. C; U/ N. S7 q. ~
   j, count, di, si :integer; 1 v4 ]- F1 X) h( `3 D9 q0 i
begin # H8 }1 k- w: m* _4 M
  decode := len div 4 * 3 ;  //返回解密后数据长度 . A: L) f( w3 j& V
  j := 0;
* [0 B# v7 X6 u: \6 U+ K% M
  while i < len do   S' }& j0 U9 n- ?/ x) J
    begin
1 T* x7 J. A" D" Y/ N# U
      d1 := byte (inchar[j] );
% @; i/ y6 R- Z- }: Y
      if ( d1 = $3B ) or (d1 = $7A) then
; K* B, d: J$ l$ d+ r/ O
        begin
/ p) T5 M+ k% {, Q( R
        end; 5 Q7 v* E6 O5 D0 A! [  Y  a$ E" m
      d1 := d1 and {&content}FF; - {* K" t/ q, p, N
      d1 := gamestr [d1 + 05];               //d1 := byte ( gamestr [ 1 + d1 ] );
4 V; J7 L9 f+ `+ A5 Q3 D3 y$ O0 Q: U
      byte (inchar [j] ) := d1;         // 根据不同的gamestr数据定义选用不现的方法
6 U( r& x, x) l
      inc (i);
3 |* X9 ^( D/ O
    end;
# a7 B0 S8 A* ]9 ^  o+ D+ u8 ]/ b

. ~% e! P# ~  j. W9 G  j
  di := 0 ; . F: q1 P7 T/ ~0 Q6 n. s# U
  si := 0 ;   + \7 Y; i* }% ~# |' M- U
  count := len div 4 ;                        //循环次数 ; d2 u- r8 E3 g. m3 K
  for j := 1 to count do , E1 y1 b3 @0 L2 C; C
    begin / \, s# O, y1 @! ~  c
      a1 := ord ( inchar [di]);               //解密数据 (取4个.转化3个)
% g$ V+ Z+ C" ]! s6 D& ?4 e
      a1 := a1 shl 2 ; 9 D& D) z" o( h/ J( e5 M2 C
      d1 := ord ( inchar [di + 1]); 0 F+ d3 O& ]# g+ D
      d1 := d1 shr 4 ;   D/ J$ n- [0 b6 V2 Q" W' i! W
      a1 := a1 or d1 ;
' `$ S7 m4 g* Z: X- I
      outchar[si] := chr (a1);
/ \3 S$ b6 P7 S0 S$ P% Y
9 |0 v. T1 ]  u
      a1 := ord ( inchar [di + 1]);
8 b9 f1 ~, \% ~' u& l
      a1 := a1 shl 4 ;
9 m4 g# u( f2 A% ?# t7 z
      d1 := ord ( inchar [di + 2]);
' M& O1 \+ L: ~+ c) E. ^; T
      d1 := d1 shr 2 ;
, h$ J6 `" P: x7 ~) @* b5 v
      a1 := a1 or d1 ;
" |" e( O9 o: ?" W" H/ N4 v
      outchar[si + 1] := chr (a1); # C5 _- M% w. x6 Y  G8 t
   % Y% C1 W$ E! k% ]4 A+ j  ]
      a1 := ord ( inchar [di + 2]);
8 I3 N  ^' C9 K
      a1 := a1 shl 6 ;
* y3 |; v# G0 \* o# `. U2 C! a
      d1 := ord ( inchar [di + 3]);
2 o+ q' o8 @- w+ g+ Q5 r
      a1 := a1 or d1 ;   A; I2 j! T7 {& q
      outchar[si + 2] := chr (a1);
9 ?+ T- O$ J/ g
* A; E% ]8 i( O" S# o  ]
      di := di + 4 ;     
1 X( K1 `* ]& H4 h- h5 f
      si := si + 3 ;
4 P0 d# u, G+ j  `3 k
  end;
/ g) B3 X+ N2 k- A% M; I9 \1 L
end;
9 x: ?# m! r. z( ]  i5 h! S

6 O4 o  q. k5 E* M, p
function encode (inchar:pchar; len:integer ; outchar:pchar):integer;   //加密
' k0 W2 `- K; g3 |- U* r
var
% `% C1 k% [5 ]
  a1, d1 :byte; . j. q5 x- l6 e7 Y
  j,count,di,si :integer; 0 p4 Q4 }1 V3 T; W% e
! [& k9 f, m# O, m( j
begin 1 h9 C3 c; f4 p$ H* k
  encode := len div 3 * 4 ;  //返回加密后数据长度   p+ m9 d' Z, E% @
  di := 0 ; . W- p5 d& ^" w
  si := 0 ; , D7 y5 m& s! @# @' R
  count := len div 3;           //定义循环次数 6 I! U# n% G7 Q" X$ ~$ D. V6 d
  for j := 1 to count do , H( t" q$ n( W: o! W0 c5 y! K
    begin 5 V9 k7 x; I0 z$ @' h4 O( N! c
    a1 := ord ( inchar [di]);   //第一次转换  取3个 输出4个
% b4 S9 s6 P' Q. Y5 e
    a1 := a1 shr 2 ; # n; H+ I# {1 D
    outchar [si] := chr (a1);
+ ?4 v( ]+ X/ t8 O. j/ M+ {
6 D: \0 \, n& U1 T- K8 w8 D$ X
    a1 := ord (inchar[di]); # j# b( `6 h6 C( W* g3 F$ n) I. j& A
    a1 := a1 and 3 ;
/ J! G+ N$ E* y* f! s
    a1 := a1 shl 4 ; 8 c2 S9 O* m. O4 S  _
    d1 := ord (inchar[di +1]);
3 M/ _) t( g. l0 }$ j  r5 h
    d1 := d1 shr 4 ; 3 ]* Q" W( j4 {9 `( x
    a1 := a1 or d1 ; 7 V% g: _/ t; f; X
    outchar[si +1] := chr (a1) ;
8 E  W. j2 l1 p, \

7 u0 T& R) ^! c& _
    a1 := ord ( inchar[di + 1]) ; " e# i/ I  H8 \3 H, z7 y  W
    a1 := a1 and {&content}F ; - m5 u; m( u( q2 J7 @- ~
    a1 := a1 shl 2 ; 8 a: `* ]! n" ^+ j! y7 f  {7 z: L
    d1 := ord ( inchar[di + 2]) ; ) n- E; T0 F$ k0 {
    d1 := d1 shr 6 ;
8 ]* ?& e% p  @
    a1 := a1 or d1 ;
5 W7 Z9 ~# l. N: T
    outchar[si + 2] := chr (a1);
/ ~  e$ A0 A2 E5 ~3 @) c

* [8 N9 E1 e' Z$ w
    a1 := ord ( inchar[di + 2]) ; # P2 A8 X$ w6 x' k8 V
    a1 := a1 and $3F; 8 X( _# O% M5 x; ]$ ?1 d
    outchar[si + 3] := chr (a1) ; - k8 z" Q" d6 j! u& Z+ ~, X

5 L  P# y* x2 h# G; a4 Z" M
    //第二次转换 7 i8 W# `: m  E* J+ J8 ~
    d1 := ord ( outchar [si]);          //第 1 个 1 g  r+ K0 s  I. F
    d1 := gamestr [d1];
3 y8 p/ {9 t, h- G& X2 M
    outchar [si] := chr (d1); + W$ \2 I* a, T
8 @; C1 O, ?2 A/ n0 w/ S+ \
    d1 := ord ( outchar [si + 1]);          //第 2 个 2 J8 E" G2 E' H
    d1 := gamestr [d1];
' @' m6 ?* v7 g9 S% H- ]$ O* p+ C. y2 {
    outchar [si + 1] := chr (d1); ( x, C/ L, O- Z( ]/ T

. g) Z1 k; ]. t3 e
    d1 := ord ( outchar [si + 2 ]);          //第 3 个 ! h  |  @: C$ _) c& p2 s: `& @1 a$ R
    d1 := gamestr [d1]; ; ?  I( |- B; F" L# w
    outchar [si + 2] := chr (d1);
; p/ n8 C% D- U/ H- Z) h

) s) X* b& ]$ v( d4 Z4 u4 |7 V
    d1 := ord ( outchar [si + 3]);          //第 4 个 # e; d3 R# @$ z! g- ?
    d1 := gamestr [d1];
1 U; }- I% H1 e; H  u
    outchar [si + 3] := chr (d1); ; `0 r) v/ i! B7 A

7 G0 V# e8 Q2 R# Q% v+ E' n) ~
    di := di + 3 ;
4 F" a, D2 T+ f0 J+ K  d
    si := si + 4 ;     $ w% n1 _% ~( @0 f9 [0 n4 O
    end;
" [. W* X( `9 f9 X1 H* d1 s
end;
. U/ g5 p1 A3 Y1 B- J
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

三千游戏官方客服

扫一扫二维码

添加qq客服

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