App代码混淆(自定义字典)

admin 2022年5月3日01:05:55评论217 views字数 1372阅读4分34秒阅读模式

最近,朋友给我转一张图,图片是这样的:

App代码混淆(自定义字典)

图中是用jd-gui工具反编译软件包所呈现的界面,可以看到,该软件包中的包名和类名充斥着对逆向工程师的骂,这些过激的词汇应该是软件开发者在生成软件的时候用混淆器同时生成的。看到这些,我的内心不由得在嘀咕:啊?这,怎么回事,现在逆向工程师的风评都这么差了吗?生而为人,从事逆向工程师,我很抱歉。怎么?你竟然觉得这混淆有点意思?好巧,我也这么觉得。让我们一起来看看这种混淆是怎么生成的吧

首先,找一个Android Studio的项目,最好是有一点代码,而且要能正常生成APK的

在app/build.gradle中开启代码混淆

android{    ......    buildTypes {        debug {            minifyEnabled true            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }
release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}

在app/proguard-rules.pro下指定字典,这里所有可混淆项都用同一个字典文件

# 指定变量名/方法名字典-obfuscationdictionary dict.txt# 指定类名字典-classobfuscationdictionary dict.txt# 指定包名字典-packageobfuscationdictionary dict.txt

接下来,创建字典文件,字典文件存储着要混淆词的集合,比如上面的骂逆向工程师的话就是存在字典里。在这里,我在app目录下创建一个字典文件dict.txt(和proguard-rules.pro同目录),输入一些词或者句子:

App代码混淆(自定义字典)

最后生成apk。

apk生成后,怎么看效果呢?把其中的classes.dex文件解压出来。由于jd-gui工具是不支持直接反编译dex的,那我们用dex2jar文件将classes.dex转成jar

App代码混淆(自定义字典)

最后在jd-gui工具中打开转换好的jar文件

App代码混淆(自定义字典)

效果已经出来,这样,逆向工程师拿我们的apk去反编译心情也会变好,自然就会放弃破解我们的软件了(可能有点理想化)~

如果,你想和逆向工程师硬刚,那可以用这份由o0O组成的变态字典:https://github.com/ysrc/AndroidObfuseDictionary/blob/master/dic.txt

App代码混淆(自定义字典)

生成apk,并反编译,效果如下:

App代码混淆(自定义字典)

这种o0O的组合是不是看得眼花缭乱,头皮发麻?mt管理器就曾经用过这种o0O组合的混淆规则,效果还不错。如果想寻求更变态的混淆,可以自行将那些阅读起来非常困难的字符加入到字典,然后生成apk.

总之,想让自己的软件增加破解难度,可以使用混淆,并将重要代码放在native层或者服务端。想通过骂人的话来制止破解,还是不太可能的。

第一步:感兴趣的可以加入知识星球

App代码混淆(自定义字典)


第二步:进入菜单栏--->商务合作--->联系作者

App代码混淆(自定义字典)


第三步:添加到"Android安全研究技术交流群"

App代码混淆(自定义字典)


第四步:感兴趣的可以关注"哆啦安全"视频号

原文始发于微信公众号(哆啦安全):App代码混淆(自定义字典)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月3日01:05:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   App代码混淆(自定义字典)http://cn-sec.com/archives/960923.html

发表评论

匿名网友 填写信息