ChatGPT可以反編譯?
ChatGPT好好『善用』,他就是一個好幫手。最近在台灣駭客年會HITCON CMT 2023第一天的議程中又看到一種用法-反編譯。
於是拿很久前接觸OPCode時整理的內容作範例試試看。在之前的文章中有將一個很簡單的PHP程式利用VLD轉成OPCode,我選用該篇文章中的PHP 5.2.17版本OPCode(如下)嘗試讓ChatGPT轉回PHP
於是拿很久前接觸OPCode時整理的內容作範例試試看。在之前的文章中有將一個很簡單的PHP程式利用VLD轉成OPCode,我選用該篇文章中的PHP 5.2.17版本OPCode(如下)嘗試讓ChatGPT轉回PHP
number of ops: 22
compiled vars: !0 = $temp, !1 = $count, !2 = $i
line # * op fetch ext return operands
-----------------------------------------------------------------------
3 0 > INIT_ARRAY ~0 1
1 ADD_ARRAY_ELEMENT ~0 2
2 ADD_ARRAY_ELEMENT ~0 3
3 ADD_ARRAY_ELEMENT ~0 4
4 ASSIGN !0, ~0
4 5 SEND_VAR !0
6 DO_FCALL 1 $2 'count'
7 ASSIGN !1, $2
5 8 ASSIGN !2, 0
9 > IS_SMALLER ~5 !2, !1
10 > JMPZNZ E ~5, ->18
11 > POST_INC ~6 !2
12 FREE ~6
13 > JMP ->9
6 14 > ECHO !2
15 FETCH_CONSTANT ~7 'PHP_EOL'
16 ECHO ~7
7 17 > JMP ->11
8 18 > SEND_VAR !0
19 DO_FCALL 1 'var_dump'
20 > RETURN 1
21* > ZEND_HANDLE_EXCEPTION
下面為ChatGPT傳回的結果
<?php
$temp = array();
$temp[] = 1;
$temp[] = 2;
$temp[] = 3;
$temp[] = 4;
$count = count($temp);
$i = 0;
while ($i < $count) {
echo $i;
echo PHP_EOL;
$i++;
}
var_dump($temp);
?>
下面,則是原本測試時的PHP原始碼。雖然寫法不同,但ChatGPT回傳的PHP code是對的。
<?php
$temp = array(1, 2, 3, 4);
$count = count($temp);
for ($i = 0; $i < $count; $i++) {
echo $i , PHP_EOL;
}
var_dump($temp);
後記:
留言