混淆编译工具安装成功
‘壹’ python程序代码混淆、编译、打包、运行(桌面程序防破解向)
像Python这种解释性的语言,要想私有化部署的同时又保护好源码,就像是对于鱼和熊掌的追求。
虽然做不到尽善尽美,但是对代码进行混淆,增加一点破解的难度,或许能规避一些泄露的风险。
本次演示环境:linux
确保要发布的包根目录("demo")中有__main__.py文件,这个是程序执行入口。
编译
批量改名.pyc文件
移动.pyc文件
清理.py文件
清理__pycache__文件夹
打包成zip
运行时只要将zip文件作为参数即可
最终整合脚本
调用方式
对于在变量和函数名上的混淆有点小儿科,而对于跨文件的类名的混淆又太容易实现。
所以对于混淆程度的取舍,要视工程的规模而定。
2.1 混淆工具pyminifier
在原来的工具 pyminifier上修复了几个bug。
安装:
python3 安装
或者clone下来,自行安装
使用例子
2.2 源码变更
不同的配置对于源码的要求不同,以下是笔者踩过的坑。
其他混淆想法
结合混淆、编译和打包,尝试出以下发布脚本。
主要的思路 :创建一个工作目录tmp,然后在此目录下混淆、编译python代码,完成后把内容打包成pyc文件,再将pyc文件和其他配置文件移动到dist,发布dist即可。
混淆的目的是最大程度保护源码,在发布到客户端后不被轻易破解。
‘贰’ 几种java反编译软件的安装以及使用总结
下面是在网上找的几种反编译软件的安装以及使用:
一、JD-JUI
官网下载链接:http://jd.benow.ca/
下载之后解压,
点击“jd-gui.exe”运行:
直接将".jar"文件拖入进去即可查看里边的“.class”文件,如上图所示。
二:Luyten
官网下载链接:https://github.com/deathmarine/Luyten/releases/tag/v0.5.3
点击“luyten-0.5.3.exe”下载,下载之后点击运行,运行后的界面如图所示,同样也是讲“.jar”文件拖入进入即可。
三、在eclipse中安装反编译工具
准备工作:
“jad.exe”下载:https://varaneckas.com/jad/
“net.sf.jadclipse_3.3.0.jar”下载:https://sourceforge.net/projects/jadclipse/files/
jad.exe”下载:
“net.sf.jadclipse_3.3.0.jar”下载:
然后将“net.sf.jadclipse_3.3.0.jar”拷贝到eclipse的plugins目录下,再删除eclipse的configuration目录下“org.eclipse.update”文件,这一步很重要!
重启eclipse,点击window->Preference->Java,你会发现里边多了一个插件“JadClipse”,
选中这个插件,将下图中红圈圈的地方的地址填写为你 “jad.exe”文件的地址
还没有配置完,先不要close,
点击General->Editors->File Associations 后,进入下边的界面
设置.class 文件默认打开方式:
设置.class without source文件的默认打开方式,
需要注意的是,“JadClipse Class File Viewer”这个一开始是没有的,需用添加,如下图所示:
接下来在eclipse中查看反编译后的代码:(这种方法可能不合适,但是能够查看)
新建一个EJB project,右键“import”,选中"EJB JAR file",导入你的jar包,Finish
在项目下找你要查看的反编译的文件即可,如果你遇到了下边的这种情况
关闭这个文件后再次打开,就可以查看了(我的是这样,所以我感觉这个方法不太好,但别的方法又不知道怎么查看):
有错误或者有更好的方法,希望大家在下边留言指出
‘叁’ 如何使Linux在交叉编译工具安装配置并立即生效
第一、解压你下载的ARM-LINUX-GCC交叉编译工具
#tar xvzf arm-linux-gcc-4.3.2.tar.gz -C /
(需要注意的是,在大写字母后面有一个空格)
第二、利用vi编辑器打开/etc/profile文件,并在下面的位置中添加一句话:pathmunge /opt/FriendlyARM//opt/FriendlyARM/toolschain/4.4.3/bin
(注意:该处的/opt/FriendlyARM//opt/FriendlyARM/toolschain/4.4.3/bin根据各人的交叉编译工具解压后所存放的位置而不同)
#vim /etc/profile
# Path manipulation
if [ $EUID = 0 ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
pathmunge /opt/FriendlyARM//opt/FriendlyARM/toolschain/4.4.3/binfi第三、执行下列的命令即可是刚才的配置生效
#source /etc/profile
最后你就可以检测自己的交叉编译环境是否安装成功。可以输入下面的命令来检查:
‘肆’ 怎么测eclipse反编译工具decompiler安装是否成功
查看步骤:
1、点击菜单栏的“help”,选择“Install
New
Software…”。
2、点击弹出窗口上的
然后就可以看到已经安装的插件了
看看有没有你需要的反编译插件
如果有的话就安装成功了
如果没有的话就没有安装成功
‘伍’ ubuntu12.04编译交叉编译已经安装,为什么还不能编译
安装步骤:
1、解压交叉编译开发工具包
sudo
tar
xvzf
arm-linux-gcc-4.4.3.tar.gz
-C
/
解压工具链到根目录,这里的解压目录可以任意指定。系统中会增加目录/opt/FriendlyARM/toolschain/4.4.3/
2、修改环境变量,把交叉编译器的路径加入到PATH
采用修改/etc/bash.bashrc文件的方法(还可有别的方法)
①用vim打开文件:
#sudo
vim
/etc/bash.bashrc
②在最后面新建一行加上:
export
PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
3、立即使新的环境变量生效,不用重启电脑:
#source
/etc/bash.bashrc
{
这是上面修改环境变量的另一种方法
①
$sudo
-i
输入自己的密码,这是进入超级用户权限
②
cd
/root/
vim
.bashrc
③
在最后加上
export
PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
(路径)(注意等号那边不要有空格)
④
source
~/.bashrc
(立即生效)
(好像只能本终端,注销一下就永远都有这个环境变量的)
}
4、检查是否将路径加入到PATH
#echo
$PATH
若显示的内容中有刚刚添加的交叉编译器所在目录,则证明编译环境安装成功。
5、测试是否安装成功
指令:#arm-linux-gcc
-v
上面的指令会显示arm-linux-gcc信息和版本,显示的内容信息:
此时,证明安装成功。
6、编译实验
写个HelloWorld程序,测试交叉工具连
写下下面的HelloWorld程序,保存为hello.c
#include
int
main()
{
printf(“HelloWorld!\n”);
return0;
}
执行下面的指令:
#arm-linux-gcc-o
hello
hello.c
要是不报错说明安装成功。
以上最重要的要注意的是,自己将交叉编译工具链解压到哪了,再把那个路径加到环境变量中去。
‘陆’ ubuntu12.04编译交叉编译已经安装,为什么还不能编译
1、解压交叉编译开发工具包
sudo
tar
xvzf
arm-linux-gcc-4.4.3.tar.gz
-C
/
解压工具链到根目录,这里的解压目录可以任意指定。系统中会增加目录/opt/FriendlyARM/toolschain/4.4.3/
2、修改环境变量,把交叉编译器的路径加入到PATH
采用修改/etc/bash.bashrc文件的方法(还可有别的方法)
①用vim打开文件:
#sudo
vim
/etc/bash.bashrc
②在最后面新建一行加上:
export
PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
3、立即使新的环境变量生效,不用重启电脑:
#source
/etc/bash.bashrc
{
这是上面修改环境变量的另一种方法
①
$sudo
-i
输入自己的密码,这是进入超级用户权限
②
cd
/root/
vim
.bashrc
③
在最后加上
export
PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
(路径)(注意等号那边不要有空格)
④
source
~/.bashrc
(立即生效)
(好像只能本终端,注销一下就永远都有这个环境变量的)
}
4、检查是否将路径加入到PATH
#echo
$PATH
若显示的内容中有刚刚添加的交叉编译器所在目录,则证明编译环境安装成功。
5、测试是否安装成功
指令:#arm-linux-gcc
-v
上面的指令会显示arm-linux-gcc信息和版本,显示的内容信息:
此时,证明安装成功。
6、编译实验
写个HelloWorld程序,测试交叉工具连
写下下面的HelloWorld程序,保存为hello.c
#include
int
main()
{
printf(“HelloWorld!\n”);
return0;
}
执行下面的指令:
#arm-linux-gcc-o
hello
hello.c
要是不报错说明安装成功。
‘柒’ javaweb项目做混淆的详细步骤
混淆的工具很多,最常用的为retroguard.
Java 代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候。所以一个按照正常方式编译的 Java .class 文件可以非常轻易地被反编译。反编译工具有很多种,其中非常强大的一种是 jad。
为了避免出现这种情况,保护开发者的劳动,又有一种叫做 Java 混淆器的工具被开发出来。Java 混淆器的作用是对编译好的代码进行混淆,使得其无法被反编译或者反编译后的代码混乱难懂。Java 混淆器也有很多种,其中比较强大的一种是 RetroGuard(只说比较强大是因为我对其功效还是有些怀疑的)。
这里我介绍一下 RetroGuard 的使用方法。
将下载的 .tar.gz 或者 .zip 文件解压。有用的只有 retroguard.jar 一个文件,其它的是源代码和文档。
RetroGuard 是针对 jar 文件做混淆的。使用之前需要先配置一下。可以手工编辑配置文件,更好的方法是使用 RetroGuard 提供的 GUI 工具来生成配置文件。使用方法如下:
java -classpath retroguard.jar;xxx.jar;yyy.zip;... RGgui
然后在 GUI 的 Wizard 中设置各个参数。上面的 -classpath 中应该列出要混淆的 jar 所依赖的所有的包。
RGgui 的详细使用方法可以看 RetroGuard 的文档 docs.html。
配置文件生成后,就可以运行 RetroGuard 进行混淆了。使用方法如下:
java -classpath xxx.jar;yyy.zip;... RetroGuard vvv-unofb.jar vvv.jar vvv.rgs vvv.log
其中 vvv-unofb.jar 是未混淆的 jar 文件,vvv.jar 是混淆后生成的 jar 文件,vvv.rgs 是配置文件,vvv.log 是日志文件。缺省的配置文件名称为 script.rgs,缺省的日志文件名称为 retroguard.log。
在生成配置文件时需要注意的是:
1、所有 public 的类名、方法名、变量名应该全部保留。因为所有设置为 public 的内容代表了整个包对外表现的接口。若某个内容不想为外界访问,就不应该设置为 public 的。
2、若包中某个类使用了 java.lang.Class 或者 java.lang.ClassLoader 中的某个方法加载了一个类,若这个类在包外,不需要特别处理;若这个类在包内,则需要保留这个类的类名,否则混淆后会找不到这个类。
3、在包中的所有调试信息(源文件名、行号、变量/参数信息等等)应全部删除。