내 친구가 Facebook에서 일부 악성 코드를 다운로드했으며, 자신을 감염시키지 않고 그 기능이 무엇인지 궁금합니다. .exe를 실제로 디 컴파일 할 수는 없지만 적어도 어셈블리에서 보거나 디버거를 연결할 수 있습니까?
.NET 실행 파일이 아니며 CLI 헤더가 없다고 편집하십시오.
내 친구가 Facebook에서 일부 악성 코드를 다운로드했으며, 자신을 감염시키지 않고 그 기능이 무엇인지 궁금합니다. .exe를 실제로 디 컴파일 할 수는 없지만 적어도 어셈블리에서 보거나 디버거를 연결할 수 있습니까?
.NET 실행 파일이 아니며 CLI 헤더가 없다고 편집하십시오.
답변:
디버거 를 사용하면 대화식으로 프로그램 어셈블리를 단계별 로 진행할 수 있습니다. 디스어셈블러를
사용 하면 프로그램 어셈블리를보다 자세히 볼 수 있습니다. 디 컴파일러를
사용하면 작성된 내용을 알고 있다고 가정하여 프로그램을 부분 소스 코드로 다시 전환 할 수 있습니다 ( PEiD 와 같은 무료 도구로 찾을 수 있습니다 -프로그램이 포장되어 있으면 먼저 압축을 풀어야합니다) 또는 어디에서나 PEiD를 찾을 수없는 경우 Detect-it-Easy . DIE는 현재 github 에 강력한 개발자 커뮤니티를 보유하고 있습니다).
현재 수행중인 작업에 유용 할 수있는 관련 도구로는 ResourceHacker (무료)와 같은 리소스 편집기와 Hex Workshop (상업용) 과 같은 16 진수 편집기가 있습니다.
또한 맬웨어 분석을 수행하거나 SICE를 사용 하는 경우 가상 머신 내부의 모든 것을 실행하는 것이 좋습니다 (예 : VMware Workstation) . SICE의 경우 BSOD로부터 실제 시스템을 보호하고 맬웨어의 경우 대상 시스템으로부터 실제 시스템을 보호합니다. VMware 에서 맬웨어 분석에 대한 내용은 여기를 참조하십시오 .
개인적으로 Olly, WinDbg & W32Dasm 및 일부 더 작은 유틸리티 도구를 사용합니다.
또한 다른 사람들의 소프트웨어 를 분해하거나 디버깅 하는 것은 대개 EULA에 반하는 것입니다. :)
psoul의 훌륭한 게시물은 귀하의 질문에 대한 답변이므로 그의 훌륭한 작품을 복제하지는 않지만 이것이 왜 완벽하게 유효하지만 어리석은 질문인지 설명하는 것이 도움이 될 것입니다. 결국 이곳은 배울 곳입니다.
현대의 컴퓨터 프로그램은 사람이 읽을 수있는 텍스트 명령 본문 ( "소스 코드"라고 함)의 입력부터 시작하여 컴퓨터가 읽을 수있는 명령 본문 (또는 "이진"또는 "기계라고 함)으로 끝나는 일련의 변환을 통해 생성됩니다. 암호").
컴퓨터가 일련의 기계 코드 명령을 실행하는 방식은 궁극적으로 매우 간단합니다. 프로세서가 취할 수있는 각 작업 (예 : 메모리에서 읽고 두 값 추가)은 숫자 코드로 표시됩니다. 숫자 1이 비명을 의미하고 숫자 2가 낄낄 거림을 의미한다고 말한 다음 그에 따라 소리지르거나 낄낄 거림을 기대하면서 1 또는 2로 카드를 들고 있으면 컴퓨터에서 사용하는 것과 본질적으로 동일한 시스템을 사용하게됩니다 작동합니다.
이진 파일은 코드 (일반적으로 "op 코드"라고 함)와 op 코드가 작동하는 정보 ( "인수")의 집합입니다.
이제 어셈블리 언어는 언어의 각 명령 단어가 프로세서에서 정확히 하나의 op 코드를 나타내는 컴퓨터 언어입니다. 어셈블리 언어 명령과 프로세서 op 코드 사이에는 직접적인 1 : 1 변환이 있습니다. 이것이 x386 프로세서의 코딩 어셈블리가 ARM 프로세서의 코딩 어셈블리와 다른 이유입니다.
디스 어셈블리는 간단합니다. 프로그램은 바이너리 (머신 코드)를 읽고 op 코드를 동등한 어셈블리 언어 명령으로 바꾸고 결과를 텍스트 파일로 출력합니다. 이것을 이해하는 것이 중요합니다. 컴퓨터에서 이진 파일을 읽을 수 있으면 수동으로 op 코드 테이블 (ick)을 사용하거나 디스어셈블러를 통해 이진 파일도 읽을 수 있습니다.
디스어셈블러에는 몇 가지 새로운 트릭이 있지만 모두 디스어셈블러가 검색 및 교체 메커니즘이라는 것을 이해하는 것이 중요합니다. 이것이 금지하는 EULA가 궁극적으로 뜨거운 공기를 불어내는 이유입니다. 컴퓨터가 프로그램 데이터를 읽도록 허용하거나 컴퓨터가 프로그램 데이터를 읽지 못하게 할 수는 없습니다.
(나를 틀리지 말아라. 그렇게하려는 시도가 있었다. 그들은 노래 파일에서 DRM뿐만 아니라 잘 작동한다.)
그러나 분해 방법에는 경고가 있습니다. 변수 이름이 존재하지 않습니다. 그러한 것은 CPU에 존재하지 않습니다. 라이브러리 호출은 지옥처럼 혼란스럽고 종종 추가 바이너리를 분해해야합니다. 최상의 조건에서 조립하기는 쉽지 않습니다.
대부분의 전문 프로그래머는 두통없이 어셈블리 언어를 읽고 읽을 수 없습니다. 아마추어에게는 일어나지 않을 것입니다.
어쨌든, 이것은 다소 광택있는 설명이지만 도움이되기를 바랍니다. 모든 사람은 내 편견을 자유롭게 고칠 수 있습니다. 오랜만이야. ;)
좋은 소식. IDA Pro는 현재 이전 버전에서 무료로 제공됩니다 : http://www.hex-rays.com/idapro/idadownfreeware.htm
괜찮은 디버거라면 이것을 할 수 있습니다. OllyDbg를 사용해보십시오 . (편집 : 매개 변수를 WinAPI 호출로 디코딩하는 훌륭한 디스어셈블러가 있습니다!)
x64dbg
적극적으로 유지 관리되는 좋은 오픈 소스 디버거입니다.
어셈블리에서 정보를 볼 수 있지만 가장 쉬운 방법은 가상 머신을 실행하고 수행하는 작업을 보는 것입니다. 공개 주식이나 그와 비슷한 것을 가지고 있지 않아야합니다.
아직 Immunity Debugger 에 대해 아무 말도하지 않았다는 것을 믿을 수 없습니다 .
Immunity Debugger는 익스플로잇을 작성하고 맬웨어를 분석하며 바이너리 파일을 리버스 엔지니어링하는 강력한 도구입니다. 처음에는 Ollydbg 1.0 소스 코드를 기반으로했지만 이름이 resoution 버그로 수정되었습니다. 쉽게 확장 할 수 있도록 잘 지원되는 Python API 를 제공하므로 분석에 도움이되는 Python 스크립트를 작성할 수 있습니다.
또한 Corelan 팀의 Peter가 훌륭한 도구 btw 인 mona.py 라는 좋은 기사를 작성했습니다 .
시간이 없다면 cwsandbox에 맬웨어를 제출하십시오.
http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/
HTH
당신은 decompile exe 파일에 아주 좋은 dotPeek를 사용할 수 있습니다. 공짜 야.
2019 년에 Ghidra ( https://ghidra-sre.org/ )는 체크 아웃 할 가치가 있다고 말합니다 . 오픈 소스 (무료)이며, 읽을 수있는 C 코드로 다시 디 컴파일하는 기능을 포함하여 경이로운 코드 분석 기능이 있습니다.