Hex-Rays Decompiler
  • Hex-Rays Decompiler

Hex-Rays Decompiler

공유
판매가
0
구매제한
최소 1개
구매혜택
할인 : 적립 마일리지 :
배송비
무료
택배
방문 수령지 : 서울특별시 마포구 큰우물로 75 (성지빌딩) 1210호
상품코드
1000000579
브랜드
Hex-Rays
제조사
Hex-Rays
Hex-Rays Decompiler
0
총 상품금액
총 할인금액
총 합계금액

상품상세정보

  c4ca4238a0b923820dcc509a6f75849b_150613.png
c81e728d9d4c2f636f067f89cc14862c_150613.png
eccbc87e4b5ce2fe28308fd9f2a7baf3_150614.png
20fe58f3656890a961a6279fc650ebb4_150614.png



Hex-Rays
디컴파일러는 수백만 명의 프로그래머가 사용할 수 있는 바이너리 소프트웨어 분석을 제공합니다

네이티브 프로세서 코드를 읽을 수 있는 C와 유사한 의사 코드 텍스트로 변환합니다.

 

 

디컴파일러의 장점


저수준 어셈블리 언어와 비교할 때 디컴파일러의 고급 언어 표현에는 몇 가지 장점이 있습니다.

 

간결함: 읽는 데 더 적은 시간이 필요합니다.

구조화: 프로그램 논리가 더 명확합니다.

다이나믹함: 변수 이름과 유형을 즉석에서 변경할 수 있습니다.

친숙함: 어셈블리 언어를 배울 필요가 없습니다.

 

Screenshot2021-08-18at13.08.24_130902.jpg
 

 

의사 코드 텍스트는 즉석에서 생성됩니다. 우리의 기술은 기능의 99%를 몇 초 내에 분석할 수 있을 만큼 빠릅니다.

 

현재 디컴파일러는 x86, x64, ARM32, ARM64 PowerPC 프로세서용 컴파일러 생성 코드를 지원합니다

향후 다른 플랫폼으로 이식할 계획입니다. 프로그래밍 방식 API를 통해 고객은 디컴파일러 출력을 개선할 수 있습니다

취약점 검색, 소프트웨어 검증, 적용 범위 분석이 바로 떠오르는 방향입니다.

 

디컴파일러는 MS Windows, Linux Mac OS X에서 실행됩니다. GUI 및 텍스트 IDA 버전이 지원됩니다.

 

 

디컴파일 대 역어셈블리 소개

디컴파일러는 읽을 수 있는 형식으로 실행 가능한 바이너리 파일을 나타냅니다

보다 정확하게는 바이너리 코드를 소프트웨어 개발자가 읽고 수정할 수 있는 텍스트로 변환합니다

소프트웨어 보안 산업은 이러한 변환에 의존하여 프로그램을 분석하고 검증합니다

소스 코드(소프트웨어의 텍스트 형식)는 전통적으로 사업상의 비밀로 간주되어 사용할 수 없기 때문에 이진 코드에서 분석이 수행됩니다.

 

바이너리 코드를 텍스트 형식으로 변환하는 프로그램은 항상 존재했습니다

프로세서 명령어 코드를 명령어 니모닉으로의 간단한 일대일 매핑은 역어셈블러에 의해 수행됩니다

많은 역어셈블러가 시장에서 무료 및 상업용으로 제공됩니다. 가장 강력한 역어셈블러는 자사의 IDA Pro입니다

수많은 프로세서에 대한 바이너리 코드를 처리할 수 있으며 개발자가 추가 분석 모듈을 작성할 수 있는 개방형 아키텍처를 가지고 있습니다.

 

디컴파일러는 한 가지 매우 중요한 측면에서 역어셈블러와 다릅니다. 둘 다 사람이 읽을 수 있는 텍스트를 생성하지만 디컴파일러는 

더 간결하고 보다 읽기 쉬운 훨씬 높은 수준의 텍스트를 생성합니다.

 

낮은 수준의 어셈블리 언어와 비교할 때 고급 언어 표현에는 다음과 같은 몇 가지 장점이 있습니다.

 

간결합니다.

구조화되어 있습니다.

개발자가 어셈블리 언어를 알 필요가 없습니다.

