10P by iolothebard 5시간전 | ★ favorite | 댓글 5개

소스가 아닌 부분적인 바이너리(런타임DLL이 없었음)에서
원래 프로그램의 목적을 알아내고, 파이썬으로 재작성…
좋은 쪽이든 나쁜 쪽이든 확실히 “인공”지능이네요.

번역:

수년간의 AI 실망 끝에 저는 정말 큰 충격을 받았습니다. 이 글은 일반적인 "AI는 놀랍다"는 식의 글이 아닙니다. 저는 오늘까지만 해도 회의적이었습니다.

배경 : 많은 분들과 마찬가지로 저도 코딩 지원을 위해 ChatGPT와 다른 AI 도구를 사용해 보았습니다. 결과는? 일관되게 압도적이었습니다. 자신감 넘치는 설명으로 포장된 잘못된 코드를 뱉어내는 미화된 검색 엔진이었죠.

도전 과제 : 2살짜리 손녀가 오늘 저를 찾아왔습니다. 저는 1997년에 Visual Basic 4로 만든 간단한 앱이 생각났습니다. 하지만 27년 된 실행 파일을 실행한다고요? 오래된 DLL과 호환성 레이어 없이요? 네, 맞습니다.

The Hail Mary : 호기심에 실제 EXE 파일을 Claude 3.7에 업로드하고 간단한 질문을 던졌습니다: "이 파일을 실행하는 방법을 알려주실 수 있나요? 이 파일은 Visual Basic 4에서 만든 것 같습니다. 파이썬으로 변환하면 좋을 것 같습니다."

예상한 결과 : "오래된 파일이라 보안 위험이 있고 어쩌고저쩌고..."라는 일반적인 답변이 돌아왔습니다.

실제로 일어난 일: Claude 3.7은 예상했던 경고와 함께 시작했지만, 그 후 상황이 흥미로워졌습니다. 어떻게든 바이너리를 분석하고 특정 구성 요소를 식별했습니다:

  • "Form1"
  • "cntTimer"
  • "btnExit"
  • 심지어 임베디드 사운드 파일도 감지했습니다!

그런 다음 다른 어떤 AI도 하지 못한 일을 해냈습니다. Pygame을 사용하여 완전한 Python 변환을 작성했습니다:

  1. 기능을 완벽하게 복제했습니다.
  2. 설치에 대한 명확한 지침이 있었습니다.
  3. 실제로 처음 작동함

소요 시간: 5분 미만. 과장이 아닙니다.

스페이스 키에 소리를 바인딩하고 다채로운 글꼴을 추가하는 등의 조정을 요청하자 즉시 완벽한 코드 업데이트를 제공했습니다.

AI를 사용해 본 이래 처음으로 정말 감탄했습니다. 단순한 파티용 트릭이 아니라 제 작업 시간을 절약해 주는 실용적인 솔루션이었죠.

결국 저는 Claude에게 감명을 받았다고 말하면서 왜 멋지다고 생각하는지 서툴게 요약해서.... 보내주었고, 그 후 Reddit 게시물을 다시 작성해 주었습니다. 사실 "거의" 정상적으로 들립니다. (이 부분은 제가 썼습니다).

<같은 날 5시간 후> 업데이트

이 게시물에 대한 업데이트/요약(제가 작성한)을 올렸습니다. 이게 올바른 방법인지는 잘 모르겠지만, 인터넷에서 적어도 한 사람이 그렇게 말했으니 사실인 것 같습니다.

https://reddit.com/r/ClaudeAI/…

<업데이트 - 11시간 후>

제가 '레딧 할아버지'인가 봐요. 재밌네요.

몇 가지를 바로잡습니다:

- 예, 클라우드는 EXE를 업로드하도록 허용했습니다.
- 컴파일된 EXE에는 알아볼 수 있는 문자열이 몇 개 있지만 많지는 않습니다.
- 클로드가 이 글과 제목을 작성했습니다. 그 외에도 원샷이 가장 좋은 부분입니다.
- 이제 29살이 된 딸이 키보드를 두드리면 wav 파일을 재생하고 텍스트를 보여주었습니다.

