


Hex-Rays 디컴파일러는 수백만 명의 프로그래머가 사용할 수 있는
바이너리 소프트웨어 분석을 제공합니다.
네이티브 프로세서 코드를 읽을 수 있는 C와 유사한 의사 코드 텍스트로 변환합니다.
디컴파일러의 장점
저수준 어셈블리 언어와 비교할 때 디컴파일러의 고급 언어 표현에는 몇 가지 장점이 있습니다.
간결함: 읽는 데 더 적은 시간이 필요합니다.
구조화: 프로그램 논리가 더 명확합니다.
다이나믹함: 변수 이름과 유형을 즉석에서 변경할 수 있습니다.
친숙함: 어셈블리 언어를 배울 필요가 없습니다.

의사 코드 텍스트는 즉석에서 생성됩니다. 우리의 기술은 기능의 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 이하로 줄어 듭니다.
두 번째 큰 차이점은 디컴파일러 출력이 구조화되어 있다는 것입니다.
각 행이 다른 모든 행과 유사한 선형 명령 흐름 대신에 프로그램 논리를 분명하게 만들기 위해 텍스트를 들여씁니다.
조건문, 루프 및 스위치와 같은 제어 흐름 구성은 적절한 키워드로 표시됩니다.
디컴파일러의 출력은 역어셈블러의 출력보다 수준이 높기 때문에 이해하기 쉽습니다.
역어셈블러를 사용하려면 분석가가 대상 프로세서의 어셈블리 언어를 알아야 합니다.
주류 프로그래머는 일상적인 작업에 어셈블리 언어를 사용하지 않지만 오늘날 거의 모든 사람이 고급 언어를 사용합니다.
디컴파일러는 일반적인 프로그래밍 언어와 출력 언어 사이의 차이를 제거합니다.
더 많은 분석가가 역어셈블러보다 디컴파일러를
사용할 수 있습니다.

