Descrição do Script
Script criado para proteger seus arquivos contra engines desencriptadores como o RGSSAD Extractor e melhorar a função de muitos arquivos.
O script Permite RMXP a Adquirir a WIN32API Interface, é requisitado pelo Encrypt Method, por tanto adicionei esses 3 Script acima do Mail em Ordem:
Nomeia o nome do Script: [PTC]KGC_InterfaceForWin32API
Primeiro requisito: copie os 3 script na ordem para ser funcional como citei na imagem acima.
Segundo requisito: É Necessário o download da DLL "TCrypt.dll" para funcionar corretamente, já que vai ser ultra mega importância ele no script, e vou disponibilizar o download logo abaixo.
Terceiro requisito: No Script KGC compress Save File procure por esta linha que se encontra no número 37 para realizar com sucesso:
Devemos mudar esse nome que está entre parenteses para alguma outra senha que seja bastante difícil que ninguém possa entender, lembrando que isso será como uma senha que irá proteger o seu jogo contras scriptadores, como se fosse o seu IP fixo que ninguém saiba. a conselho ter bastantes conhecimentos com regras de seguranças.
Quarto requisito: no mesmo script citado acima procure isto na linha 32
Está linha fará que o script funcione corretamente, se você mudar para false ele não está mais protegido contras encriptar, mas sugiro você usar False durante o período de modificações do seu sistemas, para evitar problemas correspondentes em criar ou adicionar algum script
Quinto requisito: muito importante, nunca mude a senha que está entre "CRYPT_KEY" depois de criado um arquivo de save, pois irá crashear o jogo.
Minha Opinião: Esse script é compatível com o Netplay Master V4.0.7 e o MRVX. Porém como todos os métodos do mundo não irá proteger 100% o seu projeto, mas irá dificultar muito a vida dos desencriptadores, aconselhável muito usar.
Sexto requisito: Download necessário para o funcionamento do Script, Extrair no seu sistemas. http://www.download.com/TCrypt.dll
Créditos: ao criador do script pelo o seu fascinante trabalho em desenvolver para proteger os sistemas, também a todos que copeirarão e Crédito a mim por postar aqui na Aldeia para facilitar a vida dos markers
Script criado para proteger seus arquivos contra engines desencriptadores como o RGSSAD Extractor e melhorar a função de muitos arquivos.
O script Permite RMXP a Adquirir a WIN32API Interface, é requisitado pelo Encrypt Method, por tanto adicionei esses 3 Script acima do Mail em Ordem:
Nomeia o nome do Script: [PTC]KGC_InterfaceForWin32API
- Spoiler:
- 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
- Spoiler:
- 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
- Spoiler:
- 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 = false
# ◆ 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===================================#
Primeiro requisito: copie os 3 script na ordem para ser funcional como citei na imagem acima.
Segundo requisito: É Necessário o download da DLL "TCrypt.dll" para funcionar corretamente, já que vai ser ultra mega importância ele no script, e vou disponibilizar o download logo abaixo.
Terceiro requisito: No Script KGC compress Save File procure por esta linha que se encontra no número 37 para realizar com sucesso:
- Código:
CRYPT_KEY = "insertencryptionkeyhereplease"
Devemos mudar esse nome que está entre parenteses para alguma outra senha que seja bastante difícil que ninguém possa entender, lembrando que isso será como uma senha que irá proteger o seu jogo contras scriptadores, como se fosse o seu IP fixo que ninguém saiba. a conselho ter bastantes conhecimentos com regras de seguranças.
Quarto requisito: no mesmo script citado acima procure isto na linha 32
- Código:
ENABLE_CRYPT = true
Está linha fará que o script funcione corretamente, se você mudar para false ele não está mais protegido contras encriptar, mas sugiro você usar False durante o período de modificações do seu sistemas, para evitar problemas correspondentes em criar ou adicionar algum script
Quinto requisito: muito importante, nunca mude a senha que está entre "CRYPT_KEY" depois de criado um arquivo de save, pois irá crashear o jogo.
Minha Opinião: Esse script é compatível com o Netplay Master V4.0.7 e o MRVX. Porém como todos os métodos do mundo não irá proteger 100% o seu projeto, mas irá dificultar muito a vida dos desencriptadores, aconselhável muito usar.
Sexto requisito: Download necessário para o funcionamento do Script, Extrair no seu sistemas. http://www.download.com/TCrypt.dll
Créditos: ao criador do script pelo o seu fascinante trabalho em desenvolver para proteger os sistemas, também a todos que copeirarão e Crédito a mim por postar aqui na Aldeia para facilitar a vida dos markers