낮은 수준의 이디엄을 인식하고 높은 수준의 노션으로 변환합니다.

덜 혼란스럽고, 따라서 이해하기 쉽습니다.

덜 반복적이고 덜 산만합니다.

데이터 흐름 분석을 사용합니다.

이러한 점을 자세히 살펴보겠습니다.

 

일반적으로 디컴파일러의 출력은 역어셈블러의 출력보다 5~10배 짧습니다. 예를 들어, 일반적인 최신 프로그램에는 

400KB에서 5MB의 바이너리 코드가 포함되어 있습니다. 이러한 프로그램에 대한 역어셈블러의 출력에는 

5-100MB의 텍스트가 포함되며, 이를 완전히 분석하는 데 몇 주에서 몇 달이 걸릴 수 있습니다

경제적인 이유때문에, 분석가는 한 프로그램에 이렇게 많은 시간을 할애할 수 없습니다.

 

일반적인 프로그램에 대한 디컴파일러의 출력은 400KB에서 10MB입니다.) 비록 읽고 이해하기에는 여전히 많은 분량이지만 (두꺼운 책 한 권 정도), 

분석에 필요한 시간은 10분의 1 이하로 줄어 듭니다. 

 

두 번째 큰 차이점은 디컴파일러 출력이 구조화되어 있다는 것입니다

각 행이 다른 모든 행과 유사한 선형 명령 흐름 대신에 프로그램 논리를 분명하게 만들기 위해 텍스트를 들여씁니다

조건문, 루프 및 스위치와 같은 제어 흐름 구성은 적절한 키워드로 표시됩니다.

 

디컴파일러의 출력은 역어셈블러의 출력보다 수준이 높기 때문에 이해하기 쉽습니다

역어셈블러를 사용하려면 분석가가 대상 프로세서의 어셈블리 언어를 알아야 합니다

주류 프로그래머는 일상적인 작업에 어셈블리 언어를 사용하지 않지만 오늘날 거의 모든 사람이 고급 언어를 사용합니다

디컴파일러는 일반적인 프로그래밍 언어와 출력 언어 사이의 차이를 제거합니다

더 많은 분석가가 역어셈블러보다 디컴파일러를 사용할 수 있습니다.

 

Screenshot2021-08-18at13.11.35_131146.jpg
 

 

디컴파일러는 어셈블리 수준의 이디엄을 높은 수준의 추상으로 변환합니다

일부 이디엄은 분석하는데 상당히 길어서 시간이 많이 소요될 수 있습니다.

다음 한 줄 코드 x = y / 2는 컴파일러에 의해 일련의 20-30 프로세서 명령으로 변환될 수 있습니다

숙련된 분석가가 패턴을 인식하고 마음 속으로 원래 라인으로 교체하는데 최소 15-30초가 걸립니다

코드에 이러한 이디엄이 많이 포함되어 있으면 분석가는 메모를 만들어 각 패턴을 짧은 표현으로 표시해 두어야 합니다

이 모든 것이 분석 속도를 크게 저하시킵니다. 디컴파일러는 분석가에게서 이러한 부담을 덜어줍니다.

 

 

분석할 어셈블러 명령어의 양은 엄청납니다. 그들은 서로 매우 유사하고 패턴이 매우 반복적입니다

디스어셈블러 출력을 읽는 것은 매혹적인 이야기를 읽는 것과 전혀 다릅니다. 컴파일러 생성 프로그램에서 코드의 95%는 읽고 분석하기에 정말 지루할 것입니다

분석가가 유사하게 보이는 두 개의 코드 조각을 혼동하여 출력에서 쉽게 ​​길을 잃는 일은 매우 흔합니다

이 두 가지 요소(텍스트의 크기와 지루함)는 바이너리 프로그램이 완벽하게 분석되지 않는 결과를 초래합니다

분석가는 어떤 휴리스틱이나 자동화 도구를 사용하여 의심스러운 부분을 찾으려고 합니다

프로그램이 매우 작거나 엄청난 시간을 분석에 할애하는 경우만 예외일 겁니다. 디컴파일러는 두 가지 문제를 모두 완화합니다

출력이 더 짧고 덜 반복적입니다. 여전히 출력에 약간의 반복이 포함되어 있지만 관리될 수 있는 정도입니다