디컴파일러는 어셈블리 수준의 이디엄을 높은 수준의 추상으로 변환합니다.
일부
이디엄은 분석하는데 상당히 길어서 시간이 많이 소요될 수 있습니다.
다음 한 줄 코드 x = y / 2는 컴파일러에 의해 일련의 20-30 프로세서 명령으로 변환될 수 있습니다.
숙련된 분석가가 패턴을 인식하고 마음 속으로 원래 라인으로 교체하는데 최소 15-30초가 걸립니다.
코드에 이러한 이디엄이 많이 포함되어 있으면 분석가는 메모를 만들어 각 패턴을 짧은 표현으로 표시해 두어야 합니다.
이 모든 것이 분석 속도를 크게 저하시킵니다. 디컴파일러는
분석가에게서 이러한 부담을 덜어줍니다.
분석할 어셈블러 명령어의 양은 엄청납니다. 그들은 서로 매우 유사하고 패턴이 매우 반복적입니다.
디스어셈블러 출력을 읽는 것은 매혹적인 이야기를 읽는 것과 전혀 다릅니다. 컴파일러 생성 프로그램에서 코드의 95%는 읽고 분석하기에 정말 지루할 것입니다.
분석가가 유사하게 보이는 두 개의 코드 조각을 혼동하여 출력에서 쉽게 길을 잃는 일은 매우 흔합니다.
이 두 가지 요소(텍스트의 크기와 지루함)는 바이너리 프로그램이 완벽하게 분석되지 않는 결과를 초래합니다.
분석가는 어떤 휴리스틱이나 자동화 도구를 사용하여 의심스러운 부분을 찾으려고 합니다.
프로그램이 매우 작거나 엄청난 시간을 분석에 할애하는 경우만 예외일 겁니다. 디컴파일러는 두 가지 문제를 모두 완화합니다.
출력이 더 짧고 덜 반복적입니다. 여전히 출력에 약간의 반복이 포함되어 있지만 관리될 수 있는 정도입니다.
게다가, 이 반복은 분석을 자동화함으로써 해결할 수 있습니다.
바이너리 코드의 반복적인 패턴은 해결책을 요구합니다.
한 가지 분명한 해결책은 컴퓨터를 사용하여 패턴을 찾은 후 인간 분석가가 다루기 쉽게 보다 짧고 쉽게 패턴을 줄이는 것입니다.
일부 역어셈블러(IDA Pro 포함)는 분석을 자동화하는 방법을 제공합니다. 그러나, 사용 가능한 분석 모듈의 수가 적어 반복적인 코드의 문제가 사라지지 않습니다.
주된 이유는 바이너리 패턴을 인식하는 것이 놀라울 정도로 어려운 작업이기 때문입니다.
덧셈과 뺄셈과 같은 기본 산술 연산을 포함한 모든 "단순한" 동작은 바이너리 형식의 무한한 방법으로 표현될 수 있습니다.
컴파일러는 빼기에 더하기 연산자를 사용할 수 있으며 그 반대의 경우도 마찬가지입니다.
메모리 어딘가에 상수를 저장하고 필요할 때 로드할 수 있습니다.
약간의 작업 후, 레지스터 값이 알려진 상수임을 증명할 수 있다는 사실을 이용할 수 있으며,
레지스터를 다시 초기화하지 않고 그대로 사용할 수 있습니다.
사용된
방법의 다양성은 사용 가능한 분석 모듈의 수가 적은 이유를 설명합니다.
디컴파일러에서는 상황이 다릅니다. 디컴파일러가 분석가에게 높은 수준의 노션을 제공하기 때문에 자동화가 훨씬 쉬워집니다.
많은 패턴이 자동으로 인식되고 추상적인 노션으로 대체됩니다.
나머지 패턴은 디컴파일러가 도입한 형식 때문에 쉽게 감지할 수 있습니다.
예를 들어, 함수 매개변수와 호출 규칙의 노션이 엄격하게 형식화되어 있습니다.
디컴파일러를 사용하면 모든 함수 호출의 매개변수를 매우 쉽게 찾을 수 있습니다.
해당 매개변수가 호출 명령에서 멀리 초기화된 경우에도 마찬가지입니다.
역어셈블러로는
각 케이스를 개별적으로 처리해야 하는 어려운 작업입니다.
역어셈블러와 달리 디컴파일러는 입력에 대해 광범위한 데이터 흐름 분석을 수행합니다.
이것은 기능에 대한 광범위한 검색을 수행하지 않고도 "변수는 어디에서 초기화됩니까?" 또는 "이 변수가 사용됩니까?" 와 같은 질문에 즉시 응답할 수 있다는 의미입니다.
분석가는 일상적으로 이러한 질문을 제기하고 답변하므로 즉답을 받음으로써 생산성이 향상됩니다.
역어셈블리와 디컴파일의
병렬 비교
아래에서 역어셈블리 및 디컴파일 출력을 나란히 비교한 내용을 볼 수 있습니다.
다음은 유용한 예입니다.
이 페이지에는 다음 예가 표시됩니다.
1. 2로 나누기
2. 충분히 간단합니까?
3. 변수는 어디에 있습니까?
4. 산술은 로켓 과학이 아니다
5. 샘플 창 절차
6. 단락 평가
7. 인라인 문자열 연산
2로 나누기
역어셈블 출력을 사용하려면 컴파일러가 부호 있는 나눗셈 및 모듈로 연산에 대해 복잡한 코드를 생성한다는 것을 알아야 할 뿐만 아니라
패턴을 인식하는데 시간을 소비해야 합니다. 말할 필요도 없이, 디컴파일러는 일을 정말 간단하게 만듭니다.

충분히 간단합니까?
▪ 함수의 가능한 반환 값은 무엇입니까?
▪ 함수가 문자열을 사용합니까?
▪ 함수는 무엇을 합니까?
와 같은 질문들은 디컴파일러 출력을 보자마자 거의 즉시 대답할 수 있습니다.
말할 필요도 없이 로컬 변수의 이름을 변경했기 때문에 더 나아 보입니다.
역어셈블러에서 레지스터 이름은 레지스터
사용을 숨기고 혼동을 일으킬 수 있기 때문에 매우 드물게 이름이 바뀝니다.

