Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o tema • Voltar para a ficha do tema
Incriptador Ant Desiscriptado
5 participantes
Aldeia RPG :: RPG Maker :: Rpg Maker XP :: Scripts
Página 1 de 1
Incriptador Ant Desiscriptado
Descrição
Metodos feitos para proteger jogos contra engines desencriptadoras como o RGSSAD Extractor
Scripts
KGC_InterfaceForWin32API
Este Script Permite RMXP/VX a Adquirir a WIN32API Interface, é requisitado pelo Encrypt Method
File Encrypt
Precisa explicar? =P
KGC_Compress Save File
Permite que arquivos saves ficam "encriptados" para evitar haking
Maiores Instruções
1º) Copie os 3 Scripts na Ordem
2º) É Necessário a "TCrypt.dll" para funcionar que pode ser encontrado no Anexo
3º) No Script KGC compress Save File Procure por esta linha:
Mude o que está entre parenteses para alguma coisa a gosto, Lembrandoque isto será como uma "Senha" que irá proteger o jogo portantocapriche porque se alguem descobrir acabou o desencrypt =/(sugiroseguir regras de segurança de criação de senhas e usar a "senha"Randomizada)
4º) no mesmo script citado acima procure isto:
Esta linha permite que o metodo funcione, se Colocar False ele nãoencripta o jogo(é recomendavel por False durante o periodo dedesenvolvimento do jogo para evitar problemas)
5º) NUNCA mude a CRYPT_KEY depois de criado um arquivo de save, pois irá crashear o save.
Notas e Observações
EsteMétodo Funciona tanto em RMXP quanto RMVX, Porém como todos os métodosdo mundo Não irá proteger 100% o seu projeto, mas irá dificultarmuitissimo a vida dos desencriptadores, aconselhavel e muito Usar.
Creditos
Criador > Mr. Anonymous
disponibilizador > aldosilva.
Metodos feitos para proteger jogos contra engines desencriptadoras como o RGSSAD Extractor
Scripts
KGC_InterfaceForWin32API
Este Script Permite RMXP/VX a Adquirir a WIN32API Interface, é requisitado pelo Encrypt Method
- Código:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ ◆ Win32API Interface - KGC_InterfaceForWin32API ◆ XP/VX ◆
#_/ ◇ Last Update: 2007/11/26 ◇
#_/ ◆ Translation by Mr. Anonymous ◆
#_/ ◆ KGC Site: ◆
#_/ ◆ http://f44.aaa.livedoor.jp/~ytomy/ ◆
#_/ ◆ Translator's Blog: ◆
#_/ ◆ http://mraprojects.wordpress.com ◆
#_/-----------------------------------------------------------------------------
#_/ Este Script Permite RMXP/VX a Adquirir a WIN32API Interface
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
class Win32API
STRING_BUF_SIZE = 255
#--------------------------------------------------------------------------
# ● Read INI File
# section : Section name
# key : Key
# default : default value when a key doesn't exist
# inifile : Passing of read INI file
#--------------------------------------------------------------------------
def self.GetPrivateProfileString(section, key, default, inifile)
get_ini = Win32API.new(
'kernel32.dll', 'GetPrivateProfileStringA', %w(p p p p l p), 'l')
buf = "\0" * (STRING_BUF_SIZE + 1)
get_ini.call(section, key, default, buf, STRING_BUF_SIZE, inifile)
return buf.delete!("\0")
end
#--------------------------------------------------------------------------
# ● Aquire Window
# window_class : Window class name
# window_title : Title of window
#--------------------------------------------------------------------------
def self.FindWindow(window_class, window_title)
find_window = Win32API.new('user32.dll', 'FindWindowA', %w(p p), 'l')
return find_window.call(window_class, window_title)
end
#--------------------------------------------------------------------------
# ● Aquire Active Window
#--------------------------------------------------------------------------
def self.GetActiveWindow
active_window = Win32API.new('user32.dll', 'GetActiveWindow', %w(v), 'l')
return active_window.call
end
#--------------------------------------------------------------------------
# ● Aquire Game Window
#--------------------------------------------------------------------------
def self.GetHwnd
name = GetPrivateProfileString("Game", "Title", "", "./Game.ini")
return FindWindow("RGSS Player", name)
end
end
File Encrypt
Precisa explicar? =P
- Código:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆ File Encrytion 2 - KGC_FileEncryption2 ◆ XP/VX ◆
#_/ ◇ Last Update: 2006/11/27 ◇
#_/ ◆ Translation by Mr. Anonymous ◆
#_/ ◆ KGC Site: ◆
#_/ ◆ http://f44.aaa.livedoor.jp/~ytomy/ ◆
#_/ ◆ Translator's Blog: ◆
#_/ ◆ http://mraprojects.wordpress.com ◆
#_/----------------------------------------------------------------------------
#_/ Installation: Insert above Main, below KGC_InterfaceForWin32API.
#_/ Requires TCrypt.dll
#_/============================================================================
#_/ This script encrypts your game data to an unhackable state.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
=begin
━━━━━━━━━━━━━━━━━━━ Methods ━━━━━━━━━━━━━━━━━━━━
┠─── Module - TCrypt ───────────────────────────
┃ version()
┃ - no arguments -
┃ Returns the version of "TCrypt.dll" by Integer.
┃
┃ encrypt(infile, outfile, key, mode[, bufsize])
┃ infile : Input file.
┃
┃ outfile : Output file.
┃
┃ key : Encryption key.
┃
┃ mode : Encryption mode.
┃ << 0..MKERS 1..MKES >>
┃
┃ bufsize : Buffer size. (Default: 4096Byte)
┃
┃
┃ Encrypts 'infile', and outputs it to 'outfile'.
┃
┃ decrypt(infile, outfile, key, mode[, bufsize])
┃ infile : Input file.
┃
┃ outfile : Output file.
┃
┃ key : Encryption key.
┃
┃ mode : Encryption mode.
┃ << 0..MKERS 1..MKES >>
┃
┃ bufsize : Buffer size. (Default: 4096Byte)
┃
┃ Decrypts 'infile', and outputs it to 'outfile'.
┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
=end
$imported = {} if $imported == nil
$imported["FileEncryption2"] = true
module TCrypt
# Code page
CP_UTF8 = 65001 # UTF-8
# Encryption mode
MODE_MKERS = 0 # MKERS
MODE_MKES = 1 # MKES
module_function
#--------------------------------------------------------------------------
# ○ 『TCrypt.dll』 aquired and converted
# (Example: 1.23 → 123)
#--------------------------------------------------------------------------
def version
begin
api = Win32API.new('TCrypt.dll', 'DllGetVersion', %w(v), 'l')
ret = api.call
rescue
ret = -1
end
return ret
end
#--------------------------------------------------------------------------
# ○ Encrytion
# infile: Input file name
# outfile: Output file name
# key: Encryption key
# mode: Encryption form
# bufsize: Size of buffer(16~1048576)
#--------------------------------------------------------------------------
def encrypt(infile, outfile, key, mode, bufsize = 4096)
begin
api = Win32API.new('TCrypt.dll', 'EncryptA', %w(l p p p l l l), 'l')
ret = api.call(0, infile, outfile, key, mode, bufsize, CP_UTF8)
rescue
ret = -1
end
return ret
end
#--------------------------------------------------------------------------
# ○ Decoding
# infile: Input file name
# outfile: Output file name
# key: Encryption key
# mode: Encryption form
# bufsize: Size of buffer(16~1048576)
#--------------------------------------------------------------------------
def decrypt(infile, outfile, key, mode, bufsize = 4096)
begin
api = Win32API.new('TCrypt.dll', 'DecryptA', %w(l p p p l l l), 'l')
ret = api.call(0, infile, outfile, key, mode, bufsize, CP_UTF8)
rescue
ret = -1
end
return ret
end
end
KGC_Compress Save File
Permite que arquivos saves ficam "encriptados" para evitar haking
- Código:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ◆ Compress Save File - KGC_CompressSaveFile ◆ VX ◆
#_/ ◇ Last Update: 2008/02/14 ◇
#_/ ◆ Translation by Mr. Anonymous ◆
#_/ ◆ KGC Site: ◆
#_/ ◆ http://f44.aaa.livedoor.jp/~ytomy/ ◆
#_/ ◆ Translator's Blog: ◆
#_/ ◆ http://mraprojects.wordpress.com ◆
#_/----------------------------------------------------------------------------
#_/ Installation: Insert above Main, below KGC_InterfaceForWin32API and below
#_/ KGC_FileEncryption2. Requires TCrypt.dll
#_/============================================================================
#_/ This script compresses save files to an unhackable state.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#=============================================================================#
# ★ Customization ★ #
#=============================================================================#
=begin
********************************************************************************
Note: Do not change the encryption key after you create a save file.
The save file created before this change will be rendered unreadable.
********************************************************************************
=end
module KGC
module CompressSaveFile
# ◆ Enable Encryption
# KGC_FileEncryption2, KGC_InterfaceForWin32API, AND TCrypt.dll are required
# for this to work.
ENABLE_CRYPT = true
# ◆ Encryption Key
# A random character string is recommended.
# Follow the general rules of creating password for the best effect.
# It's OK if this string is so long it protrudes off the screen.
CRYPT_KEY = "insertencryptionkeyhereplease"
end
end
#------------------------------------------------------------------------------#
$imported = {} if $imported == nil
$imported["CompressSaveFile"] = true
module KGC::CompressSaveFile
# Buffer Size
BUFSIZE = 256
# Temporary prefix for file name.
TEMP_PREFIX = "KGC"
module_function
#--------------------------------------------------------------------------
# ○ Create Temp File
# 作成した一時ファイルのパスを返す
#--------------------------------------------------------------------------
def create_temp_file
return Win32API.get_temp_filename(Win32API.get_temp_path)
end
#--------------------------------------------------------------------------
# ○ ファイルのコピー
# src : コピー元
# dest : コピー先
# keep_time_stamp : タイムスタンプ保持
#--------------------------------------------------------------------------
def copy_file(src, dest, keep_time_stamp = true)
infile = File.open(src, "rb")
time = infile.mtime
buf = infile.read
infile.close
File.open(dest, "wb") { |f| f.write(buf) }
File.utime(time, time, dest) if keep_time_stamp
end
#--------------------------------------------------------------------------
# ○ ファイルのエンコード
# filename : ファイル名
#--------------------------------------------------------------------------
def encode_file(filename)
compress_file(filename)
encrypt_file(filename)
end
#--------------------------------------------------------------------------
# ○ ファイルの圧縮
# filename : ファイル名
#--------------------------------------------------------------------------
def compress_file(filename)
buf = nil
File.open(filename, "rb") { |f| buf = f.read }
Zlib::GzipWriter.open(filename) { |gz| gz.write(buf) }
end
#--------------------------------------------------------------------------
# ○ ファイルの暗号化
# filename : ファイル名
#--------------------------------------------------------------------------
def encrypt_file(filename)
return 0 unless ENABLE_CRYPT # 暗号化無効
return 0 unless defined?(TCrypt) # 暗号化未導入
return TCrypt.encrypt(filename, filename, CRYPT_KEY, TCrypt::MODE_MKERS)
end
#--------------------------------------------------------------------------
# ○ ファイルのデコード
# filename : ファイル名
#--------------------------------------------------------------------------
def decode_file(filename)
decrypt_file(filename)
decompress_file(filename)
end
#--------------------------------------------------------------------------
# ○ ファイルの展開
# filename : ファイル名
#--------------------------------------------------------------------------
def decompress_file(filename)
buf = nil
File.open(filename, "rb") { |f|
begin
# 展開
gz = Zlib::GzipReader.new(f)
buf = gz.read
rescue
# 展開に失敗したら生データを使用
f.rewind
buf = f.read
ensure
gz.finish if gz != nil
end
}
File.open(filename, "wb") { |f| f.write(buf) }
end
#--------------------------------------------------------------------------
# ○ ファイルの復号
# filename : ファイル名
#--------------------------------------------------------------------------
def decrypt_file(filename)
return 0 unless defined?(TCrypt) # 暗号化未導入
return TCrypt.decrypt(filename, filename, CRYPT_KEY, TCrypt::MODE_MKERS)
end
end
#==================================End Class===================================#
#==============================================================================
# ■ Win32API
#==============================================================================
class Win32API
#--------------------------------------------------------------------------
# ○ 一時ファイルのパスを取得
#--------------------------------------------------------------------------
def self.get_temp_path
size = KGC::CompressSaveFile::BUFSIZE
buf = "\0" * size
api = Win32API.new('kernel32', 'GetTempPathA', %w(l p), 'l')
api.call(size, buf)
return buf.delete!("\0")
end
#--------------------------------------------------------------------------
# ○ 一時ファイル名の取得
# path : 一時ファイルを作成するパス
#--------------------------------------------------------------------------
def self.get_temp_filename(path)
size = KGC::CompressSaveFile::BUFSIZE
buf = "\0" * size
prefix = KGC::CompressSaveFile::TEMP_PREFIX
api = Win32API.new('kernel32', 'GetTempFileNameA', %w(p p l p), 'l')
api.call(path, prefix, 0, buf)
return buf.delete!("\0")
end
end
#==================================End Class===================================#
#==============================================================================
# ■ Window_SaveFile
#==============================================================================
class Window_SaveFile < Window_Base
#--------------------------------------------------------------------------
# ● ゲームデータの一部をロード
# スイッチや変数はデフォルトでは未使用 (地名表示などの拡張用) 。
#--------------------------------------------------------------------------
alias load_gamedata_KGC_CompressSaveFile load_gamedata
def load_gamedata
original_filename = @filename
original_file_exist = FileTest.exist?(original_filename)
if original_file_exist
# オリジナルのタイムスタンプを取得
time = nil
File.open(original_filename) { |f| time = f.mtime }
# 一時ファイルを作成
@filename = KGC::CompressSaveFile.create_temp_file
KGC::CompressSaveFile.copy_file(original_filename, @filename)
KGC::CompressSaveFile.decode_file(@filename)
# 一時ファイルのタイムスタンプをオリジナルと同一にする
File.utime(time, time, @filename)
end
load_gamedata_KGC_CompressSaveFile
if original_file_exist
# 一時ファイルを削除
File.delete(@filename)
# ロードに失敗したらタイムスタンプを初期化
@time_stamp = Time.at(0) unless @file_exist
Graphics.frame_reset
end
@filename = original_filename
end
end
#==================================End Class===================================#
#==============================================================================
# ■ Scene_File
#==============================================================================
class Scene_File < Scene_Base
#--------------------------------------------------------------------------
# ● セーブの実行
#--------------------------------------------------------------------------
alias do_save_KGC_CompressSaveFile do_save
def do_save
do_save_KGC_CompressSaveFile
filename = @savefile_windows[@index].filename
KGC::CompressSaveFile.encode_file(filename)
end
#--------------------------------------------------------------------------
# ● ロードの実行
#--------------------------------------------------------------------------
alias do_load_KGC_CompressSaveFile do_load
def do_load
filename = @savefile_windows[@index].filename
tempfilename = KGC::CompressSaveFile.create_temp_file
# オリジナルファイルを退避
KGC::CompressSaveFile.copy_file(filename, tempfilename)
KGC::CompressSaveFile.decode_file(filename)
do_load_KGC_CompressSaveFile
# オリジナルファイルを復元
KGC::CompressSaveFile.copy_file(tempfilename, filename)
File.delete(tempfilename)
Graphics.frame_reset
end
end
#==================================End Class===================================#
Maiores Instruções
1º) Copie os 3 Scripts na Ordem
2º) É Necessário a "TCrypt.dll" para funcionar que pode ser encontrado no Anexo
3º) No Script KGC compress Save File Procure por esta linha:
- Código:
CRYPT_KEY = "insertencryptionkeyhereplease"
Mude o que está entre parenteses para alguma coisa a gosto, Lembrandoque isto será como uma "Senha" que irá proteger o jogo portantocapriche porque se alguem descobrir acabou o desencrypt =/(sugiroseguir regras de segurança de criação de senhas e usar a "senha"Randomizada)
4º) no mesmo script citado acima procure isto:
- Código:
ENABLE_CRYPT = true
Esta linha permite que o metodo funcione, se Colocar False ele nãoencripta o jogo(é recomendavel por False durante o periodo dedesenvolvimento do jogo para evitar problemas)
5º) NUNCA mude a CRYPT_KEY depois de criado um arquivo de save, pois irá crashear o save.
Notas e Observações
EsteMétodo Funciona tanto em RMXP quanto RMVX, Porém como todos os métodosdo mundo Não irá proteger 100% o seu projeto, mas irá dificultarmuitissimo a vida dos desencriptadores, aconselhavel e muito Usar.
Creditos
Criador > Mr. Anonymous
disponibilizador > aldosilva.
Última edição por aldosilva. em Qui Nov 18, 2010 1:20 pm, editado 1 vez(es)
The Suspect- Ocasional
- Mensagens : 206
Créditos : 83
Re: Incriptador Ant Desiscriptado
tem geito melhor de se proteger mais ninguem fala intao postei esse para quebra o galho de us aew
Última edição por aldosilva. em Qua Nov 17, 2010 11:37 pm, editado 1 vez(es)
The Suspect- Ocasional
- Mensagens : 206
Créditos : 83
Re: Incriptador Ant Desiscriptado
Muito bom Aldo, vai proteger o pessoal contra os outros que roubam sistemas.
+1 cred.
+1 cred.
_________________
Re: Incriptador Ant Desiscriptado
vlw pelo credi..
Última edição por aldosilva. em Qua Nov 17, 2010 11:37 pm, editado 1 vez(es)
The Suspect- Ocasional
- Mensagens : 206
Créditos : 83
Re: Incriptador Ant Desiscriptado
Eu nao consegui mecher com isso ://
eu segui tudo direitinho mais da erro, depois posto o erro que deu
@aldo, voce é mod e dando DB :O
eu segui tudo direitinho mais da erro, depois posto o erro que deu
@aldo, voce é mod e dando DB :O
Theu Souto- Iniciante
- Mensagens : 67
Créditos : 13
Re: Incriptador Ant Desiscriptado
um dos maiores problemas do rmxp, é que todos esses métodos pode ser facilmente diblados, modificando o RGSSAD Extractor
Re: Incriptador Ant Desiscriptado
Po muito maneiro.
_________________
Dean, Programador Geral :)
Contato: Skype:matucarvalho e Facebook
The Enze - Vulzt
Shield Block
Contato: Skype:matucarvalho e Facebook
The Enze - Vulzt
Shield Block
Anti-Cheat para jogos de FPS, agora vou adaptar para jogos de RPG principalmente para o RMXP.
www.shieldblock.net
fb.com/shieldblockoficial
Aldeia RPG :: RPG Maker :: Rpg Maker XP :: Scripts
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos