또다시 변명.
아래 글에 대한 "지나가다"님에 대한 댓글입니다.
http://window31.tistory.com/entry/가상화-두번째-잡담
내용이 길어져서 걍 새글로 씁니다(댓글이 너무 장문이 되니 모양새가 좋지 않아서요)
원문
지나가다..2008/03/16 19:04
아시겠지만 code replace와 같은 기술은 사실 VM의 하단 기술일뿐 개념을 뜻하진 않습니다. VA 매거진을 탐독해본 분들이라면 코드 리플레이스 이런 용어 몰라도 다들 코드만 보고 잘 알아냅니다. 물론 수학 공부를 좀 해야하지요. VM은 유명 리버서들도 저건 VM이다 아니다라고 서로 논쟁할 만큼 그 기준이 모호합니다. 그런 논쟁을 볼 때마다 왜 정의되지 않은 터미날러지로 싸우는 지도 모르겠구요. 바이너리만 봐도 서로 알아먹을 수 있으면 대충 비슷한 수준이지 않을까 하는데 말입니다.모든 리버서들이 같은 지향점을 바라보고 있는 건 아닙니다. 그리고 어쩌면 오래된 리버서나 어셈블리 매니아, 컴파일러 혹은 OS 제작 경험자들은 저런 코드 리플레이스 기술에 그다지 감탄하지 않습니다. 요즘 나오는 바이러스에도 과거와 같이 예술적인 것도 많구요.
이야기가 좀 길어졌는데.. 다양성을 존중하는 점도 중요하다고 생각이 듭니다. 누군가는 window31님에게 리버싱의 그것도 모르냐고 할 수도 있지 않을까요.. 리버싱은 너무나 방대하고 깊으니까요..
네 물론 정확한 개념이 아니고 용어 자체가 생소할 수 있으니까 라고 표현을 했습니다.
대략 비슷한 수준의 반론을 예상 했지만, 제가 표현력이 부족해서 그런지 아니면
글 내용 자체가 다른 쪽으로 포커스가 맞춰진 건지 꽤 반대의견이 많네요. 뭐야 이 개색
10쎄가 지는 얼마나 잘한다고 라고 욕했을 분도 계셨을 것 같네요. 하지만 아마
온라인 상이고 서로 잘 모르는 사이니까 이정도 예의를 갖춰주고 말씀 해주시는 것
같습니다. 그런 부분 감사 드립니다.
네 어쨌든 정의 자체가 애매모호한 부분이 있고, 모든 리버서들이 같은 지향점을 바라보고
있는 것도 아니라는 사실에도 동의합니다. OS개발자나 커널 쪽 리버서들 혹은 암호화나
안티디버깅에는 관심 없이 코드의 핵심만 긁어내는 리버서들은 같은 리버서라도 저희 같은
사람과는 분명 다릅니다. 하지만 저희는 어쨌든 업무상 더러운 바이너리랑 계속 싸워야 하고
그래서 저런 부류의 리버서들보다는, 흙탕물을 파헤쳐나갈 사람이 필요했던 거지요. 그래서
코드 리플레이스의 경험도 질문에 포함되었던 것이고요, 물론 말씀드렸다시피 그게 절대적
기준은 되지 않습니다. 단지 수많은 질문 중 하나였을 뿐이고요.
덧붙혀 얘기가 점점 길어지는데 본인이 짱개들의 바이너리를 많이 까보았고 그런 리버서라고
자청하는 사람들에게만 주어진 질문입니다. 본인이 그렇게 말하는데 면접 보는 입장에서는
어느 정도의 확인 작업이 필요하지 않을까요? 한사람의 실력에 대해서 30~60분의 짧은
시간안에 모두 파악하기는 쉽지가 않은건 잘 아실겁니다. 말씀 하신 것처럼 저랑 같은 부류의
리버서인지의 확인 방법이 필요했고 코드 리플레이스는 여러 가지 질문 중 하나였을 뿐입니다.
"코드 리플레이스를 모르면 그 리버서는 무조건 ㅄ" 이라는 등식을 성립시켰던 것은 아닙니다.
그리고 용어 자체가 엿장수 마음대로인 상황이기 때문에 모를수 있겠다 싶어서 관련 코드나
기법이나 바이너리의 생긴 모냥새 따위에 대해 상세한 서술도 덧붙혀 드렸지요. 용어 자체로
질문을 끝내는 치졸한 짓을 한건 아닙니다.
저도 엄청 쪼랩이기 때문에 모르는 것 투성이입니다. 지금도 저한테는 그것도 모르냐고
하시는 분들 엄청 많습니다. 하지만 저는 그런거에 별로 상처받거나 자존심 상해하지 않습니다.
오히려 제가 모르는 걸 알려주니 고맙죠. 그것이 좋은 지적이건 기분나쁜 지적이든 머 방법이
어떻게 되었던 간에 그정도 지적도 포용 못하면 그사람은 실력이 더 늘 수가 없다고 생각합니다.
지식이라는 것은 깊이가 있던 단순 꽁수에 불과하든 어쨌든 공짜로 얻어지는건 아니라고 생각하니까요.