변수는 어디에 있습니까?
IDA는 현재 식별자를 강조 표시합니다. 이 기능은 높은 수준의 출력에서 훨씬 더 유용합니다.
이 샘플에서는 검색된 함수 포인터가 함수에서 어떻게 사용되는지 추적하려고 했습니다.
디컴파일러가 내가 원하는 것을 정확히 수행하는 동안 역어셈블리 출력에서는 많은 잘못된 eax 발생이 강조 표시됩니다.

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

샘플 윈도우 프로시저
디컴파일러는 switch 문을 인식하고 윈도우 프로시저를 잘 표현했습니다.
이 작은 도움이 없으면 사용자는 메시지 번호를 직접 계산해야 합니다.
특별히
어려운 것은 없지만, 시간이 많이 걸리고 지루할 뿐입니다. 하지만
만일 실수를 한다면?…

Short-circuit
evaluation
이것은 Short-circuit evaluation를 설명하기 위해 큰 함수에서 발췌한 것입니다.
복잡한 일은 긴 함수에서 발생하며 사람의 방식으로 사물을 표현하는 디컴파일러가 있으면 매우 편리합니다.
주소 공간에 흩어져 있던 코드가 두 개의
if 문에 어떻게 간결하게 표시되는지 유의하십시오.

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

ARM 디스어셈블리 및 디컴파일 비교
다음은 ARM용 디스어셈블리 및 디컴파일러를 나란히 비교한 것입니다. 창을 최대화하여 두 열을 동시에 표시하십시오.
이 페이지에는 다음 항목들이 표시됩니다.
1. Simple case
2. 64비트 산술
3. 조건부 명령
4. 조건부 명령 - 2
5. 복잡 명령어
6. 컴파일러 보조 함수
7. Immediate constants
8. 위치 독립 코드
Simple
case
아주 간단한 기능부터 시작하겠습니다. 구조체에 대한 포인터를 받아들이고 처음 세 필드를 0으로 만듭니다.
함수 논리는 디컴파일러
출력만 봐도 알 수 있지만, 어셈블리 목록은 노이즈가 너무 많아 공부가 필요합니다.
디컴파일러를 사용하면 시간을 절약하고 리버스 엔지니어링의 더 흥미로운 측면에 집중할 수 있습니다.

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

조건부 명령
ARM 프로세서에는 코드를 단축할 수 있지만 판독기의 높은 주의가 필요한 조건부 명령어가 있습니다.
위의 경우는 매우 간단합니다. MOVNE 및 LDREQSH라는 한 쌍의 명령어가 있다는 점만 유의하십시오.
한 번에 하나만 실행됩니다. ARM에서 if-then-else가 얼마나 간단하게 보이는지 보여줍니다.
의사 코드가 훨씬 더 잘 보여주며 설명이 필요하지 않습니다.
퀴즈 질문: MOVNE가 R0에 0을 로드한다는 사실을 알고 계셨습니까? (왜냐면 저는 안했어요:)
또한 역어셈블리 목록에서 var_8을 볼 수 있지만 실제로 사용된
위치는 v4에 해당하는 var_A입니다.

조건부 명령-2
보세요, 디컴파일러 출력이 더 깁니다! 의사 코드가 역어셈블리 목록보다 긴 경우는 드물지만, 이것은 읽을 수 있는 상태를 유지하기 위해서 입니다.
여기에는 조건부 명령이 너무 많아서 종속성을 오해하기가 매우 쉽습니다.
예를 들어, 첫 번째 MOVEQ가 CMP에서 설정한 조건 코드를 사용할 수 있다는 사실을 알고 계셨습니까?
미묘한 디테일은 CMPNE를 건너뛸 수
있고 CMP에 의해 설정된 조건 코드가 MOVEQ에 도달할
수 있다는 것입니다.
디컴파일러는 이를 완벽하게 표현했습니다. 일부 변수의 이름을 바꾸고
유형을 설정했지만 이것은 쉬운 작업이었습니다.

