Winse Blog

走走停停都是风景, 熙熙攘攘都向最好, 忙忙碌碌都为明朝, 何畏之.

保护/加密JAVA代码

由于Java代码生成的是中间过程字节码,javap以及一些反编译的工具基本能看代码的大概,对于提供给客户的代码需要做一些处理:混淆或者加密。下面分几块把在实际操作过程中参考的内容罗列出来,希望对看到本文并感兴趣的你有所帮助。

自定义ClassLoader

混淆+ClassLoader

自定义ClassLoader并用Java实现解密

自定义ClassLoader(jvmti)用C++实现解密

其他一些

JNI

javah

环境部署及入门

配jni.h的 附加目录 的时刻,需要选择 配置 和 平台 的配置!!需要对应好! jni的.h文件需要放到c++的项目下面去,引用外部的好像找不到,有问题。

java与c++类型之间的转换

JNI调用C++的加密算法

OPENSSL

WINDOWS安装/编译安装OPENSSL然后在VS里面应用:

NuGet安装OpenSSL on VS2015-1.0.2版本:(我用的这种方式)

GCC

DES

AES

AES CBC 相互加解密 Java/PHP/C++ java和c++加解密,互通

OPENSSL MD5: VS + GCC + JAVA + 命令行

1
2
3
4
5
6
7
8
9
10
11
# SHA256, used in chef cookbooks
openssl dgst -sha256 path/to/myfile
# MD5
openssl dgst -md5 path/to/myfile
echo -n 'text to be encrypted' | md5sum -
$ echo -n 123456 | md5sum | awk '{print $1}'
$ echo -n Welcome | md5sum

[root@cu2 ~]# gcc -Wall -lcrypto -lssl opensslmd5.cpp -o md5
[root@cu2 ~]# ./md5
md5 digest: 56ab24c15b72a457069c5ea42fcfc640

makefile

1
2
3
4
5
6
7
8
9
10
11
CC=g++
CFLAGS=-Wall -g -O2
LIBS=-lcrypto

all: aes

aes: aes.cc
    $(CC) $(CFLAGS) aes.cc -o $@ $(LIBS)

clean:
    @rm -f aes

OPENSSL命令行

1
2
3
4
5
6
7
8
9
10
openssl des3 -nosalt -k abc123 -in file.txt -out file.des3 #不加盐,key为abc123来加密
openssl des3 -d -nosalt -in file.des3 -out f.txt -k abc123#解密

默认是-salt,加盐的,如果不加盐,则根据pass生成的key和iv不变,例:

You can get openssl to base64-encode the message by using the -a
stefano:~$ openssl aes-256-cbc -in attack-plan.txt -a

[root@cu2 ~]# echo -n DES | openssl aes-128-cbc -a -salt -k abcdefghijklmnop
[root@cu2 ~]# echo -n DES | openssl aes-128-cbc -k abcdefghijklmnop |  openssl aes-128-cbc -d -k abcdefghijklmnop

其他

SHELL二进制编码:

1
2
3
4
5
6
7
8
9
10
11
el@defiant ~ $ printf '%x\n' 26
el@defiant ~ $ echo $((0xAA))
printf -v result1 "%x" "$decimal1"
% xxd -l 16 -p /dev/random
193f6c54814f0576bc27d51ab39081dc
$ echo -n $'\x12\x34' | xxd -p

$ echo -n $'\x12\x34' | hexdump -e '"%x"'

od -vt x1|awk '{$1="";print}'
echo "obase=16; 34" | bc

c++命令行不直接关闭。。。最后用断点的方式替代了,没找到好的方法!!

文件读写

g++

git

重要的参考文章再列一遍

TODO 编译打包

–END

Comments