尽管到目前为止,这些工具在将代码清理成我们可以理解的内容方面做得很好,但一旦代码变得更加模糊和编码,自动化工具清理它就会变得更加困难。如果使用自定义混淆工具对代码进行混淆,则尤其如此。
介绍
在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。
什么是混淆
混淆是一种技术,用于使脚本更难以被人类阅读,但从技术角度来看,它可以发挥相同的功能,尽管性能可能会较慢。这通常是通过使用混淆工具自动实现的,该工具将代码作为输入,并尝试以更难以阅读的方式重写代码,具体取决于其设计。
例如,代码混淆器通常将代码转换成代码中使用的所有单词和符号的字典,然后在执行期间尝试通过引用字典中的每个单词和符号来重建原始代码。以下是一个简单的 JavaScript 代码被混淆的示例:
为什么用混淆?
开发人员考虑混淆代码的原因有很多。一个常见的原因是隐藏原始代码及其功能,以防止在未经开发人员许可的情况下重复使用或复制它,从而使对代码的原始功能进行逆向工程变得更加困难。另一个原因是在处理身份验证或加密时提供安全层,以防止对代码中可能发现的漏洞进行攻击。
必须注意的是,不建议在客户端进行身份验证或加密,因为这样代码更容易受到攻击。
然而,混淆最常见的用途是用于恶意行为。攻击者和恶意行为者通常会混淆其恶意脚本,以阻止入侵检测和防御系统检测其脚本。
基础混淆
代码混淆通常不是手动完成的,因为有许多针对各种语言的工具可以自动进行代码混淆。尽管许多恶意行为者和专业开发人员开发了自己的混淆工具以使反混淆变得更加困难,但许多在线工具都可以这样做。
我们发现我们的代码变得更加混乱且难以阅读。我们可以将此代码复制到https://jsconsole.com,以验证它仍然执行其主要功能:
虽然加壳器在降低代码的可读性方面做得很好,但我们仍然可以看到它的主要字符串以明文形式编写,这可能会揭示它的一些功能。这就是为什么我们可能想要寻找更好的方法来混淆我们的代码。
高级混淆工具
到目前为止,我们已经能够使我们的代码变得模糊并且更难以阅读。但是,该代码仍然包含明文字符串,这可能会揭示其原始功能。我们将尝试一些工具,它们应该完全混淆代码并隐藏其原始功能的任何残留。
#0x1 ipaguard Tool - springboot混淆工具
有一个在线的混淆工具:ipaguard Tool
一个免费且高效的 springboot混淆器。使您的代码更难复制,并防止人们窃取您的工作。
Ipa Guard是一款功能强大的ipa混淆工具,不需要ios app源码,直接对ipa文件进行混淆加密。可对IOS ipa 文件的代码,代码库,资源文件等进行混淆保护。 可以根据设置对函数名、变量名、类名等关键代码进行重命名和混淆处理,降低代码的可读性,增加ipa破解反编译难度。可以对图片,资源,配置等进行修改名称,修改md5。只要是ipa都可以,不限制OC,Swift,Flutter,React Native,H5类app。
ipaguard界面概览
ipaguard界面分左右2块:左边菜单导航栏,右边的功能区左侧菜单:按模块分成启动界面,代码模块,文件模块,重签名与测试模块右侧主功能区会随着功能变化,但是整体分3块,顶部显示过滤区,中间主体内容显示区,底部开关控制和强度控制下面分模块介绍ipaguard功能界面。
ipaguard启动界面
这个界面可以选中打开文件,从配置加载文件,切换软件显示的语言,登录账号,查看软件的版本信息等
ipaguard代码混淆界面
代码混淆界面随左侧的菜单不同略有区别。但是整体是,顶部选择需要处理的macho文件,然后是一排显示过滤控制功能。
资源文件混淆界面
资源文件模块包括了文件名称修改,web资源压缩,图片水印等等功能。界面分顶部的显示控制,中介的文件列表,底部的是否处理开关。
重签名界面
签名配置界面可以配置签名证书,描述文件,设置app的权限(次功能大部分app是用不到的),设置混淆加密完是否要直接安装到设备。底部同样是是否进行签名的总开关
注意事项
尽管到目前为止,这些工具在将代码清理成我们可以理解的内容方面做得很好,但一旦代码变得更加模糊和编码,自动化工具清理它就会变得更加困难。如果使用自定义混淆工具对代码进行混淆,则尤其如此。
我们需要手动对代码进行逆向工程,以了解它是如何被混淆的以及它在这种情况下的功能。