2016-10-24 3 views
-3

필자는 ASM 코드 섹션을 가지고 있으며, 이전의 실행 파일에서 서브 루틴을 가져 와서 공유 라이브러리로 바꾸거나 C 코드를 작성하여 새로 작성한 소프트웨어 버전에 통합 할 수 있습니다. 필자는 더 이상 원본 소스 코드에 액세스 할 수 없으므로 불행하게도이 작업을 시도하거나 전체 기능을 처음부터 다시 작성합니다.추출 된 ASM 코드를 컴파일하여 디 컴파일 할 수 있습니까?

IDA/Hex Rays 같은 소프트웨어에 액세스 할 수 있지만 바이너리를 처음 디 컴파일 할 수없는 경우 ASM을 의사 코드로 변환하지 않습니다. 바이너리가 없습니다. ASM 코드가 있습니다. ASM을 바이너리로 컴파일 할 수는 없지만 (또는 오히려 어떻게해야할지 모르겠다.) 코드의 한 섹션 일 뿐이다.

ASM 코드의 섹션을 컴파일 된 바이너리로 변환하거나 ASM에서 C로 변환하는 간단한 방법으로 바이너리를 먼저 디 컴파일하지 않아도됩니까?

+1

나는 당신이 * 어셈블러가 필요하다고 생각되는 Bomerang 프로젝트를보고 할 수 있습니다 * – fuz

+0

어떤 운영 체제를 당신이 있습니다.? 대상 플랫폼이 무엇입니까? 어셈블러 형식이란 무엇입니까? –

+0

일반적으로 .obj를 연결하기 전에 .obj에 .C 코드를 컴파일합니다. 어셈블러를 사용하여 .ASP 코드를 .obj로 컴파일하고 같은 방식으로 링크 할 수 있습니다. 심지어 .c와 .ASM의 .objs를 함께 사용하면 링커는 그 코드의 출처를 신경 쓰지 않습니다. – Tommylee2k

답변

1

현재 사용중인 플랫폼을 언급하지 않았지만 Linux에 액세스 할 수 있다고 가정하면 (1) (https://linux.die.net/man/1/as)을 사용하여 ASM을 컴파일 할 수 있습니다.

BTW : 당신은 오픈 소스 디 컴파일러 http://boomerang.sourceforge.net/

+0

1) 답변이 아니라 댓글입니다. 2) 동일한 기계에 대한 어셈블러 코드가 다른 어셈블러 프로그램간에 반드시 호환되는 것은 아닙니다. HLL과 같은 표준 구문은 없습니다. – Olaf

+0

@Olaf OP 질문은이 중요한 정보 (그가 필요로하는 어셈블리 방언)가 없기 때문에 슬프게 대답 할 수 없습니다. – fuz

+1

"OP 질문은이 중요한 정보가 부족하기 때문에 슬프게도 대답 할 수 없습니다."- 설명을 위해 의견을 남겨두고 "불분명 함"으로 CVed해야한다는 것을 의미합니다. 규칙을 다시 읽으십시오. – Olaf

관련 문제