게다가, 이 반복은 분석을 자동화함으로써 해결할 수 있습니다.

 

바이너리 코드의 반복적인 패턴은 해결책을 요구합니다

한 가지 분명한 해결책은 컴퓨터를 사용하여 패턴을 찾은 후 인간 분석가가 다루기 쉽게 보다 짧고 쉽게 패턴을 줄이는 것입니다

일부 역어셈블러(IDA Pro 포함)는 분석을 자동화하는 방법을 제공합니다. 그러나, 사용 가능한 분석 모듈의 수가 적어 반복적인 코드의 문제가 사라지지 않습니다

주된 이유는 바이너리 패턴을 인식하는 것이 놀라울 정도로 어려운 작업이기 때문입니다

덧셈과 뺄셈과 같은 기본 산술 연산을 포함한 모든 "단순한" 동작은 바이너리 형식의 무한한 방법으로 표현될 수 있습니다

컴파일러는 빼기에 더하기 연산자를 사용할 수 있으며 그 반대의 경우도 마찬가지입니다

메모리 어딘가에 상수를 저장하고 필요할 때 로드할 수 있습니다

약간의 작업 후, 레지스터 값이 알려진 상수임을 증명할 수 있다는 사실을 이용할 수 있으며

레지스터를 다시 초기화하지 않고 그대로 사용할 수 있습니다

사용된 방법의 다양성은 사용 가능한 분석 모듈의 수가 적은 이유를 설명합니다.

 

 

디컴파일러에서는 상황이 다릅니다. 디컴파일러가 분석가에게 높은 수준의 노션을 제공하기 때문에 자동화가 훨씬 쉬워집니다

많은 패턴이 자동으로 인식되고 추상적인 노션으로 대체됩니다

나머지 패턴은 디컴파일러가 도입한 형식 때문에 쉽게 감지할 수 있습니다

예를 들어, 함수 매개변수와 호출 규칙의 노션이 엄격하게 형식화되어 있습니다

디컴파일러를 사용하면 모든 함수 호출의 매개변수를 매우 쉽게 찾을 수 있습니다

해당 매개변수가 호출 명령에서 멀리 초기화된 경우에도 마찬가지입니다

역어셈블러로는 각 케이스를 개별적으로 처리해야 하는 어려운 작업입니다.

 

 

역어셈블러와 달리 디컴파일러는 입력에 대해 광범위한 데이터 흐름 분석을 수행합니다

이것은 기능에 대한 광범위한 검색을 수행하지 않고도 "변수는 어디에서 초기화됩니까?" 또는 "이 변수가 사용됩니까?" 와 같은 질문에 즉시 응답할 수 있다는 의미입니다

분석가는 일상적으로 이러한 질문을 제기하고 답변하므로 즉답을 받음으로써 생산성이 향상됩니다.

 

 

 

역어셈블리와 디컴파일의 병렬 비교

아래에서 역어셈블리 및 디컴파일 출력을 나란히 비교한 내용을 볼 수 있습니다. 다음은 유용한 예입니다.

이 페이지에는 다음 예가 표시됩니다.

 

1. 2로 나누기

2. 충분히 간단합니까?

3. 변수는 어디에 있습니까?

4. 산술은 로켓 과학이 아니다

5. 샘플 창 절차

6. 단락 평가

7. 인라인 문자열 연산

 

 

 

 

2로 나누기

역어셈블 출력을 사용하려면 컴파일러가 부호 있는 나눗셈 및 모듈로 연산에 대해 복잡한 코드를 생성한다는 것을 알아야 할 뿐만 아니라 

패턴을 인식하는데 시간을 소비해야 합니다. 말할 필요도 없이, 디컴파일러는 일을 정말 간단하게 만듭니다.

 

Screenshot2021-08-18at13.12.48_131256.jpg
 

 

충분히 간단합니까?


함수의 가능한 반환 값은 무엇입니까?

함수가 문자열을 사용합니까?

함수는 무엇을 합니까?

와 같은 질문들은 디컴파일러 출력을 보자마자 거의 즉시 대답할 수 있습니다

말할 필요도 없이 로컬 변수의 이름을 변경했기 때문에 더 나아 보입니다

