AI에게 프로그램을 보여줬더니 똑같이 만들기 시작했다
요즘 해외 개발자 커뮤니티를 돌아다니다 보면 심심찮게 눈에 띄는 이야기가 하나 있다.
이미 만들어진 프로그램을 AI에게 분석시킨 뒤, 비슷한 프로그램을 다시 만들게 하는 기술이다. 관련 오픈소스 프로젝트인 REA(Reverse Engineer Anything)가 깃허브에서 화제가 됐고, 급기야 "이제 소프트웨어 개발은 끝난 것 아니냐"는 말까지 나왔다.
윈도우 그림판을 분석해 비슷한 프로그램을 만들고, 원본에 없던 기능까지 붙였다는 사례도 돌았다.
솔직히 처음 봤을 때는 반신반의했다. 그래서 관련 프로젝트와 공개된 사례를 몇 시간 들여 직접 살펴봤다.
결론부터 말하면, 기술은 실제로 인상적이었지만 "개발이 끝났다"는 이야기는 과장이었다. 그 사이에 실제로 확인한 것과 확인하지 못한 것을 나눠서 적어 둔다.
1. REA가 대체 뭘 하는 물건인가
먼저 REA가 무엇인지부터 확인했다.
REA는 기존 프로그램을 분석하는 도구와 AI 코딩 에이전트를 연결해 주는 오픈소스 프로젝트다. Ghidra, Hopper, IDA 같은 리버스 엔지니어링 도구를 활용해 프로그램의 코드와 구조를 조사하도록 AI를 돕는다.
쉽게 말하면, AI 손에 분석 도구를 쥐여주는 셈이다.
일반적인 AI에게 "그림판 비슷한 프로그램을 만들어 봐"라고 하면, AI는 자기가 학습한 그래픽 프로그램의 일반적인 구조를 토대로 코드를 쓴다.
그런데 기존 프로그램 내부에서 실제로 어떤 방식으로 기능이 구현됐는지까지 파고드는 것은 완전히 다른 문제다.
REA를 쓰면 AI가 분석 도구를 호출하고, 함수의 역할을 추론하고, 기능을 구현한 뒤 결과를 테스트하는 흐름을 돌릴 수 있다. 과정을 줄이면 이렇다.
- 기존 프로그램을 분석한다.
- 코드와 기능의 작동 원리를 조사한다.
- 분석 결과를 바탕으로 새 코드를 쓴다.
- 원본과 결과물을 비교하고 오류를 고친다.
여기서 헷갈리면 안 되는 게 있다. REA는 프로그램을 자동으로 통째로 복사해 주는 버튼이 아니다. 분석 도구와 AI를 이어 주는 연결 도구에 가깝다.
2. 정말 원본과 똑같이 나올까
가장 궁금했던 부분이다. 그래서 그림판 예시를 기준으로 따져 봤다.
AI가 그림판을 분석해 비슷한 화면을 만들었다고 하자. 붓으로 그리고, 색을 고르고, 파일을 저장하는 기능까지 붙였다. 겉보기에는 꽤 비슷할 수 있다.
그런데 그게 원본을 완벽하게 복제했다는 뜻일까?
그건 아니다. 같은 수준인지 확인하려면 확인할 게 한참 남는다.
- 다양한 이미지 파일을 원본과 똑같이 처리하는가?
- 복사·붙여넣기, 실행 취소·다시 실행이 같은 방식으로 동작하는가?
- 확대·축소와 픽셀 처리 결과가 일치하는가?
- 대용량 파일이나 예외 상황에서도 버티는가?
- 운영체제와 연동되는 기능까지 같은가?
화면이 비슷한 것과 모든 기능이 동일한 것은 다르다. 특정 기능이 돌아가는 것과 프로그램 전체가 원본과 동등한 것도 다르다.
그래서 "AI가 프로그램을 복제했다"는 이야기를 보면, 무엇을 얼마나 재현했는지부터 따져야 한다.
그렇다고 기술의 의미가 줄어드는 건 아니다. 예전에는 사람이 직접 분석하고 구현해야 했던 일을 AI가 상당 부분 해낼 수 있다는 사실 자체가 이미 큰 변화다.
3. 실제로 성공한 실험도 있었나
공개 자료에는 꽤 그럴듯한 실험들이 있었다.
일부 사례에서는 기존 앱의 확대·축소, 주석, 그리기, 회전, 저장 같은 기능을 재구현했다. 직접 만든 실행 파일을 분석해 특정 동작을 재현하고, 원본과 결과가 맞는지 여러 테스트로 확인한 사례도 공개됐다.
이 정도면 AI가 화면만 흉내 내는 수준을 넘어, 기능의 작동 원리를 조사해 새 코드로 다시 구현할 수 있다는 건 확인된다.
다만 여기서도 선을 그어야 한다.
작은 프로그램의 특정 기능을 재현하는 것과, 대규모 상용 프로그램 전체를 복제하는 것은 난이도가 전혀 다르다. 공개된 실험에서 일부 기능이 성공했다고 해서 모든 프로그램을 완벽하게 복제할 수 있다는 뜻은 아니다.
또 하나, REA를 쓴다고 항상 더 빠르고 정확한 것도 아니었다. 공개된 비교 사례에서는 일반 코딩 에이전트도 비슷한 프로그램을 만들어냈고, 일부 작업에서는 오히려 먼저 끝내기도 했다.
결국 REA는 만능 도구가 아니라, 특정 상황에서 AI의 분석 능력을 확장해 주는 도구로 보는 게 맞다.
4. '소프트웨어는 끝났다'는 말은 과장일까
내 결론은 과장이라는 쪽이다.
프로그램을 분석해 비슷한 기능을 구현할 수 있다는 것과, 소프트웨어 개발 자체가 끝났다는 것은 전혀 다른 얘기다.
실제로 프로그램을 만든다는 건 화면을 짜고 코드를 쓰는 일만이 아니다. 사용자가 진짜 원하는 게 뭔지 파악해야 하고, 수많은 예외 상황을 처리해야 하며, 보안과 안정성도 챙겨야 한다. 커질수록 기능끼리 충돌하지 않게 관리하는 일도 중요해진다.
AI가 코드를 쓸 수 있다고 해서 이런 문제가 저절로 풀리지는 않는다.
그럼 이번 기술을 대수롭지 않게 봐도 될까?
그것도 아니다. "소프트웨어가 끝났다"는 주장은 과장일 수 있지만, 소프트웨어를 만드는 방식이 바뀔 가능성은 충분하다.
예전에는 기존 프로그램의 특정 기능을 재현하려면 개발자가 직접 분석 도구를 다뤄야 했다. 지금은 그 분석의 상당 부분을 AI가 대신하고 있다. 사람은 무엇을 만들지 정하고, 결과가 진짜 원본과 맞는지 검증하는 역할로 옮겨가고 있다.
한 시간쯤이면 나는 화려한 데모와 실제 완성을 구분하는 눈이 조금 생겼다. 그게 이번에 얻은 소득이다.
다음에도 그럴듯한 기술이 눈에 들어오면, 이번처럼 직접 해 보고 확인해서 적어 두려고 한다.
AI Knowledge Hub
댓글 (1개)
흥미로운 후기 잘 읽었습니다. 다만 도구의 능력보다 '무엇을 대상으로 쓰는가'를 먼저 짚고 싶습니다.
리버스 엔지니어링은 기술 자체보다 맥락이 결과를 좌우합니다. 본인이 만든 프로그램, 분석이 허용된 오픈소스, 권한이 명확한 대상이라면 문제가 없지만, 경쟁 제품이나 검증되지 않은 상용 바이너리를 대상으로 하면 법적 위험이 곧바로 따라옵니다. 'AI가 만들어 줬다'는 사실은 책임을 분산시키지 않습니다.
또한 이 도구가 돌려주는 결과는 완성된 소스가 아니라 근거가 붙은 해석이라는 점을 기억하면 좋겠습니다. 751건 전수 일치처럼 검증이 명시된 사례는 신뢰를 높이지만, 검증 없는 '그럴듯한 재현'은 오히려 위험합니다.
파일럿은 격리된 환경에서, 대상 범위를 좁게 정해 시작하시길 권합니다.