Suporte no desenvolvimento de jogos


    Ant Descriptador Compatível com o NetplayV4.0.7

    Adanrox
    Adanrox
    Diva
    Diva

    Mensagens : 517
    Créditos : 74
    Cash : 0

    Ficha do personagem
    Nível: 1
    Experiência:
    Ant Descriptador Compatível com o NetplayV4.0.7 Left_bar_bleue0/0Ant Descriptador Compatível com o NetplayV4.0.7 Empty_bar_bleue  (0/0)
    Vida:
    Ant Descriptador Compatível com o NetplayV4.0.7 Left_bar_bleue30/30Ant Descriptador Compatível com o NetplayV4.0.7 Empty_bar_bleue  (30/30)

    Ant Descriptador Compatível com o NetplayV4.0.7 Empty Ant Descriptador Compatível com o NetplayV4.0.7

    Mensagem por Adanrox em Sab Mar 29, 2014 7:45 pm

    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:
    Ant Descriptador Compatível com o NetplayV4.0.7 QRArh56

    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

    Nomeia o nome do Script para: [PTC] KGC_FileEncryption2
    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
    Nomeia o nome do Script para: [PTC] KGC_CompressSaveFile
    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===================================#
    Tutorial Prático e fácil:
    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 requisitoNo 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


    _________________
    Ant Descriptador Compatível com o NetplayV4.0.7 EiLDYSs
    avatar
    Trpino
    Membro Ativo
    Membro Ativo

    Mensagens : 299
    Créditos : 12
    Cash : 0

    Ficha do personagem
    Nível: 1
    Experiência:
    Ant Descriptador Compatível com o NetplayV4.0.7 Left_bar_bleue0/0Ant Descriptador Compatível com o NetplayV4.0.7 Empty_bar_bleue  (0/0)
    Vida:
    Ant Descriptador Compatível com o NetplayV4.0.7 Left_bar_bleue30/30Ant Descriptador Compatível com o NetplayV4.0.7 Empty_bar_bleue  (30/30)

    Ant Descriptador Compatível com o NetplayV4.0.7 Empty Re: Ant Descriptador Compatível com o NetplayV4.0.7

    Mensagem por Trpino em Sab Mar 29, 2014 11:19 pm

    Mito bom mesmo, e bem esperado de ti este tipo de coisas.
    Manda um projecto para se testar e ver quem consegue desemcripetar ele, poder melhora-lo ainda mais.

    esta e uma opinião minha.


    _________________
                                                                                                                                          
    mrpurple
    mrpurple
    Semi-Experiente
    Semi-Experiente

    Mensagens : 147
    Créditos : 34
    Cash : 0

    Ant Descriptador Compatível com o NetplayV4.0.7 Empty Re: Ant Descriptador Compatível com o NetplayV4.0.7

    Mensagem por mrpurple em Qui Abr 10, 2014 11:56 pm

    Muito bom, obrigado por ter disponibilizado. :)


    _________________
    #mrpurple_
    avatar
    kinhoccs
    Iniciante
    Iniciante

    Mensagens : 50
    Créditos : 2
    Cash : 0

    Ant Descriptador Compatível com o NetplayV4.0.7 Empty Re: Ant Descriptador Compatível com o NetplayV4.0.7

    Mensagem por kinhoccs em Qua Set 17, 2014 8:35 pm

    Parabéns cara, foi de muita utilidade pra mim..  Very Happy
    GallighanMaker
    GallighanMaker
    Aldeia Friend
    Aldeia Friend

    Medalhas : Ant Descriptador Compatível com o NetplayV4.0.7 ZgLkiRU
    Mensagens : 913
    Créditos : 90
    Cash : 0

    Ficha do personagem
    Nível: 1
    Experiência:
    Ant Descriptador Compatível com o NetplayV4.0.7 Left_bar_bleue0/0Ant Descriptador Compatível com o NetplayV4.0.7 Empty_bar_bleue  (0/0)
    Vida:
    Ant Descriptador Compatível com o NetplayV4.0.7 Left_bar_bleue30/30Ant Descriptador Compatível com o NetplayV4.0.7 Empty_bar_bleue  (30/30)

    Ant Descriptador Compatível com o NetplayV4.0.7 Empty Re: Ant Descriptador Compatível com o NetplayV4.0.7

    Mensagem por GallighanMaker em Sex Out 31, 2014 4:10 pm

    ele bloqueia o "RGSSAD - RGSS2A - RGSS3A Decrypter"? pelo que eu saiba esse software é complicado de se parar ;x


    _________________
    @IndieDB @Steam Concept
    Ant Descriptador Compatível com o NetplayV4.0.7 41324
    --
    leoXP
    leoXP
    Ocasional
    Ocasional

    Mensagens : 219
    Créditos : 5
    Cash : 0

    Ficha do personagem
    Nível: 1
    Experiência:
    Ant Descriptador Compatível com o NetplayV4.0.7 Left_bar_bleue0/0Ant Descriptador Compatível com o NetplayV4.0.7 Empty_bar_bleue  (0/0)
    Vida:
    Ant Descriptador Compatível com o NetplayV4.0.7 Left_bar_bleue30/30Ant Descriptador Compatível com o NetplayV4.0.7 Empty_bar_bleue  (30/30)

    Ant Descriptador Compatível com o NetplayV4.0.7 Empty Re: Ant Descriptador Compatível com o NetplayV4.0.7

    Mensagem por leoXP em Dom Nov 16, 2014 7:21 pm

    Tenho uma duvida em relacao ao script para ele funcionar voce deve encrypitar o jogo normalmente com a encripitacao padrao do rpg maker??

    Conteúdo patrocinado

    Ant Descriptador Compatível com o NetplayV4.0.7 Empty Re: Ant Descriptador Compatível com o NetplayV4.0.7

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qui Jul 18, 2019 7:55 am