복잡 명령어
조건부 명령은 일부일 뿐입니다. ARM은 많은 데이터 이동 명령어를 가지고 있는 것으로 유명합니다.
이는 명령어의 의미를 미묘하게 바꾸는 접미사 세트로부터 가능해집니다. 예를 들어 STMCSIA를 보시면,
이는 STM 명령어이지만 CS는 "carry set"를 의미하고 IA는 " increment after (이후 증가)"를
의미함을 기억해야 합니다.
요컨대 역어셈블리 목록은 중국어와 같습니다. 의사 코드는 더 길지만
이해하는데 훨씬 적은 시간이 필요합니다.

컴파일러 보조 함수
코드 조각이 길어 유감이지만, 디컴파일러가 컴파일러 보조 함수(예: __divdi3)를 처리할 수 있고,
64비트 산술을 아주 잘 처리할 수 있다는 것을 보여주고 있습니다.

Immediate
constants
ARM 명령어는 큰 Immediate 상수를 가질 수 없기 때문에 때때로 두 개의 명령어로 로드됩니다.
역어셈블리 목록에는 0xFA(십진수 250) 상수가 많이 있지만, 모두 사용되기 전에 왼쪽으로 2만큼 이동합니다.
디컴파일러는 이러한
하찮은 사소한 일로부터 당신을 해방시켜 줍니다.
또한 측면: 디컴파일러는 ARM 모드와 Thumb 모드 명령어를 처리할 수 있습니다.
IDA에서 이미 처리하고
있기 때문에 명령어 인코딩에 대해서는 신경 쓰지 않습니다.

위치 독립 코드
어떤 경우에는 특히 PIC(위치 독립 코드)의 경우, 역어셈블리 목록이 오도될 수 있습니다.
상수 문자열의 주소가 R12에 로드되는 동안 코드는 이에 대해 신경 쓰지 않습니다.
변수 주소가 PIC 코드에서 계산되는 방식입니다(일부 오프셋이 있습니다.).
이러한 계산은 공유 객체에서 매우 자주 발생하며 불행히도 IDA는 모든 것을 처리할 수 없습니다.
그러나
디컴파일러는 R12를 잘 추적합니다.

PowerPC
역어셈블리와 디컴파일 비교
다음은 PowerPC용 역어셈블리 및
디컴파일러를 나란히 비교한 것입니다. 창을
최대화하여 두 열을 동시에 표시하십시오.
이 페이지에는 다음 예가 표시됩니다.
1. 간단한 코드
2. 선형 실행
3. 64비트 비교
4. 시스템 호출
5. 컴파일러 도우미
6. 부동 소수점 연산
7. 매직 곱셈/나눗셈 연산
8. VLE 코드
9. 대화형 디컴파일러
간단한 코드
이 간단한 함수는 처음 N개의 자연수의 제곱의 합을 계산합니다. 함수 논리는 디컴파일러 출력만 봐도 알 수 있지만,
어셈블리 목록은
노이즈가 너무 많아 공부가 필요합니다. 디컴파일러를 사용하면 시간이 절약되고, 리버스 엔지니어링의 더 흥미로운 측면에 집중할 수 있습니다.

선형 실행
PowerPC 프로세서에는 분기를 피하기 위해 사용할 수 있는 많은 명령이 있습니다
(예를 들면, cntlzw). 디컴파일러는
조건부 논리를 복원하고 코드를 이해하기 쉽게 만듭니다.

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

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

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

부동 소수점 연산
PowerPC 프로세서에는 한 번에 여러 작업을 수행하는 여러 복잡한 부동 소수점 명령어가 포함되어 있습니다.
어셈블러 코드에서 표현식을 복구하는 것은 쉽지 않지만 디컴파일러에서는
그렇지 않습니다.

매직 곱셈/나눗셈 연산
컴파일러는 곱셈/나눗셈 명령어를 더 저렴한 명령어 시퀀스(덧셈, 시프트 등)로 분해할 수 있습니다.
이 예는 디컴파일러가 이를 인식하고 원래 연산으로 다시 응고하는 방법을 보여줍니다.

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

