20 คะแนน โดย iolothebard 2025-02-28 | 9 ความคิดเห็น | แชร์ทาง WhatsApp

จากไบนารีบางส่วนที่ไม่ใช่ซอร์สโค้ด (ไม่มี runtime DLL)
กลับสามารถหาวัตถุประสงค์ของโปรแกรมต้นฉบับได้ และเขียนใหม่เป็น Python…
ไม่ว่าจะในแง่ดีหรือแง่ร้าย ก็คงต้องเรียกว่าเป็น “ปัญญา” ประดิษฐ์จริง ๆ

แปล:

หลังจากผิดหวังกับ AI มาหลายปี ผมช็อกมากจริง ๆ นี่ไม่ใช่โพสต์แนว "AI น่าทึ่งมาก" ทั่วไป เพราะจนถึงวันนี้ผมยังคงเป็นคนที่สงสัยอยู่

พื้นหลัง : เช่นเดียวกับหลาย ๆ คน ผมเคยลองใช้ ChatGPT และเครื่องมือ AI อื่น ๆ เพื่อช่วยเขียนโค้ด ผลลัพธ์คืออะไร? น่าผิดหวังอย่างสม่ำเสมอ มันเป็นเหมือนเสิร์ชเอนจินที่แต่งตัวสวยงามและพ่นโค้ดผิด ๆ ออกมาพร้อมคำอธิบายที่ฟังดูมั่นใจ

โจทย์ท้าทาย : วันนี้หลานสาววัย 2 ขวบมาหาผม ทำให้ผมนึกถึงแอปง่าย ๆ ที่ผมสร้างไว้ด้วย Visual Basic 4 ใน 1997 แต่จะให้รันไฟล์ปฏิบัติการที่อายุ 27 ปีงั้นเหรอ? โดยไม่มี DLL เก่า ๆ และ compatibility layer น่ะเหรอ? ใช่แล้ว

The Hail Mary : ด้วยความอยากรู้อยากเห็น ผมอัปโหลดไฟล์ EXE จริงเข้าไปให้ Claude 3.7 แล้วถามสั้น ๆ ว่า: "ช่วยบอกวิธีรันไฟล์นี้ได้ไหม? ดูเหมือนมันถูกสร้างด้วย Visual Basic 4 ถ้าแปลงเป็น Python ได้ก็น่าจะดี"

ผลลัพธ์ที่คาดไว้ : คำตอบทั่ว ๆ ไปประมาณว่า "มันเป็นไฟล์เก่า มีความเสี่ยงด้านความปลอดภัย และอื่น ๆ"

สิ่งที่เกิดขึ้นจริง: Claude 3.7 เริ่มต้นด้วยคำเตือนตามที่คาดไว้ แต่หลังจากนั้นเรื่องก็น่าสนใจขึ้น มัน somehow วิเคราะห์ ไบนารีและระบุองค์ประกอบบางอย่างได้ เช่น:

  • "Form1"
  • "cntTimer"
  • "btnExit"
  • มันตรวจพบแม้กระทั่งไฟล์เสียงที่ฝังอยู่ด้วย!

จากนั้นมันก็ทำในสิ่งที่ AI ตัวอื่นไม่เคยทำได้ มันเขียนเวอร์ชัน Python แบบสมบูรณ์โดยใช้ Pygame:

  1. จำลองฟังก์ชันการทำงานได้อย่างครบถ้วน
  2. มีคำแนะนำการติดตั้งที่ชัดเจน
  3. ใช้งานได้จริงตั้งแต่ครั้งแรก

เวลาที่ใช้: ไม่ถึง 5 นาที นี่ไม่ได้พูดเกินจริงเลย

เมื่อผมขอให้ปรับเพิ่ม เช่น ผูกเสียงเข้ากับปุ่ม Space และใส่ฟอนต์หลากสี มันก็อัปเดตโค้ดที่สมบูรณ์แบบกลับมาให้ทันที

นี่เป็นครั้งแรกตั้งแต่ผมใช้ AI มา ที่ผมรู้สึกทึ่งจริง ๆ มันไม่ใช่แค่ลูกเล่นโชว์อีกต่อไป แต่เป็นโซลูชันที่ใช้งานได้จริงและช่วยประหยัดเวลาทำงานให้ผม

สุดท้ายผมก็บอก Claude ว่าผมประทับใจ แล้วสรุปแบบงง ๆ ว่าทำไมผมถึงคิดว่ามันเจ๋ง.... จากนั้นมันก็ช่วยเขียนโพสต์ Reddit ใหม่ให้ด้วย ซึ่งจริง ๆ แล้วฟังดู "เกือบ" เป็นธรรมชาติมากทีเดียว (ส่วนนี้ผมเขียนเอง)