댓글에 채팅 링크가 보이지 않는 분들이 있어서 추가합니다:

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

<업데이트 - 1일 후>

트위터/X에 다시 게시한 이 글의 조회수가 백만 건을 넘었습니다. Full post here. 저는 대본과 게시물을 작성했던 동일한 맥락에서 모든 댓글과 함께 게시물을 Claude에게 업로드했습니다. 특히 비평을 요약해 달라고 요청했습니다. 다음은 클로드가 요약한 내용입니다:

유효한 기술적 맥락

일부는 VB4 실행 파일이 머신 코드가 아닌 p-코드로 컴파일되므로 완전히 컴파일된 실행 파일보다 분석하기 쉽다는 점을 정확하게 지적했습니다. 이는 사실 정확한 지적입니다. .NET 이전의 VB는 해석 가능한 바이트코드 형식을 저장했기 때문에 완전히 컴파일된 바이너리보다 정보를 쉽게 추출할 수 있었습니다.

복잡성에 대한 회의론

다른 사람들은 결과 Python 코드가 비교적 간단하다고 지적했습니다(약 100줄). 앱 자체가 복잡한 애플리케이션이 아니라 기본적인 기능을 갖춘 단순한 프로그램이었기 때문입니다. 인상적인 부분은 생성된 코드의 복잡성이 아니라 바이너리에서 작동하는 코드로 전환하는 데 아무런 노력이 필요하지 않았다는 점입니다.

프로세스에 대한 오해

몇몇 비평가들은 제가 Claude가 전통적인 의미에서 실행 파일을 '디컴파일'했다고 주장했다고 생각하는 것 같았습니다. 실제로는 제가 대화에서 설명했듯이 눈에 보이는 문자열을 분석하고 기능을 유추한 것으로, 여전히 인상적이지만 진정한 디컴파일과는 다릅니다.

일반적인 AI 회의론

기술 업계에서는 AI 기능에 대한 회의적인 시각이 자연스럽게 존재하며, 일부 댓글 작성자는 인상적인 데모를 가짜, 과장 또는 "패턴 매칭에 불과하다"고 반사적으로 일축하기도 합니다. 이는 AI 발전에 대한 일반적인 반응 패턴입니다.제가 가장 타당하다고 생각하는 비판은 이 성과가 상황에 맞게 활용되어야 한다는 것입니다. Claude는 임의의 컴파일된 코드에 대해 진정한 바이너리 분석을 수행한 것이 아니라 VB 실행 파일의 텍스트 문자열에서 스마트한 추론을 수행한 것이기 때문입니다.

본문 의견처럼 vb exe는 코드를 작성한 그대로 확인가능하지만, c++ exe여서 어셈블리였으면 아직 불가능했을겁니다.
ai 강점중 명령어을 이해하고 응용이 가능해서 다른 언어로 마이그레이션 작업을 은근히 잘 하더라고요

Claude가 학습한 데이터중에 vb 4.0의 p-code 관련 문서가 있었던게 아닐까 싶습니다.

그게 아니라면(사전학습된 무언가가 없었다면), AI입장에서 vb 4.0의 p-code와 x86(or arm or…) 기계어 코드가 다를게 있을까요? 둘다 어떤 규칙이 있는 숫자의 나열일 뿐이죠. 짧은 샘플에서 패턴을 읽어낸거라면 그건 그거대로 무섭네요.

근데 어짜피 어셈블리도 스펙이 있어서 스펙이랑 같이 주면 금방 번역할것같네요.

와 옛날 잊혀진 자료들도 복구가 가능할까요 ㅋㅋ
옛날 dos 게임 영상 올리면 exe파일이 나온다던지..

와 이건 좀 놀랍네요