문제

나는 나 자신에게 물었다 어디 역 엔지니어링이 사용됩니다. 나는 그것을 배우는 데 관심이 있습니다. 그러나 나는 그것을 내 이력서에 넣을 수 있는지 모르겠다.

나는 나의 새로운 족장이 내가 사악한 해커라고 생각하기를 원하지 않는다. :)

  • 그래서 그만한 가치가 있습니까?
  • 배우거나 다른 곳에 노력해야합니까?
  • 좋은 책이나 튜토리얼이 있습니까? :)
도움이 되었습니까?

해결책

역 엔지니어링은 일반적으로 사용됩니다 파일 형식 해독 상호 운용성을 향상시키기위한. 예를 들어, 많은 인기있는 상용 Windows 응용 프로그램이 Linux에서 실행되지 않으므로 해당 응용 프로그램에서 생성 된 파일의 역 엔지니어링이 필요하므로 Linux에서 사용할 수 있습니다. 이에 대한 좋은 예는 Gimp, Openoffice, Inkscape 등이 지원하는 다양한 형식입니다.

리버스 엔지니어링의 또 다른 일반적인 사용은 다음과 같습니다 해독 프로토콜. 좋은 예에는 포함됩니다 삼바, DAAP 많은 비 이동적 인 응용 프로그램, 크로스 플랫폼 IM 클라이언트에서 지원합니다. 피진, 프로토콜 리버스 엔지니어링의 경우, 거래의 일반적인 도구는 다음을 포함합니다. Wireshark 그리고 libpcap.

의심 할 여지없이 리버스 엔지니어링은 종종 소프트웨어 크래킹과 관련이 있으며, 이는 주로 프로그램 분해를 이해하는 것입니다. 나는 내가 말할 수 없다 필요합니다 순수한 호기심이 아닌 다른 프로그램을 분해하거나 그렇지 않은 일을하도록합니다. 리버스 엔지니어링 프로그램의 한 가지 측면은이를 이해하려면 어셈블리 프로그래밍을 배워야한다는 것입니다. 그러나 분해 기술, 특히 사용하는 법적 방법이 있습니다. 크랙 메스. 중요한 점은 응용 프로그램에서 보안 조치를 개발하거나 해당 사업에 종사하는 경우 필요 리버스 엔지니어들이 한 발 앞서 나아가려고 노력하는 방법을 아는 것입니다.

IMHO, 리버스 엔지니어링은 매우 강력하고 유용한 기술입니다. 말할 것도없이 일반적으로 재미 있고 중독성이 있습니다. HMEMCPY가 언급했듯이, 나는 이력서에서 "역 엔지니어링"이라는 용어를 사용하고 그와 관련된 기술/지식 만 사용할 것이라고 확신하지 않습니다.

다른 팁

리버스 엔지니어링은 일반적으로 원하는 것이 아니기 때문에해야 할 일입니다. 예를 들어, 단순히 제품을 리버스 엔지니어링하는 데 법적 문제가 있습니다! 그러나 공급 업체가 (예를 들어) 공급 업체가 더 이상 존재하지 않았거나 접촉 할 수없는 경우가 필요합니다. 좋은 예는 질문을 입력 한 WMD 편집기입니다. SO 팀/커뮤니티 난독 화 된 소스에서 이것을 리버스 엔지니어링해야했습니다 몇 가지 버그 수정을 적용합니다.

제 생각에 리버스 엔지니어링 기술이 유용 할 수있는 분야 중 하나는 예를 들어 바이러스 바이러스 산업입니다. 그러나 나는 이력서에 "리버스 엔지니어링"을 배치하지 않고 오히려 기타 분리기/디버거 (예 : IDA, Softice 또는 OllyDBG) 및 기타 관련 기술을 사용하여 어셈블리 언어로 경험을 적어두고 있습니다.

나는 리버스 엔지니어링 프로젝트를 수행했으며 해킹과 관련이 없었습니다. 우리는 그러한 모든 프로젝트 (합법적으로)에 대한 소스 코드를 가지고 있었지만, 프로젝트 중 하나에 대해 아무도 실제로 코드가 무대 뒤에서 무엇을했는지, 그리고 다른 시스템과 어떻게 상호 작용했는지 알지 못했습니다. 그 정보는 오랫동안 손실되었습니다. 다른 프로젝트에는 소스 코드와 일부 문서가 있었지만 문서는 최신 상태가 아니 었으므로 문서를 업데이트하기 위해 소스를 리버스 엔지니어링해야했습니다.

내 이력서에 그런 프로젝트가 있다고 생각하지 않습니다. 사실, 나는 그 과정에서 많은 것을 배웠다고 생각합니다.

문서가 손실되거나 존재하지 않을 때마다 리버스 엔지니어링이 필요합니다. 소스가 있으면 도움이되지만 원래 논리, 흐름 제어 및 버그를 리버스 엔지니어링해야합니다.

이상한 하드웨어로 작업하면 종종 리버스 엔지니어를 강요합니다. 예를 들어, 나는 한때 이상하게 행동 한 오래된 신호 획득 카드로 작업했습니다. 아름다운 사인파를 넣는 것은 끔찍하게 무너진 데이터를 생성했습니다. 다른 모든 바이트는 둘의 보완 물이었고 다른 모든 사람의 보완이거나 적어도 그러한 방식으로 해석 될 때 데이터가 매우 아름다워졌습니다. 물론 이것은 어디에도 기록되지 않았으며 자체 독점 소프트웨어와 함께 사용될 때 카드는 완벽하게 작동했습니다.

결함이있는 이전 코드를 만나는 것은 매우 일반적입니다. 요구 사항이 변경되어 또는 둘 다로 인해 구식이되었습니다. 종종 문서가 부적절하고 원래 개발자 (들)를 더 이상 사용할 수없는 경우입니다. 리버스 엔지니어링 코드는 작동 방식을 이해하고 (때로는 수리 또는 직접 결정을 내릴 때) 중요한 기술입니다.

소스가있는 경우, 작고 신중하게 계획된 엄격한 세척을 수행하는 것이 합리적입니다. (나는 이것이 귀중한 개발자 시간을위한 싱크 홀이 될 수 없다는 것을 크게 암시합니다!)

또한 테스트 베드에서 코드를 행사할 수 있고, 예상되는 일을 수행하거나 결함을 식별, 문서화, 분리 및 수리하는지 확인하는 것이 매우 도움이됩니다.

안전하게 그렇게하려면 신중한 작업이 필요합니다. 나는 Michael Feathers의 책을 적극 추천합니다 레거시 코드 작업 테스트 중에 그러한 코드를 얻는 데 실질적인 지침.

RCE는 보안 담당자 (연구, 착취, ID, IP, AV 등)에게 훌륭한 기술이지만 주제에 대한 깊고 낮은 수준의 이해가 있음을 증명합니다.

타사 도서관과 함께 작업 할 때 더 쉬운 길을 찾는 방법을 찾으십시오.

보안 산업에서 일하지 않는다면 ASM에 능숙하지 않으면 배우기를 귀찮게하지 않으면 일반적으로 배우기가 어렵습니다.

서적

착취 기술을 해킹합니다 보안 관점에서 주제에 대해 이야기합니다.

또한 OllydBG 및 Ida Pro에 관한 책을 읽고 싶을 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top