대화형 디컴파일러
디컴파일러가 IDA와 같은 방식으로 상호 작용하기 때문에 의사 코드는 정적인 것이 아닙니다.
변수 유형 및 이름을 변경하고, 함수 프로토타입을 변경하고, 주석을 추가하는 등의 작업을 수행할 수 있습니다.
위의 예는 이러한 수정 후의 결과를 나타냅니다.
확실히 결과가 이상적이지는 않고 개선의 여지가 많이 있지만 아이디어를 얻으셨기를 바랍니다.
그리고 http://lxr.free-electrons.com/source/fs/fat/namei_msdos.c#L224에서
결과를 원본과 비교할 수 있습니다.

MIPS
역어셈블리 및 디컴파일 비교
다음은 MIPS용 역스어셈블리 및 디컴파일러를 나란히 비교한 것입니다. 창을 최대화하여 두 열을 동시에 표시하십시오.
이 페이지에는 다음 예가 표시됩니다.
1. 간단한 코드
2. 64비트 비교
3. 매직 divisions
4. 지연 슬롯이 있는 난제
5. 리틀 엔디안 MIPS
6. 마이크로MIPS
7. 부동 소수점 연산
8. 컴파일러 도우미
간단한 코드
이것은 디컴파일할 매우 간단한 코드이며 출력은 완벽합니다. 유일한 사소한 장애물은 global offset table (GOT)을 통한 참조이지만,
IDA와 디컴파일러 모두 이를 잘 처리합니다. 왼쪽과 오른쪽에서
읽어야 할 라인 수의 차이에 유의하십시오.

64비트 비교
어셈블러 목록이 길어 유감이지만, 다른 플랫폼과 마찬가지로 MIPS의 경우 디컴파일러가 64비트 작업을 인식하고
이를 매우 읽기
쉬운 구조로 축소할 수 있음을 보여줍니다.

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

지연 슬롯이 있는 난제
이전 예는 식은 죽 먹기이었습니다. 지연 슬롯으로 점프가 있는 만만치 않은 예 입니다. 적절한 디컴파일러는 이러한 경우도 처리해야 하며,
사용자를 오도하지 않고 올바른 출력을 생성해야 합니다. 이것이 우리가 하는 일입니다.
(우리는 지연 슬롯이 있는 다양한 시나리오를 발명하고 테스트하는 데 꽤 오랜 시간을 보냈습니다.)
리틀 엔디안 MIPS
빅 엔디안과 리틀 엔디안 코드가 모두 지원됩니다. 일반적으로 비슷해 보이지만 어셈블러에 미묘한 차이가 있을 수 있습니다.
디컴파일러는 관련된 비트를 추적하고 사람이 읽을
수 있는 코드를 생성합니다.

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

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

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

- 배송비 : 소프트웨어는 대부분 라이선스이며 이메일로 라이선스키가 전달되고 프로그램을 인터넷으로 다운로드 하므로 별도의 배송비가 없습니다
주문하신 제품의 배송은 당일 배송이 원칙이며 해외에서 라이선스가 발급되는 경우 대부분 그 다음날 받으실 수 있습니다
간혹 패키지로 전달되는 제품의 경우 택배로 전달되기 때문에 2일에서 3일 이내에 배송완료 됩니다
소프트웨어는 제품특성상 제품을 설치하여 사용한 경우 ( 고객등록 ), 정상작동이 되는 경우
고객의 단순 변심을 이유로 환불 또는 교환이 되지 않습니다
다만 제품이 작동하지 않거나 , 설치가 안되는 경우 처음부터 주문을 잘못하여
사용전에 취소를 요청하는 경우 에는 환불및 교환이 가능합니다
- 상품 청약철회 가능기간은 상품 수령일로 부터 30일 이내 입니다.
만약 설치가 안되어 사용을 못하는 경우 환불을 받을 수 있습니다
당사에서는 판매된 제품의 설치및 기술지원을 해드리고 있습니다
만약 해외개발사의 지원이 필요한 경우에는 개발사에 의뢰하여 사용상의 문제를 해결해 드리고 있습니다
상품이 장바구니에 담겼습니다.
바로 확인하시겠습니까?
상품이 찜 리스트에 담겼습니다.
바로 확인하시겠습니까?