借助 ChatGPT 解码混淆的 Javascript 代码
由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!
早在 2022 年,Anthony Smith分享了一个关于 Javascript 代码混淆的有趣技巧。
问题?
分析混淆的 JavaScript 代码非常困难,因为代码故意写得晦涩难懂,以隐藏其真实用途。这使得调试、理解和安全问题检查都变得异常困难,需要使用特殊的工具和方法。
分析混淆后的 JavaScript 代码时,不妨试试 GPT!以下是具体操作方法。
使用 GPT 解码混淆的 JavaScript 代码的快速技巧
- 请让GPT分析代码,然后粘贴分析结果。
- 然后要求重写以提高可读性!
输入/输出
以下是我输入给 GPT 的内容:
Please analyze the following code and tell me what it does?
function _0x33bc(_0x357a49, _0x4d043b) {
var _0x3af57c = _0x3af5();
return _0x33bc = function (_0x33bc59, _0x2d7f6b) {
_0x33bc59 = _0x33bc59 - 0xac;
var _0x433c74 = _0x3af57c[_0x33bc59];
return _0x433c74;
}, _0x33bc(_0x357a49, _0x4d043b);
}
var _0x5b0965 = _0x33bc;
function _0x3af5() {
var _0x16d4f2 = ['2293120DDXwAC', '5tguhIh', 'ExpressJS', '32097acJbHr', '1234303tDdtZs', 'HTML', '51273EoArEE', 'CSS', 'JavaScript', '3214428qqnLuG', 'MongoDB', '40qdyzEo', 'Smith', '252346qcgJWs', '292cvJCiT', 'Anthony', 'PHP', '2392880xWQHuO',...
然后她解释了细节,但仍然不清楚这段代码应该做什么。
之后我又提出了更多要求!她完美地重写了代码,并将其转换成了易于阅读和理解的源代码!太棒了!
function generateProgrammingLanguages() {
return ['HTML', 'CSS', 'JavaScript', 'React', 'NodeJS', 'MongoDB', 'ExpressJS', 'PHP'];
}
function selectLanguage(index) {
const languages = generateProgrammingLanguages();
return languages[index];
}
const person = {
first_name: 'Anthony',
last_name: 'Smith',
occupation: 'Full Stack Developer',
languages: [
selectLanguage(0),
selectLanguage(1),
selectLanguage(2),
'React',
selectLanguage(3),
selectLanguage(4),
selectLanguage(5),
selectLanguage(6),
]
};
现在得到的响应与 Anthony 提供的示例非常接近。至少,现在更容易理解这段代码的运行机制了。
如何对源代码进行反混淆?您使用 ChatGPT 的哪些功能来解释源代码?请在评论区回答!
感谢阅读。
参考
请在 ChatGPT 中查看完整会话。
文章来源:https://dev.to/vladignatyev/decode-obfuscating-javascript-code-with-chatgpt-30ic