精华内容
下载资源
问答
  • 简介Pyhton是一个脚本语言,在运行Python代码时,最终由Python解释器来执行。...下面为一些文件格式:.py: Python代码文件。对于一些开源项目,发布方也许会直接提供源码,但是使用时需要安装依赖库.py...

    简介

    Pyhton是一个脚本语言,在运行Python代码时,最终由Python解释器来执行。解释器就是Python的运行环境,但是除了开发人员,大部分人在使用时并不会安装Python。所以官方就提供了一些打包程序,将代码与解释环境打包到二进制文件中,方便在各种操作系统中运行。

    下面为一些文件格式:

    .py: Python代码文件。对于一些开源项目,发布方也许会直接提供源码,但是使用时需要安装依赖库

    .pyc: 源码编译后的中间式文件,其目的是为了加快下次运行时的速度。不能直接运行,需要python虚拟机的支持才可以运行,类似于java、.net平台的中的虚拟机,因此可以pyc文件可以跨平台执行。不同的python编译出的pyc文件是不同的,例如python2.4编译出的pyc文件,2.5不可以使用

    可执行文件:针对得专业人员,直接提供可执行文件,只需要了解使用方法即可,缺点是可移植性差,需要针对不同的操作系统,生成可执行文件。

    下面是一些打包为可执行文件的方法:

    下面的实验,我主要使用pyinstaller打包文件。

    Python文件打包

    配置说明

    下载方法:

    pip install pyinstaller

    python setup.py install

    验证

    pyinstaller -v

    参数

    -F 制作独立的可执行程序

    -D 制作出的档案存放在同一个文件夹下(默认值)

    -K 包含TCL/TK(对于使用了TK的,最好加上这个选项,否则在未安装TK的电脑上无法运行)

    -w 制作窗口程序

    -c 制作命令行程序(默认)

    -X 制作使用UPX压缩过的可执行程序(推荐使用这个选项,需要下载UPX包,解压后upx.exe放在Python(非PyInstaller)安装目录下,下载upx308w.zip)

    -o DIR 指定输出SPEC文件路径(这也决定了最后输出的exe文件路径)

    --icon=[ICO文件路径] 指定程序图标

    -v [指定文件] 指定程序版本信息

    -n [指定程序名] 指定程序名称

    Windows:生成exe文件

    正常使用

    pyinstaller -F test.py

    可执行文件存储在dist/test文件夹中,不过我这环境出了点问题,使用

    pyinstaller -D test.py

    进入build/test文件夹,将Python环境安装处的Python37.dll拷贝到目录,再执行该目录下的test.exe

    Linux:生成ELF

    下载方法和windows平台相同。

    打包生成ELF

    pyinstaller -F test.py

    pyinstaller打包程序识别

    exe图标特征

    exe字符串特征

    和Python语句很类似__file__,__main___,此外也有很多Python的特征

    ELF字符串特征

    ELF主函数特征

    在Linux上运行pyintaller打包的可执行文件时,它会将打包好的文件解压到临时文件夹(/tmp)中的_MEIxxxxxx 路径中暂时存放,执行完毕之后再删除。所以在主函数起始位置会有如下特征

    反编译文件

    我们要将Python打包成的可执行文件,首先要利用archive_viewer.py将exe/elf反编译为pyc字节码,再使用uncompyle6反编译为py文件。

    反编译为pyc文件

    archive_viewer.py就在我们的pyinstaller安装包文件夹中。例如我的Python环境中:

    Win:D:\Anaconda\Lib\site-packages\PyInstaller\utils\cliutils

    Linux:/home/ubuntu/.local/lib/python3.6/site-packages/PyInstaller/utils/cliutils

    参数

    U: go Up one level

    O : open embedded archive name

    X : extract name

    Q: quit

    首先,我们要解析EXE/ELF文件数据包,将可执行文件放置到与archive_viewer.py同目录下,使用命令:

    python archive_viewer.py test.py

    有很重要的两点:

    反编译EXE/ELF文件的Python版本必须与打包时的版本一致

    反编译的pyc文件命名必须遵照上面红框中的“test”

    其次,提取test.pyc和struct.pyc文件(后面会说明该文件作用)

    ? x test

    to filename? test.pyc

    ? x struct

    to filename? struct.pyc

    Linux端相同

    下面Win和Linux端操作相同,只讲述Win端。

    文件修补

    使用pyinstaller打包的文件,文件头的数据会被抹消掉。再还原的过程中,我们需要手动进行修补。文件头的格式为:magic(4字节,编译器标志) + 时间戳(4字节)。在实际修补时,需要添加的数据可能不止是8个字节。

    将test.pyc和struct.pyc对比

    struct.pyc比test.pyc多出16字节,将这16字节插入test.pyc的头部

    反编译字节码文件

    这里需要使用到uncompyle6(如果是Python2.7需要使用uncompyle2)

    安装

    pip install uncompyle6

    或者

    git clone https://github.com/rocky/python-uncompyle6.git

    cd python-uncompyle6

    python setup.py install

    反编译

    uncompyle6 test.pyc > test.py

    实战演练

    准备

    signin.exe:

    我们的目标是获取程序登录的账户密码。

    未加壳的64位可执行文件。

    程序分析

    可以判断出,这个程序实际上是由Python打包成的可执行文件,且在运行这个程序时,在同目录下产生了一个tmp.dll文件,猜测是程序调用某些函数的接口。

    反编译

    使用archive_viewer.py反编译为字节码文件

    python archive_viewer.py signin.exe

    修补文件

    55 0D 0D 0A 00 00 00 00 70 79 69 30 10 01 00 00

    程序是在Python3.8环境下打包,因此我们需要在Python3.8下使用uncompyle6

    uncompyle6 main.pyc > main.py

    得到py文件

    1 #uncompyle6 version 3.7.2

    2 #Python bytecode 3.8 (3413)

    3 #Decompiled from: Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)]

    4 #Embedded file name: main.py

    5 #Compiled at: 1995-09-28 00:18:56

    6 #Size of source mod 2**32: 272 bytes

    7 importsys8 from PyQt5.QtCore import *

    9 from PyQt5.QtWidgets import *

    10 from signin import *

    11 from mydata importstrBase6412 from ctypes import *

    13 import_ctypes14 from base64 importb64decode15 importos16

    17 classAccountChecker:18

    19 def __init__(self):20 self.dllname = './tmp.dll'

    21 self.dll =self._AccountChecker__release_dll()22 self.enc =self.dll.enc23 self.enc.argtypes =(c_char_p, c_char_p, c_char_p, c_int)24 self.enc.restype =c_int25 self.accounts = {b'SCTFer': b64decode(b'PLHCu+fujfZmMOMLGHCyWWOq5H5HDN2R5nHnlV30Q0EA')}26 self.try_times =027

    28 def __release_dll(self):29 with open(self.dllname, 'wb') as (f):30 f.write(b64decode(strBase64.encode('ascii')))31 returnWinDLL(self.dllname)32

    33 defclean(self):34 _ctypes.FreeLibrary(self.dll._handle)35 ifos.path.exists(self.dllname):36 os.remove(self.dllname)37

    38 def_error(self, error_code):39 errormsg = {0:'Unknown Error',40 1:'Memory Error'}41 QMessageBox.information(None, 'Error', errormsg[error_code], QMessageBox.Abort, QMessageBox.Abort)42 sys.exit(1)43

    44 def __safe(self, username: bytes, password: bytes):45 pwd_safe = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

    46 status =self.enc(username, password, pwd_safe, len(pwd_safe))47 return(pwd_safe, status)48

    49 defcheck(self, username, password):50 self.try_times += 1

    51 if username not inself.accounts:52 returnFalse53 encrypted_pwd, status =self._AccountChecker__safe(username, password)54 if status == 1:55 self._AccountChecker__error(1)56 if encrypted_pwd !=self.accounts[username]:57 returnFalse58 self.try_times -= 1

    59 returnTrue60

    61

    62 classSignInWnd(QMainWindow, Ui_QWidget):63

    64 def __init__(self, checker, parent=None):65 super().__init__(parent)66 self.checker =checker67 self.setupUi(self)68 self.PB_signin.clicked.connect(self.on_confirm_button_clicked)69

    70 @pyqtSlot()71 defon_confirm_button_clicked(self):72 username = bytes((self.LE_usrname.text()), encoding='ascii')73 password = bytes((self.LE_pwd.text()), encoding='ascii')74 if username == b'' or password == b'':75 self.check_input_msgbox()76 else:77 self.msgbox(self.checker.check(username, password))78

    79 defcheck_input_msgbox(self):80 QMessageBox.information(None, 'Error', 'Check Your Input!', QMessageBox.Ok, QMessageBox.Ok)81

    82 defmsgbox(self, status):83 msg_ex = {0:'',84 1:'',85 2:"It's no big deal, try again!",86 3:'Useful information is in the binary, guess what?'}87 msg = 'Succeeded! Flag is your password' if status else 'Failed to sign in\n' + msg_ex[(self.checker.try_times % 4)]88 QMessageBox.information(None, 'SCTF2020', msg, QMessageBox.Ok, QMessageBox.Ok)89

    90

    91 if __name__ == '__main__':92 app =QApplication(sys.argv)93 checker =AccountChecker()94 sign_in_wnd =SignInWnd(checker)95 sign_in_wnd.show()96 app.exec()97 checker.clean()98 sys.exit()99 #okay decompiling main.pyc

    代码分析

    通过代码我们能够了解到这些信息

    1.

    elf.dllname = './tmp.dll'

    调用了tmp.dll文件作为接口。

    2.

    def __safe(self, username: bytes, password: bytes):

    pwd_safe= b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'status=self.enc(username, password, pwd_safe, len(pwd_safe))return(pwd_safe, status)defcheck(self, username, password):

    self.try_times+= 1

    if username not inself.accounts:returnFalse

    encrypted_pwd, status=self._AccountChecker__safe(username, password)if status == 1:

    self._AccountChecker__error(1)if encrypted_pwd !=self.accounts[username]:returnFalse

    self.try_times-= 1

    return True

    self.accounts = {b'SCTFer': b64decode(b'PLHCu+fujfZmMOMLGHCyWWOq5H5HDN2R5nHnlV30Q0EA')}

    调用tmp.dll文件中的enc函数,传入username, password, pwd_safe, len(pwd_safe),实际就是将password加密后存储到pwd_safe字节码中。最后用pwd_safe与b64decode(b'PLHCu+fujfZmMOMLGHCyWWOq5H5HDN2R5nHnlV30Q0EA')比较,且我们能够了解到用户名应该是SCTFer,且最后返回的status一个为非1。

    打开tmp.dll文件,找到enc函数

    观察代码,实际操作可以分为两部分,逆向分析

    异或操作

    第47~54行代码实际上就是将Dst与用户名循环异或,最后得到b64decode(b'PLHCu+fujfZmMOMLGHCyWWOq5H5HDN2R5nHnlV30Q0EA'),因此我们只需要逆向异或就能得到加密后的Dst

    from base64 import *username= "SCTFer"pwd_safe= b64decode('PLHCu+fujfZmMOMLGHCyWWOq5H5HDN2R5nHnlV30Q0EA')#print (len(pwd_safe))

    num = ["%02x" % x for x inpwd_safe]

    hex_num= [int(x, 16) for x innum]print(num)#print (len(num))

    for i in range(32):

    hex_num[i]^= ord(username[i %len(username)])#print (hex_num)

    hex_nums = bytes.fromhex(''.join([hex(x)[2:].rjust(2, '0') for x inhex_num]))print (hex_nums)

    得到

    b'o\xf2\x96\xfd\x82\x9c\xde\xb52v\x86yK3\xe6\x1f\x06\xd8\xb7=\x13J\xb8\xe3\xb52\xb3\xd38\x86\x10\x02\x00'

    加密操作

    每次传入了8字节数据进行加密(总共64字节),打开sub_180011311函数

    仔细观察代码,实际上这部分代码是使用CRC32的查表法,对数据进行加密。

    加密原理实际上就是CRC32算法---输入一组长度48的字符串,每8个字节分为1组,共6组。对每一组取首位,判断正负。正值,左移一位;负值,左移一位,再异或0xB0004B7679FA26B3。重复判断操作64次,得到查表法所用的表。

    因此我们只需要将整个加密过程逆向操作得到查表法的表,再进行CRC64计算,就能得到输入。

    secret =[]#for i in range(4):#secret.append(int(hex_nums[i*8:(i + 1) * 8][::-1].hex(),16))

    for i in range(4):

    secret.append(int.from_bytes(hex_nums[i*8:(i + 1) * 8], byteorder="little"))print(secret)

    key= 0xB0004B7679FA26B3flag= ""

    for s insecret:for i in range(64):

    sign= s & 1

    if sign == 1:

    s^=key

    s//= 2

    if sign == 1:

    s|= 0x8000000000000000

    print(hex(s))

    j=0while j < 8:

    flag+= chr(s&0xFF)

    s>>= 8j+= 1

    print(flag)

    因为计算机中采用小端排序,因此需要注意分组倒序。得到

    脚本

    from base64 import *username= "SCTFer"pwd_safe= b64decode('PLHCu+fujfZmMOMLGHCyWWOq5H5HDN2R5nHnlV30Q0EA')#print (len(pwd_safe))

    num = ["%02x" % x for x inpwd_safe]

    hex_num= [int(x, 16) for x innum]print(num)#print (len(num))

    for i in range(32):

    hex_num[i]^= ord(username[i %len(username)])#print (hex_num)

    hex_nums = bytes.fromhex(''.join([hex(x)[2:].rjust(2, '0') for x inhex_num]))print(hex_nums)

    secret=[]#for i in range(4):#secret.append(int(hex_nums[i*8:(i + 1) * 8][::-1].hex(),16))

    for i in range(4):

    secret.append(int.from_bytes(hex_nums[i*8:(i + 1) * 8], byteorder="little"))print(secret)

    key= 0xB0004B7679FA26B3flag= ""

    for s insecret:for i in range(64):

    sign= s & 1

    if sign == 1:

    s^=key

    s//= 2

    if sign == 1:

    s|= 0x8000000000000000

    print(hex(s))

    j=0while j < 8:

    flag+= chr(s&0xFF)

    s>>= 8j+= 1

    print(flag)

    账户密码

    username:SCTFer

    password:SCTF{We1c0m3_To_Sctf_2020_re_!!}

    展开全文
  • 2、安装php5,假定安装在c:\php5,复制c:\php5下所有文件到c:\php-de文件夹。3、安装ZendOptimizer-3.3.0,假定安装在C:\Program Files\Zend\ZendOptimizer-3.3.0。4、解压dezend.rar包到c:\php-de文件夹,覆盖里面...

    需求:

    1、操作系统:Windows 2000/XP,内存越大越好,推荐1G以上。

    2、安装php5,假定安装在c:\php5,复制c:\php5下所有文件到c:\php-de文件夹。

    3、安装ZendOptimizer-3.3.0,假定安装在C:\Program Files\Zend\ZendOptimizer-3.3.0。

    4、解压dezend.rar包到c:\php-de文件夹,覆盖里面的php.exe和php5ts.dll文件,还有两个文件config.ini(混淆函数

    列表)、PhpVars.reg(环境变量配置)和decode_all.bat(批量dezend)下面要用到。

    5、修改c:\php-de文件夹下的php.ini文件,增加下面一个节:

    [Zend]

    zend_extension_manager.optimizer_ts="C:\Program Files\Zend\ZendOptimizer-3.3.0\lib\Optimizer-3.3.0"

    zend_extension_ts="C:\Program Files\Zend\ZendOptimizer-3.3.0\lib\ZendExtensionManager.dll"

    修改内存限制

    memory_limit = 128M

    6、修改PhpVars.reg文件,将对应的行修改为:

    "PHP_DECODE_INI"="c:\\php-de"

    "PHP_DECODE_PATH"="c:\\php-de\\decode"

    然后双击该文件,导入注册表。

    7、复制要dezend的文件夹到c:\php-de目录下,假定是c:\php-de\dezend。运行cmd,执行

    cd c:\php-de

    decode_all zend

    8、耐心的等一段时间,dezend好的文件就在c:\\php-de\\decode文件夹了。

    提示:

    可以修改decode_all里面的*.php *.inc,添加其他扩展名的php文件。

    下载文件列表

    Pack : DeZend_mmscn.rar

    dezend-mmscn.org\1.dezend.rar

    dezend-mmscn.org\2.md5check.rar

    dezend-mmscn.org\Zend Obfuscate Function Implement[zend混淆函数].txt

    dezend-mmscn.org\dezender使用方法[how To Use Dezender], dezender.txt

    dezend-mmscn.org

    展开全文
  • 用此工具反混淆后 然后用reflector软件反编译下就能还原任何经过混淆后的代码 百度下reflector网上有下载
  • 一.info.plist文件反编译与提取信息在ipa文件中,有一个info.plist文件,这是一个xml格式的文件,ipa程序的程序名称,icon图标名称等等信息都记录在其中,可是 info.plist在ipa打包的时候被加密了,怎么用程序打开...

    一.info.plist文件的反编译与提取信息

    在ipa文件中,有一个info.plist文件,这是一个xml格式的文件,ipa程序的程序名称,icon图标名称等等信息都记录在其中,可是 info.plist在ipa打包的时候被加密了,怎么用程序打开呢?这里提供一个Java程序的jar包 http://download.csdn.net/detail/caoyuan10036/4076690

    这样使用就可以实现info.plist的反编译

    File file =newFile("d:\\angryInfo.plist");//需要反编译的plist文件

    File file1 = newFile("d:\\angryInfo1.plist");//生成解密过的plist文件

    PropertyListParser.convertToXml(file, file1) ;

    二.icon.png的反编译

    同info.plist文件一样,ipa打包时,icon图标也被加密了,这里也提供一个jar包http://download.csdn.net

    /detail/caoyuan10036/4076690,这个jar包可以实现icon图标转换成Windows下可以看的图片了.具体方法在上述地

    址中有例子程序。

    三.iTunesArtwork

    这个文件没有扩展名,自己加上.png就可显示图片了,这是ipa程序的大图标.

    展开全文
  • 踏浪帅链接:https://www.cnblogs.com/wujy/p/3275855.html来源:博客园我们平时在工作中经常会遇到一些已经被编译后的DLL,而且更加麻烦是没有源代码可以进行修改,只能针对这个DLL的文件进行修改才能得到我们想要...

    a8cf5b9dfcc31d955115fc0bf37ae47c.png
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处
    作者:踏浪帅
    链接:https://www.cnblogs.com/wujy/p/3275855.html
    来源:博客园

    我们平时在工作中经常会遇到一些已经被编译后的DLL,而且更加麻烦是没有源代码可以进行修改,只能针对这个DLL的文件进行修改才能得到我们想要的结果;本文将通过一个实例来演示如果完成一个简单的修改;我们将会用到以下几种工具;

    1:反编译工具ILSpy.exe:是个很不错的反编译软件,而且是免费了;

    2:微软的工具ildasm.exe:这个是把DLL生成IL文件的一个软件,是微软自带了;可以在C:Program FilesMicrosoft SDKsWindowsv7.0Abin找到该软件;

    3:微机的工具ilasm.exe:这个是把IL文件重新生成DLL的功能,可以在C:Windowshttp://Microsoft.NETFrameworkv4.0.30319找到该软件;

    我们新建一个WEB项目,模拟它要插入加密狗才能运行,当然这边的加密狗是我们的一个比喻,实例很简单七个步骤就可以完在;

    步骤一:使用ILSpy.exe打开Web.dll文件;查看其源代码的情况:

    bf5e4ed10483979301a1bba6d40f11e7.png

    从上面反编译出来的源代码不难发现重点是在GetLicense()方法,这个也是我们要修改的内容,从上面可以看出在没有修改前这个都是会提示要插入加密狗的;

    步骤二:接下来就是要使用ildasm.exe把DLL这个文件转化成IL文件;

    e67137bd62ee0e12f7e2435acbf79bf4.png

    把dll文件转储为*.il文件存到某个指定文件夹里,得到Web.il和Web.res两个文件,有时也会有*.resource文件

    aeb7566bae58046c2a0425da394ec595.png

    步骤三:我们可以打开Web.il文件,里面有DLL生成的IL内容,我们很容易就可以定位到想要的这个方法,只要让它固定返回true就可以达到修改成功,方法内的IL代码就是我们要修改的内容;

    aadf873f18565d69720c9be851dee453.png

    步骤四:修改GetLicense()方法内的IL代码,让它固定返回true;下面这个IL就是让它返回为true;修改完接着保存IL文件;

    66146c131e0f3e603f338191d07d6f1b.png

    步骤五:当修改完IL文件后要把它转化成DLL文件,打开DOC命令输入进入到*.il的文件夹,然后输入命令:c:windowshttp://microsoft.netframeworkv4.0.30319ilasm.exe /dll/resource=Web.res Web.il

    24d99d55b51cb58faf96260aab390ac8.png

    *1:要进入IL文件的文件夹 2:其中"/dll/"这个前面要有一个空格 3:.res文件要在.il文件前面,中间要有个空格

    步骤六:运行完上面的命令后会生成一个新DLL文件,然后把它复制到我们的站点下面:

    7440cfbe35d838d1af33ffc4f86e9fbb.png

    步骤七:运行的结果:

    7f7fda7e766108db43cec49e52a94373.png

    完成上面的七个步骤就可以成功修改DLL文件,当然本实例只是一个简单的修改,若要进行比较复杂修改IL代码则要对IL知识有个相当的了解;下面是一个可能会经常要用到的IL返回true跟false的代码;

    .maxstack 1

    .locals init (

    [0] bool CS$1$0000)

    L_0000: nop

    L_0001: ldc.i4.1

    L_0002: stloc.0

    L_0003: br.s L_0005

    L_0005: ldloc.0

    L_0006: ret

    return true;

    // 代码大小 7 (0x7)

    .maxstack 1

    .locals init ([0] bool CS$1$0000)

    IL_0000: nop

    IL_0001: ldc.i4.0

    IL_0002: stloc.0

    IL_0003: br.s IL_0005

    IL_0005: ldloc.0

    IL_0006: ret

    return false;

    展开全文
  • 1.本地数据加密 对NSUserDefaults,sqlite存储文件数据... // 获取需要加密文件的二进制数据 NSData *data = [NSData dataWithContentsOfFile:@"/Users/wangpengfei/Desktop/photo/IMG_5551.jpg"]; // 或 base...
  • 下面主要介绍windows下phpstudy2018、xampp及phpstudy-pro三种环境的php文件加密。不同环境的通用流程1.用Virbox Protector对解释器(php-cgi.exe或httpd.exe)加密2.用DSProtector对php加密3.用加密后的解释器...
  • 通过加密 Java 中每个方法的字节码防止反编译,操作简单,运行环境易部署,支持当前主流的 Windows、Linux、ARM Linux 平台。VBP 2 引入了全新的 Java 保护方案,在提升安全性的同时,加密操作体验大幅提升,1分钟...
  • Java类文件很容易被反编译,需要经过特殊的加密处理才能保护代码不被反编译破解 我们都知道Java类文件很容易被反编译,即使进行了混淆处理,仍然容易被反编译破解,因此用Java开发的项目和程序在代码保护方面基本...
  • 众所周知,Java编译后的Jar包和Class文件,可以轻而易举的使用反编译工具(如JD-GUI)进行反编译,拿到源码。为了保护自己发布的Jar包和Class文件,采用的方式大多是混淆或加密(混淆工具如ProGuard),本文介绍的是采用...
  • jsc 是加密后的js代码, js是脚本代码, 不是编译型语言, 理论上也是可以反编译出来变量名的. 仔细研究了下js的编译引擎代码, 得出以下结论: 1. 变量名分为两种局部变量名和全局变量名. 2. 局部变量名作用域只在...
  • 转摘链接 本文更新地址 一、编译 1.... 2. 编译为 pyo 或者 opt-n.pyc 文件 3.... 1.... 2.... pyc 、pyo 文件反编译 在线网站:https://tool.lu/pyc/ uncompyle6 其他 Python 反编译工具 u
  • Java代码加密反编译(二) 用加密算法DES修改classLoader实现对 class文件加密
  • 众所周知,Java编译后的Jar包和Class文件,可以轻而易举的使用反编译工具(如JD-GUI)进行反编译,拿到源码。为了保护自己发布的Jar包和Class文件,采用的方式大多是混淆或加密(混淆工具如ProGuard),本文介绍的是...
  • jar包加密防止反编译

    2020-11-16 17:55:01
    Java加密Jar包和Class文件防止反编译的方法,此为防止反编译程序,亲测可用。如果大神有啥破解方法,希望能与楼主分享下,谢谢。
  • 一.info.plist文件反编译与提取信息  在ipa文件中,有一个info.plist文件,这是一个xml格式的文件,ipa程序的程序名称,icon图标名称等等信息都记录在其中,可是 info.plist在ipa打包的时候被加密了,怎么用程序...
  • Unity3D 项目加密防止反编译可使用Virbox LM加密方案。对Unity3D游戏项目中的代码及资源保护,Virbox LM有着完善的解决方案,能有效防止代码被反编译,资源文件被盗窃。可直接对assembly-scharp.dll进行加密,自动...
  • 针对C#生成得exe文件加密,需要达到代码不能被反编译得效果。Virbox Protector Standalone 加壳工具主界面如图:开始进行加密直接拖入文件或者选择打开文件的形式,选择需要加密exe可执行程序或者dll动态链接库。...
  • APK文件反编译

    2021-01-06 17:05:18
    APK文件反编译 什么是逆向工程,反编译? 就是将已有的APP程序,反向操作,方便我们查看里面的原始文件,因为我们平时拿到的APP程序都是经过加密处理的。 反编译有什么用? 可以用来分析APP,比如获取IP地址 将...
  • pyc文件的生成、反编译pyc文件

    千次阅读 2018-08-24 22:48:25
    为了加密 .py 文件,以前一般使用打包成 exe ,但是最近发现可以将其编译成二进制文件 pyc ,虽然反编译难度不大,但是也需要一些水平 编译生成 pyc: 单个文件 代码: import py_compile py_compile....
  • 众所周知,Java编译后的Jar包和Class文件,可以轻而易举的使用反编译工具(如JD-GUI)进行反编译,拿到源码。为了保护自己发布的Jar包和Class文件,采用的方式大多是混淆或加密(混淆工具如ProGuard),本文介绍的是...
  • 代码加密反编译

    2021-02-26 09:37:36
    通过.NET编译的项目得到的dll文件,由于要翻译为虚拟机可以执行的中间语言IL,这种语言规则性比较强,很容易通过各种反编译软件翻译成源码,所以当部署到实际项目中就需要进行一些加密。 公司的项目是.NET CORE框架...
  • XJar — Spring-Boot JAR 包加密运行工具,避免源码泄露以及反编译。Spring Boot JAR安全加密运行工具,同时支持原生的JAR。基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动,动态解密运行的...
  • 关于python的加密目前软件开发商对 Python 加密时可能会有两种形式,一种是对python转成的exe进行保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程。1、 对 python转exe加壳下载最新版...
  • Virbox Protector Standalone 加壳工具效果:代码加密,防止静态反编译加密技术:代码混淆/虚拟化/代码加密/智能压缩/使用体验:提供demo版和正式版,加密操作简单,直接对dll或者exe加壳保护。对java的jar包/class...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,352
精华内容 540
关键字:

反编译加密文件