역어셈블러에서 레지스터 이름은 레지스터 사용을 숨기고 혼동을 일으킬 수 있기 때문에 매우 드물게 이름이 바뀝니다.

 

 

Screenshot2021-08-18at13.13.23_131331.jpg

 

 

 

변수는 어디에 있습니까?

 

IDA는 현재 식별자를 강조 표시합니다. 이 기능은 높은 수준의 출력에서 ​​훨씬 더 유용합니다

이 샘플에서는 검색된 함수 포인터가 함수에서 어떻게 사용되는지 추적하려고 했습니다. ​​

디컴파일러가 내가 원하는 것을 정확히 수행하는 동안 역어셈블리 출력에서는 많은 잘못된 eax 발생이 강조 표시됩니다.

 

 

Screenshot2021-08-18at13.13.37_131352.jpg
 

 

 

 

 

 

 

산술은 로켓 과학이 아닙니다

산술은 로켓 과학이 아니지만 누군가가 대신 처리해 주면 항상 더 좋습니다. 집중해야 할 더 중요한 일이 있습니다.

 

 

Screenshot2021-08-18at13.14.00_131621.jpg

 

 

 

샘플 윈도우 프로시저

 

디컴파일러는 switch 문을 인식하고 윈도우 프로시저를 잘 표현했습니다

이 작은 도움이 없으면 사용자는 메시지 번호를 직접 계산해야 합니다

특별히 어려운 것은 없지만, 시간이 많이 걸리고 지루할 뿐입니다. 하지만 만일 실수를 한다면?…


Screenshot2021-08-18at13.15.40_131621.jpg

 

 

Short-circuit evaluation

 

이것은 Short-circuit evaluation를 설명하기 위해 큰 함수에서 발췌한 것입니다

복잡한 일은 긴 함수에서 발생하며 사람의 방식으로 사물을 표현하는 디컴파일러가 있으면 매우 편리합니다

주소 공간에 흩어져 있던 코드가 두 개의 if 문에 어떻게 간결하게 표시되는지 유의하십시오.


Screenshot2021-08-18at13.15.54_131621.jpg

 

 

인라인 문자열 연산

디컴파일러는 strcmp, strchr, strlen 등과 같이 자주 인라인 되는 문자열 함수를 인식하려고 시도합니다. 이 코드 조각에서 strlen 함수에 대한 호출이 인식되었습니다.

 

Screenshot2021-08-18at13.16.02_131621.jpg
 

 


 

 

ARM 디스어셈블리 및 디컴파일 비교

다음은 ARM용 디스어셈블리 및 디컴파일러를 나란히 비교한 것입니다. 창을 최대화하여 두 열을 동시에 표시하십시오.

이 페이지에는 다음 항목들이 표시됩니다.

 

1. Simple case

2. 64비트 산술

3. 조건부 명령

4. 조건부 명령 - 2

5. 복잡 명령어

6. 컴파일러 보조 함수

7. Immediate constants

8. 위치 독립 코드

 

 

Simple case

아주 간단한 기능부터 시작하겠습니다. 구조체에 대한 포인터를 받아들이고 처음 세 필드를 0으로 만듭니다

함수 논리는 디컴파일러 출력만 봐도 알 수 있지만, 어셈블리 목록은 노이즈가 너무 많아 공부가 필요합니다.

 

디컴파일러를 사용하면 시간을 절약하고 리버스 엔지니어링의 더 흥미로운 측면에 집중할 수 있습니다.

 

Screenshot2021-08-18at13.24.40_132449.jpg

 

 

 

 

 

64비트 산술

 코드 조각이 길어 유감이지만, ARM 코드는 x86 코드에 비해 더 긴 경향이 있습니다. 디컴파일러 출력이 얼마나 간결한지 보세요! 비교가 더욱 인상적입니다.

 



Screenshot2021-08-18at13.21.27_132404.jpg

 

 

조건부 명령

ARM 프로세서에는 코드를 단축할 수 있지만 판독기의 높은 주의가 필요한 조건부 명령어가 있습니다

위의 경우는 매우 간단합니다. MOVNE LDREQSH라는 한 쌍의 명령어가 있다는 점만 유의하십시오