<วันเดียวกัน หลังจากนั้น 5 ชั่วโมง> อัปเดต

ผมโพสต์อัปเดต/สรุปเกี่ยวกับโพสต์นี้ (เขียนโดยผมเอง) ไม่แน่ใจว่านี่เป็นวิธีที่ถูกต้องหรือเปล่า แต่มีคนบนอินเทอร์เน็ตอย่างน้อยหนึ่งคนบอกว่าใช่ ดังนั้นมันก็คงจริงมั้ง

https://www.reddit.com/r/ClaudeAI/comments/1iz1i61/update_i_uploaded_a_27yearold_exe_file_to_claude/

<อัปเดต - 11 ชั่วโมงต่อมา>

ดูเหมือนว่าผมจะกลายเป็น 'คุณตาแห่ง Reddit' ไปแล้ว สนุกดี

ขอแก้ไขบางอย่างให้ชัดเจน:

- ใช่ Claude อนุญาตให้อัปโหลด EXE ได้
- EXE ที่คอมไพล์แล้วมีสตริงที่พอมองออกอยู่บ้าง แต่ไม่ได้มีเยอะมาก
- โพสต์นี้กับชื่อเรื่อง Claude เป็นคนเขียน นอกจากนี้ส่วนที่ดีที่สุดคือมันทำได้แบบ one-shot
- ตอนนี้ลูกสาวของผมอายุ 29 ปีแล้ว และเมื่อเธอกดคีย์บอร์ด มันก็เล่นไฟล์ wav และแสดงข้อความ

มีบางคนบอกว่าไม่เห็นลิงก์แชตในคอมเมนต์ ผมเลยเพิ่มไว้ตรงนี้:

https://claude.ai/share/3eecebc5-ff9a-4363-a1e6-e5c245b81a16

<อัปเดต - 1 วันต่อมา>

โพสต์นี้ที่ถูกนำไปโพสต์ซ้ำบน Twitter/X มียอดเข้าชมเกินหนึ่งล้านครั้งแล้ว Full post here. ผมอัปโหลดโพสต์พร้อมคอมเมนต์ทั้งหมดให้ Claude ในบริบทเดียวกับที่ใช้เขียนสคริปต์และโพสต์นี้ โดยเฉพาะผมขอให้มันช่วยสรุปคำวิจารณ์ นี่คือสิ่งที่ Claude สรุปไว้:

บริบททางเทคนิคที่ใช้ได้จริง

บางคนชี้อย่างถูกต้องว่าไฟล์ปฏิบัติการ VB4 ถูกคอมไพล์เป็น p-code ไม่ใช่ machine code จึงวิเคราะห์ได้ง่ายกว่าไฟล์ปฏิบัติการที่คอมไพล์สมบูรณ์ นี่เป็นข้อสังเกตที่ถูกต้องจริง ๆ VB ยุคก่อน .NET เก็บข้อมูลในรูปแบบ bytecode ที่ตีความได้ จึงดึงข้อมูลออกมาได้ง่ายกว่าไบนารีที่คอมไพล์สมบูรณ์

ความสงสัยเรื่องความซับซ้อน

บางคนก็ชี้ว่าโค้ด Python ที่ได้ค่อนข้างเรียบง่าย (ประมาณ 100 บรรทัด) เพราะตัวแอปเองไม่ใช่แอปพลิเคชันซับซ้อน แต่เป็นโปรแกรมธรรมดาที่มีฟังก์ชันพื้นฐาน จุดที่น่าประทับใจไม่ใช่ความซับซ้อนของโค้ดที่สร้างขึ้น แต่คือการเปลี่ยนจากไบนารีไปเป็นโค้ดที่ใช้งานได้โดยแทบไม่ต้องออกแรงเลย

ความเข้าใจผิดเกี่ยวกับกระบวนการ

นักวิจารณ์บางคนดูเหมือนจะคิดว่าผมอ้างว่า Claude "decompile" ไฟล์ปฏิบัติการในความหมายแบบดั้งเดิม แต่จริง ๆ แล้วอย่างที่ผมอธิบายไว้ในการสนทนา มันเป็นการวิเคราะห์สตริงที่มองเห็นได้แล้วอนุมานฟังก์ชันออกมา ซึ่งยังคงน่าประทับใจ แต่ไม่ใช่การ decompile ที่แท้จริง

ความสงสัยต่อ AI โดยทั่วไป

