破解2C(goto混淆)解密之旅

2023-12-20 07:18
文章标签 解密 破解 goto 之旅 混淆 2c

本文主要是介绍破解2C(goto混淆)解密之旅,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近有朋友找我修复微擎一个模块小程序的功能,接到文件浏览了一遍,原来是goto混淆,最后我是拒绝了解密。
这种加密方式已经不是第一次见了,以前也有很多人找我弄过这种,当时也尝试过去还原,捣鼓了3天左右,不得不说这种加密看起来很简单,其实还原起来非常吃力,第一次解密以失败告终。后来遇到这种加密的单子也是直接拒绝了,因为太难了,如果按照当时的见识和技术去研究的话,直到解密完成起码要花1-2个月,而且解密这种文件顶多也就收四、五块钱一个,所以没有必要浪费这么多时间去研究。
不过拒绝这个单子后回想,以前看过一些在线的解密,所以过后考虑一天,决定研究去解密。
讲解goto加密之前先上几张样本图:

在这里插入图片描述

经过研究,这种混淆器的混淆点和解决办法主要分以下几点:

if($code){
echo 'code';
}
//反向解密
if(!$code){
echo 'code';
}

单纯的if语句:这种单一存在的语句在混淆器中处理后,其中的condition会被反向 也就是条件反向的处理,所以处理if语句前需要遍历一次语法树进行condition的反向还原,即de_cond

复杂的if语句:比如if…else…和if…elseif…else等,这种if语句的处理只需正常处理即可

解析elseif语法:如果当前节点的下一个节点为if语法块,则进行elseif的还原if 下一个节点也是为 if 使用if-elseif拼接

//加密混淆代码
goto ZLIN5; xuT32: GkJl9: goto z0Q1l; qz2Od: echo "\347\254\xac\xe4\xba\214\344\xb8\xaa\151\146"; goto bm5cx; bm5cx: iMbaq: goto wnxep; RqBXL: if ($LDzsz == "\x31") { goto GkJl9; } goto Qx9cj; ogKCJ: goto iMbaq; goto xuT32; Qx9cj: if ($LDzsz == "\62") { goto ol5jq; } goto ogKCJ; BGe9N: ol5jq: goto qz2Od; ZLIN5: echo "\350\277\231\344\270\xaa\346\x98\xaf\151\146\55\145\x6c\x73\145\x69\x66\350\212\x82\347\202\xb9"; goto RqBXL; z0Q1l: echo "\351\234\200\xe8\xa6\x81\xe8\247\xa3\345\xaf\206\357\274\x9a\x31\x38\x33\x37\x35\71\x38\x39\x30\x36"; goto WJ2fG; WJ2fG: goto iMbaq; goto BGe9N; wnxep: echo "\x65\156\144";
//解密后代码
echo '这个是if-elseif节点';
if($code == '1'){echo '需要解密:1837598906';
}elseif($code == '2'){echo  '第二个if';
}
echo 'end';

解析else语法:如果遇到的混淆中间节点为goto的,则认定为else语句结束点并进行结束处理。
全部解密脚本用了一个多月的时间完成了!!!
暂时就写这一步,待续

这篇关于破解2C(goto混淆)解密之旅的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/515168

相关文章

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

【C#生态园】解密C# Web框架:选对框架,事半功倍

探秘C# Web开发利器:六款高性能框架与库详细解读 前言 在当今的软件开发领域,C#作为一种多用途编程语言,被广泛应用于各种类型的应用程序开发。特别是在Web开发领域,有许多优秀的C# Web框架和库,本文将对其中一些备受关注的框架进行介绍和比较,帮助读者更好地选择适合其项目需求的工具。 欢迎订阅专栏:C#生态园 文章目录 探秘C# Web开发利器:六款高性能框架与库详细解

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html

Spring Boot 注解探秘:HTTP 请求的魅力之旅

在SpringBoot应用开发中,处理Http请求是一项基础且重要的任务。Spring Boot通过提供一系列丰富的注解极大地简化了这一过程,使得定义请求处理器和路由变得更加直观与便捷。这些注解不仅帮助开发者清晰地定义不同类型的HTTP请求如何被处理,同时也提升了代码的可读性和维护性。 一、@RequestMapping @RequestMapping用于将特定的HTTP请求映射到特定的方法上

LLVM IR指令VM混淆分析

未混淆编译  编写一个最简单的测试代码,对 test_add函数用于对两个数相加: int __attribute((__annotate__("vm"))) test_add(int a, int b) {int c = a + b;return c;}int main(void) {int c = test_add(1, 2);return c;} 编译成中间代码:  未加

28.8K Star,音乐新体验,开启你的高颜值音乐之旅

Hi,骚年,我是大 G,公众号「GitHub 指北」会推荐 GitHub 上有趣有用的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注。 导语 音乐是生活中不可或缺的调味品,一个好的音乐播放器能够极大地提升我们的听觉享受。今天,我要向大家推荐一个名为 YesPlayMusic 的第三方网易云音乐播放器,它不仅拥有高颜值的界面设计,还支持跨平台使用,让你的音乐体验更上一层楼

详解BitLocker模式及加密数据和解密方法及无法访问解决之道

BitLocker主要有两种工作模式:TPM模式和U盘模式,同时为了实现更高程度的安全,我们还可以同时启用这两种模式。 BitLocker 自动设备加密在全新安装体验 (OOBE) 期间启动。 但是,只有在用户使用 Microsoft 帐户或 Azure Active Directory 帐户登录后,才会启用(提供)保护。 在此之前,保护已暂停,数据不受保护。 使用本地帐户不会启用 BitLoc

杨bob的技术之旅

杨bob今天正式入驻csdn,以后要把自己每一点滴写成文章,这也是冲高阶的毕竟之路

Midjourney 随机风格 (Style Random),开启奇幻视觉之旅

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话:       Midjourney 最近推出了 "Style Random"(随机风格),这项功能可以让我们使用独特的随机 sref 代码创建图像,从而每次都能获得不同的美感。通过对这些功能的探索和尝试,我发现了一些很棒的风格,我很高兴能与大家分享,这样可以节省大家的时间,不用自己动手测试。在本文中,我将展示十个M