原标题:GPT-4或者ChatGPT能帮着读代码吗?
关键字:互联网,人工智能,AI技术,AIGC,ChatGPT
最佳回答:Serendipity
回答字数:2547字
能帮着读代码,也可以帮忙解释代码的意思,辅助阅读代码。
但是,ChatGPT 的能力不仅仅是读一般的代码,或者说shell脚本,还可以读些更有趣的代码。
关于阅读代码这点,本提问下已经有很多回答了,我来换个角度观察下这个问题。
GPT-4或者ChatGPT,不仅能帮着读正常人写的代码,还可以帮忙静态分析一些恶意攻击者用来试图逃避安全检测的代码,帮助安全人员做代码的静态分析工作。
故事是这样的:刚刚睡前去网上冲浪逛了逛,看到自己关注的博主分享了一个“深入混淆 PowerShell 有效负载的各个组件的方法”。
于是,我点进去看了看
点开网站链接后,我看到这个网站里,给出了一个混淆后的代码示例
Generator 2 >> 4444 >> $(0-0+0+0-0-0+0+4444) Generator 1 >> 65535 >> $((65535)) [*] Obfuscating strings Generator 2 >> 127.0.0.1 >> $([char](16*49/16)+[char](109*50/109)+[char](0+55-0)+[char](20*46/20)+[char](0+48-0)+[char](0+46-0)+[char](0+48-0)+[char](0+46-0)+[char](51*49/51)) Generator 2 >> PS >> $([char](1*80/1)+[char](86+83-86)+[char](0+32-0)) Generator 1 >> > >> ([string]::join(, ( (62,32) |%{ ( [char][int] $_)})) | % {$_}) [*] Obfuscating cmdlets Generator 2 >> New-Object >> & ([string]::join(, ( (78,101,119,45,79,98,106,101,99,116) |%{ ( [char][int] $_)})) | % {$_}) Generator 2 >> New-Object >> & ([string]::join(, ( (78,101,119,45,79,98,106,101,99,116) |%{ ( [char][int] $_)})) | % {$_}) Generator 1 >> Out-String >> & ((Tpltq1LeZGDhcO4MunzVC5NIP-vfWow6RxXSkbjYAU0aJm3KEgH2sFQr7i8dy9B)[13,16,3,25,35,3,55,57,17,49] -join ) [*] Writing payload to /home/tristram/obfuscated.ps1 [*] Done dir=auto>
本着恶作剧的想法,我把这段混淆后的,意欲逃过防御手段和语义分析的代码,扔到了 GPT-3.5 和 GPT-4 里,让它们去分析下这段代码的功能。
这是GPT-3.5(ChatGPT)给出的回答:
总体来说,这段代码通过字符串混淆和数学运算等方式,生成了一个难以被轻易识别和防御的PowerShell payload。
这是GPT-4给出的回答:
总的来说,这段代码的目的是生成一个包含混淆字符串和cmdlets的PowerShell脚本,以增加其难以阅读和识别的程度。这种技术通常用于恶意软件或恶意脚本,试图逃避安全系统的检测。
可以看到,这两者都分析除了这段代码的基本作用,并且识别出了写代码之人的意图所在。
关于这点,还是GPT-4说的最为直接明了:“这种技术通常用于恶意软件或恶意脚本,试图逃避安全系统的检测。”
就如上来看,GPT-4 或者 ChatGPT 不仅能帮着读代码,而且还能较好的分析这种不易读的混淆代码,做很好的静态分析。
作为一名网络安全人员,我觉得这还是很好的~
联系作者
回答作者:Serendipity
这应该是GPT-4最擅长的事情之一了。
因为GPT-4的训练数据集中包含了大量来自于Github的代码,所以它不仅会读代码,还会写代码,甚至可以以各种方式花式写代码。
其实这类型问题你完全可以直接问GPT,它说行就大概率行:
然后你可以反过来再问它:
比如再换一种方式写这个代码:
你甚至可以给它提一些离谱的要求
这么说吧,基本上你能想到的问题都可以直接问它。
特别是代码这一块,就没有它不敢回答的。
当然了,答案不保证正确,你得自己亲自试过才可以。