ในวงการเทคโนโลยี การมอง AI อย่างสงสัยเป็นเรื่องธรรมชาติอยู่แล้ว และผู้แสดงความคิดเห็นบางคนก็รีบปัดเดโมที่น่าประทับใจทิ้งว่าเป็นของปลอม เกินจริง หรือ "แค่ pattern matching" ซึ่งเป็นรูปแบบปฏิกิริยาทั่วไปต่อความก้าวหน้าของ AI คำวิจารณ์ที่ผมคิดว่าสมเหตุสมผลที่สุดคือ ความสำเร็จนี้ควรถูกมองตามบริบท เพราะ Claude ไม่ได้ทำ binary analysis ที่แท้จริงกับโค้ดที่คอมไพล์มาแบบสุ่ม แต่มันทำการอนุมานอย่างชาญฉลาดจากสตริงข้อความในไฟล์ปฏิบัติการ VB

9 ความคิดเห็น

 
ndrgrd 2025-03-04

จริง ๆ แล้วมันก็ไม่ได้ต่างจากการอ่านและวิเคราะห์เอกสารข้อความธรรมดาเท่าไหร่นัก..

 
kandk 2025-02-28

ว้าว แบบนี้ไฟล์เก่า ๆ ที่ถูกลืมไปก็อาจกู้คืนได้เหมือนกันใช่ไหมครับ 555
อย่างถ้าเอาวิดีโอเกม dos เก่า ๆ ไปอัป ก็อาจมี EXE file โผล่ออกมางี้น่ะเหรอ..

 
hi098123 2025-02-28

ตามความเห็นในเนื้อหา ถ้าเป็นไฟล์ vb exe ก็สามารถตรวจดูโค้ดได้ตามที่เขียนไว้เดิม แต่เพราะเป็น c++ exe ถ้าเป็นระดับแอสเซมบลีก็คงยังทำไม่ได้
จุดแข็งอย่างหนึ่งของ AI คือเข้าใจคำสั่งและประยุกต์ใช้ได้ เลยแอบทำงานย้ายระบบไปยังภาษาอื่นได้ค่อนข้างดีเหมือนกัน

 
iolothebard 2025-02-28

ฉันคิดว่าอาจมีเอกสารเกี่ยวกับ p-code ของ VB 4.0 อยู่ในข้อมูลที่ Claude เรียนรู้มา

ถ้าไม่ใช่อย่างนั้น (ถ้าไม่มีอะไรที่ถูกพรีเทรนไว้ล่วงหน้า) ในมุมของ AI แล้ว p-code ของ VB 4.0 กับแมชชีนโค้ด x86 (หรือ arm หรือ...) จะต่างกันมากแค่ไหน? ทั้งคู่ก็เป็นเพียงลำดับของตัวเลขที่มีรูปแบบบางอย่างเหมือนกันทั้งนั้น ถ้ามันอ่านแพตเทิร์นจากตัวอย่างสั้น ๆ ได้ แบบนั้นก็น่ากลัวไปอีกแบบนะ

 
hi098123 2025-03-01

ถ้าสร้าง exe จากภาษาอย่าง vb หรือ python มันไม่ได้คอมไพล์เป็นภาษาเครื่อง ดังนั้นถ้ามีแค่ไฟล์ exe ก็สามารถดึงซอร์สโค้ดออกมาได้โดยยังเห็นชื่อฟังก์ชันและชื่อตัวแปรเดิมอยู่
การที่มันเรียนรู้กฎพวกนี้แล้วนำไปประยุกต์ได้แบบนี้.. ต่อไปในอนาคตคงยากที่จะอยู่รอดในฐานะนักพัฒนาแล้วล่ะ

 
kandk 2025-02-28

แต่ยังไงภาษาแอสเซมบลีก็มีสเปกอยู่แล้ว ถ้าให้สเปกไปด้วยก็น่าจะแปลได้อย่างรวดเร็วครับ

 
hi098123 2025-03-01

การแปลงจากแอสเซมบลีให้ออกมาเป็นโค้ดภาษาธรรมชาติที่พออ่านรู้เรื่องนั้น เป็นงานในระดับของการสร้างขึ้นใหม่หลังจากข้อมูลที่ไม่จำเป็นถูกลบไปแล้วอีกครั้ง (เช่น ชื่อตัวแปร ชื่อฟังก์ชัน ฯลฯ) เลยคิดว่ากว่าจะออกมาดูดีคงต้องใช้เวลาอีกสักหน่อย

 
kandk 2025-03-01

อาจจะง่ายก็ได้นะครับ 555
ผมเคยเขียนวิทยานิพนธ์เกี่ยวกับอะไรคล้ายๆ กันเมื่อราว 10 กว่าปีก่อน

 
unsure4000 2025-02-28

ว้าว อันนี้น่าทึ่งพอสมควรเลย