한 번에 하나만 실행됩니다. ARM에서 if-then-else가 얼마나 간단하게 보이는지 보여줍니다.

의사 코드가 훨씬 더 잘 보여주며 설명이 필요하지 않습니다.

퀴즈 질문: MOVNE R0 0을 로드한다는 사실을 알고 계셨습니까? (왜냐면 저는 안했어요:)

또한 역어셈블리 목록에서 var_8을 볼 수 있지만 실제로 사용된 위치는 v4에 해당하는 var_A입니다.

 

Screenshot2021-08-18at13.21.47_132405.jpg

 

 

조건부 명령-2

보세요, 디컴파일러 출력이 더 깁니다! 의사 코드가 역어셈블리 목록보다 긴 경우는 드물지만, 이것은 읽을 수 있는 상태를 유지하기 위해서 입니다

여기에는 조건부 명령이 너무 많아서 종속성을 오해하기가 매우 쉽습니다

예를 들어, 첫 번째 MOVEQ CMP에서 설정한 조건 코드를 사용할 수 있다는 사실을 알고 계셨습니까

미묘한 디테일은 CMPNE를 건너뛸 수 있고 CMP에 의해 설정된 조건 코드가 MOVEQ에 도달할 수 있다는 것입니다.

디컴파일러는 이를 완벽하게 표현했습니다. 일부 변수의 이름을 바꾸고 유형을 설정했지만 이것은 쉬운 작업이었습니다.

 

Screenshot2021-08-18at13.22.06_132405.jpg

 

 

복잡 명령어

조건부 명령은 일부일 뿐입니다. ARM은 많은 데이터 이동 명령어를 가지고 있는 것으로 유명합니다

이는 명령어의 의미를 미묘하게 바꾸는 접미사 세트로부터 가능해집니다. 예를 들어 STMCSIA를 보시면

이는 STM 명령어이지만 CS "carry set"를 의미하고 IA " increment after (이후 증가)"를 의미함을 기억해야 합니다.

 

요컨대 역어셈블리 목록은 중국어와 같습니다. 의사 코드는 더 길지만 이해하는데 훨씬 적은 시간이 필요합니다.


Screenshot2021-08-18at13.22.28_132405.jpg

 

 

컴파일러 보조 함수

코드 조각이 길어 유감이지만, 디컴파일러가 컴파일러 보조 함수(: __divdi3)를 처리할 수 있고

64비트 산술을 아주 잘 처리할 수 있다는 것을 보여주고 있습니다.

 

Screenshot2021-08-18at13.22.50_132405.jpg

 

 

Immediate constants

ARM 명령어는 큰 Immediate 상수를 가질 수 없기 때문에 때때로 두 개의 명령어로 로드됩니다

역어셈블리 목록에는 0xFA(십진수 250) 상수가 많이 있지만, 모두 사용되기 전에 왼쪽으로 2만큼 이동합니다

디컴파일러는 이러한 하찮은 사소한 일로부터 당신을 해방시켜 줍니다.

또한 측면: 디컴파일러는 ARM 모드와 Thumb 모드 명령어를 처리할 수 있습니다

IDA에서 이미 처리하고 있기 때문에 명령어 인코딩에 대해서는 신경 쓰지 않습니다.

 

Screenshot2021-08-18at13.23.19_132406.jpg

 

 

 

위치 독립 코드

어떤 경우에는 특히 PIC(위치 독립 코드)의 경우, 역어셈블리 목록이 오도될 수 있습니다

상수 문자열의 주소가 R12에 로드되는 동안 코드는 이에 대해 신경 쓰지 않습니다

변수 주소가 PIC 코드에서 계산되는 방식입니다(일부 오프셋이 있습니다.). 

이러한 계산은 공유 객체에서 매우 자주 발생하며 불행히도 IDA는 모든 것을 처리할 수 없습니다

그러나 디컴파일러는 R12를 잘 추적합니다.

 

Screenshot2021-08-18at13.23.44_132406.jpg

 

 

 

PowerPC 역어셈블리와 디컴파일 비교

다음은 PowerPC용 역어셈블리 및 디컴파일러를 나란히 비교한 것입니다. 창을 최대화하여 두 열을 동시에 표시하십시오.

이 페이지에는 다음 예가 표시됩니다. 

 

