2009-03-08 3 views
8

원래 VS2005로 작성된 작은 유틸리티가 있습니다.리버스 엔지니어링 C++ DLL

작은 변화가 필요하지만 dll 중 하나의 소스 코드가 어딘가에 손실되었습니다.

dll을 C++ 코드로 리버스 엔지니어링 할 수있는 무료 또는 합리적인 가격의 도구가 있습니까?

답변

12

Hex-Rays decompiler은 훌륭한 도구이지만 코드를 읽기가 어려울 것이며 전체 DLL을 리버스 엔지니어링하는 데 많은 시간을 소비해야 할 것입니다.

+3

16 진 광선은 아마도 최고이지만 아마 코드는 그것이 작동하는 특정 부분과 컴파일 할 수없는 방법을 알아 내는데 유용 할 것입니다 그것. +1 –

+0

변경 사항이 충분히 작 으면 디 컴파일러의 출력을 사용하여 어셈블리에서 dll을 패치 할 수 있습니다 (예 : OllyDbg). – shoosh

+1

예, OllyDbg는 항상 dll을 패치하는 것이 가장 좋았지 만 SoftICE 후에 만 ​​가능했습니다. 어떻게 전설적인 "SoftICe"를 잊을 수 있습니까? – abhilash

-3

당신은 동물에 다시 고기를 설정 캔트 당신은 당신이 죽은 동물했을 수있는 경우에도 : 당신의 작은 변화가 텍스트를 편집하거나 일부 루틴을 건너 뛸 경우

+2

아마도 동물이 자바 일 때를 제외하고 ... –

+10

예. 가능합니다. 동물은 끔찍해 보일 것이지만 원래와 같은 방식으로 걷고 기능 할 것입니다! –

+0

이걸 확인하는 데 동의 .. –

0

을 P를, 당신은 16 진수 편집기를 사용할 수 있습니다 또는 디스어셈블러를 사용하지만 원래의 C++ 코드를 볼 수 없으며 DLL을 다시 코드로 바꾸는 도구를 찾더라도 모든 변수 이름은 없어지고 커다란 혼란을 겪을 것입니다.

3

정확한 상황을 알 수없고 DLL이 응용 프로그램에 구현하는 기능을 어느 정도 알고 있습니다. 하지만 대부분의 경우 누락 된 DLL을 알려진 기능을 기반으로 다시 작성하는 것이 좋습니다.

일부 문서가있는 경우 특히 그렇습니다.

이진 코드를 어셈블러로 리버스 엔지니어링하고 C++로 변환 한 다음 기존 기능을 제공하기 위해 수정하려고하면 대부분의 경우 시간이 많이 걸리고 불가능할 수도 있습니다.

0

게임 및 앱 크래커처럼해야합니다. 디스 어셈 블러를 사용하고 어셈블러 코드를 해킹합니다.

6

은 또한 32 비트 어셈블러 레벨 분석 디버거 올리 디버그 좀보고 할 수 있습니다. 소스 코드가없는 시나리오에서 바이너리 코드를 분석하는 데 사용됩니다. 경량 디버거입니다. OllyDbg는 셰어웨어이므로 &을 무료로 사용할 수 있습니다! !! 돌아 가기 레지스터의 값에서 실행 & 잡아으로 디버깅을 위해 NuMega의에서 스냅 샷을 SoftICE을 사용하는 일 크래커에 :

방문 올리 디버그는 홈 페이지를 here

PS입니다. SoftICE는 고급 디버거였습니다. 그것은 확실히 크래커에게 가장 좋아하는 도구였습니다. 제품의 현재 상태에 대해서는 알지 못합니다. NuMega의 사이트에는 이에 대한 정보가 없었습니다. 나는 그것을 간과했을지 모르지만 나는 그것을 발견 할 수 없었다. SoftICE 용 WindowsXP 패치를 SoftICE &의 레거시 버전 (4.0x)에 설치하는 것이 좋습니다. SoftICE로 작업하는 것은 "경험"의 일부입니다.

는 또한 읽기 :Reversing: Secrets of Reverse Engineering by Eldad Eilam

1

상황에 따라 약간의 내가있는 그대로 기존/진 DLL을 유지하고 변경 및/또는 추가 동작을 추가하는 래퍼 DLL을 작성합니다.

아이디어는 이전 DLL을 가져 오는 새 DLL에서 이전 기능을 집계하는 것입니다.

-2

.NET에서 수행 된 경우 dotNet Reflector를 사용하지 않는 이유는 무엇입니까?

+0

질문에 언급 된대로 C++입니다. – Brad