1. 간단한 코드

2. 선형 실행

3. 64비트 비교

4. 시스템 호출

5. 컴파일러 도우미

6. 부동 소수점 연산

7. 매직 곱셈/나눗셈 연산

8. VLE 코드

9. 대화형 디컴파일러

 

 

 

 

간단한 코드

 

이 간단한 함수는 처음 N개의 자연수의 제곱의 합을 계산합니다. 함수 논리는 디컴파일러 출력만 봐도 알 수 있지만

어셈블리 목록은 노이즈가 너무 많아 공부가 필요합니다. 디컴파일러를 사용하면 시간이 절약되고, 리버스 엔지니어링의 더 흥미로운 측면에 집중할 수 있습니다.

 

2_133033.jpg
 

선형 실행

PowerPC 프로세서에는 분기를 피하기 위해 사용할 수 있는 많은 명령이 있습니다 

(예를 들면, cntlzw). 디컴파일러는 조건부 논리를 복원하고 코드를 이해하기 쉽게 만듭니다.

 

3_133500.jpg
 

 

 

64비트 비교

64비트 비교에는 일반적으로 코드 가독성을 향상시키지 않는 여러 가지 비교 및 ​​분기 명령이 포함됩니다.



4_133034.jpg

 

시스템 호출

시스템 호출은 항상 신비하지만, 디컴파일러는 이름과 인수를 알려줍니다.

 

5_133651.jpg

 

컴파일러 도우미

컴파일러는 때때로 도우미를 사용하고, 디컴파일러는 많은 도우미의 의미를 알고, 이를 사용하여 코드를 단순화합니다.

 

6_133706.jpg
 

 

 

부동 소수점 연산

PowerPC 프로세서에는 한 번에 여러 작업을 수행하는 여러 복잡한 부동 소수점 명령어가 포함되어 있습니다

어셈블러 코드에서 표현식을 복구하는 것은 쉽지 않지만 디컴파일러에서는 그렇지 않습니다.

 

7_133722.jpg
 

 

 

매직 곱셈/나눗셈 연산

컴파일러는 곱셈/나눗셈 명령어를 더 저렴한 명령어 시퀀스(덧셈, 시프트 등)로 분해할 수 있습니다

이 예는 디컴파일러가 이를 인식하고 원래 연산으로 다시 응고하는 방법을 보여줍니다.

 

8_133729.jpg
 

 

VLE 코드

이 예는 디컴파일러가 문제 없이 VLE 코드를 처리할 수 있음을 보여줍니다.

 

9_133740.jpg
 

 

대화형 디컴파일러

디컴파일러가 IDA와 같은 방식으로 상호 작용하기 때문에 의사 코드는 정적인 것이 아닙니다.

 변수 유형 및 이름을 변경하고, 함수 프로토타입을 변경하고, 주석을 추가하는 등의 작업을 수행할 수 있습니다

위의 예는 이러한 수정 후의 결과를 나타냅니다.

확실히 결과가 이상적이지는 않고 개선의 여지가 많이 있지만 아이디어를 얻으셨기를 바랍니다.

그리고 http://lxr.free-electrons.com/source/fs/fat/namei_msdos.c#L224에서 결과를 원본과 비교할 수 있습니다

 

10_133748.jpg
 

 

 

 

MIPS 역어셈블리 및 디컴파일 비교

다음은 MIPS용 역스어셈블리 및 디컴파일러를 나란히 비교한 것입니다. 창을 최대화하여 두 열을 동시에 표시하십시오.

이 페이지에는 다음 예가 표시됩니다.

 

1. 간단한 코드

2. 64비트 비교

3. 매직 divisions

4. 지연 슬롯이 있는 난제

5. 리틀 엔디안 MIPS

6. 마이크로MIPS

7. 부동 소수점 연산

8. 컴파일러 도우미

 

 

간단한 코드

이것은 디컴파일할 매우 간단한 코드이며 출력은 완벽합니다. 유일한 사소한 장애물은 global offset table (GOT)을 통한 참조이지만

IDA와 디컴파일러 모두 이를 잘 처리합니다. 왼쪽과 오른쪽에서 읽어야 할 라인 수의 차이에 유의하십시오.

 

 

1_134027.jpg
 

 

64비트 비교

어셈블러 목록이 길어 유감이지만, 다른 플랫폼과 마찬가지로 MIPS의 경우 디컴파일러가 64비트 작업을 인식하고 

이를 매우 읽기 쉬운 구조로 축소할 수 있음을 보여줍니다.

 

2_134038.jpg
 

 

 

매직 divisions

우리는 다른 프로세서와 동일한 방식으로 MIPS에 대한 매직 divisions을 인식합니다. 이 목록에는 특별한 지연 슬롯이 있습니다.

 

3_134048.jpg
 

 

지연 슬롯이 있는 난제

이전 예는 식은 죽 먹기이었습니다. 지연 슬롯으로 점프가 있는 만만치 않은 예 입니다. 적절한 디컴파일러는 이러한 경우도 처리해야 하며

사용자를 오도하지 않고 올바른 출력을 생성해야 합니다. 이것이 우리가 하는 일입니다

(우리는 지연 슬롯이 있는 다양한 시나리오를 발명하고 테스트하는 데 꽤 오랜 시간을 보냈습니다.)

 

4_134100.jpg 

 

 

 

 

리틀 엔디안 MIPS

빅 엔디안과 리틀 엔디안 코드가 모두 지원됩니다. 일반적으로 비슷해 보이지만 어셈블러에 미묘한 차이가 있을 수 있습니다 

디컴파일러는 관련된 비트를 추적하고 사람이 읽을 수 있는 코드를 생성합니다.

 

5_134111.jpg
 

 

 

마이크로MIPS

아마 짐작하셨겠지만 MicroMIPS는 특별한 명령어와 쿽스로 지원됩니다.

6_134120.jpg
 

 

부동 소수점 연산

MIPS 프로세서에는 한 번에 여러 작업을 수행하는 많은 복잡한 부동 소수점 명령어가 포함되어 있습니다. 어셈블러 코드의 의미를 해독하는 것은 쉽지 않지만 의사 코드는 가장 간단합니다.

7_134129.jpg
 

 

 

컴파일러 도우미

 

컴파일러는 때때로 도우미를 사용합니다. 우리의 디컴파일러는 많은 도우미의 의미를 알고 그것을 사용하여 코드를 단순화합니다.

8_134138.jpg
 




















 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

배송안내

- 배송비 :  소프트웨어는 대부분 라이선스이며 이메일로 라이선스키가 전달되고 프로그램을 인터넷으로 다운로드 하므로 별도의 배송비가 없습니다 

주문하신 제품의 배송은 당일 배송이 원칙이며 해외에서 라이선스가 발급되는 경우 대부분 그 다음날 받으실 수 있습니다 

간혹 패키지로 전달되는 제품의 경우 택배로 전달되기 때문에 2일에서 3일 이내에 배송완료 됩니다 

 

교환 및 반품안내

소프트웨어는 제품특성상 제품을 설치하여 사용한 경우 ( 고객등록 ), 정상작동이 되는 경우 

고객의 단순 변심을 이유로 환불 또는   교환이 되지 않습니다 

다만 제품이 작동하지 않거나 , 설치가 안되는 경우 처음부터 주문을 잘못하여 

사용전에 취소를 요청하는 경우 에는 환불및 교환이 가능합니다 

 

환불안내

- 상품 청약철회 가능기간은 상품 수령일로 부터 30일 이내 입니다.

만약 설치가 안되어 사용을 못하는 경우 환불을 받을 수 있습니다 

 

AS안내

 

당사에서는 판매된 제품의 설치및 기술지원을 해드리고 있습니다 

만약 해외개발사의 지원이 필요한 경우에는 개발사에 의뢰하여 사용상의 문제를 해결해 드리고 있습니다 

 

이미지 확대보기Hex-Rays Decompiler

Hex-Rays Decompiler
  • Hex-Rays Decompiler
닫기

비밀번호 인증

글 작성시 설정한 비밀번호를 입력해 주세요.

닫기

장바구니 담기

상품이 장바구니에 담겼습니다.
바로 확인하시겠습니까?

찜 리스트 담기

상품이 찜 리스트에 담겼습니다.
바로 확인하시겠습니까?

스크롤 좌측 배너
상단으로 이동