향상된 IDA Pro 서명 생성기 플러그인.
IDA_SigMaker32.dLL 및 IDA_SigMaker64.dLL 을 IDA plugins 디렉토리로 복사하십시오.
기본 IDA 핫 키는 "CTRL-ALT-S"이지만 Key Your IDA "Plugins.cfg"를 사용하여 다른 사람으로 설정할 수 있습니다. "ctrl-alt-s"는 이제 콤보 기본값과 충돌하여 경고 메시지를받지 않기 위해 "idagui.cfg"를 편집하고 "StackTrace" = 0 // "Ctrl-Alt-S" // open stack trace window "항목을 만듭니다.
Ida Pro 버전 7.6'ish가 필요합니다.
핫키 또는 IDA 편집/플러그인 메뉴를 통해 플러그인을 호출하십시오.

세 가지 서명 생성 작업이 있습니다.
함수 : 옵션 구성에 따라 고유 한 기능 입력 점, 오프셋이있는 최소 함수 서명 또는 전신 서명을 작성하는 데 사용됩니다 (아래 참조).
먼저 대상 기능 내부의 주소를 선택하십시오. 선택한 함수가 고유하지 않은 경우 (진입 점 또는 최소 옵션의 경우) 고유 한 기능 교차 참조 스캔의 서명이 시도됩니다.
일반적인 사용 사례 : 대상 메모리에서 실행 시간에 함수를 찾는 서명, 실행 가능한 업데이트 후 IDA의 기능을 찾거나 서명 등으로 알려진 라이브러리를 찾는 데 도움이됩니다.
예제 서명 출력 : 
서명 결과가 Windows 클립 보드로 푸시하여 쉽게 ctrl+v 소스 코드 등으로 붙여 넣습니다.

출력 형식 : IDA : 간격 육각 바이트 및 "?" 와일드 카드. 예 : C1 6C E8 ?? ?? ?? ?? 8B 50 08 코드 스타일 : 탈출 코드 헥스 문자열과 별도의 마스크 문자열 'X'는 Keeper Bytes, '?' 와일드 카드 바이트입니다. 예 : "xC1x6CxE8xCCxCCxCCxCCx8Bx50x08", "xxx????xxx" ??? 예 : {0xC1,0x6C,0xE8,0xAE,0xAE,0xAE,0xAE,0x8B,0x50,0x08}; "마스크 바이트"편집 상자를 사용하여 기본 "인라인 바이트"마스크 바이트를 변경하십시오. 기본 마스크 바이트는 0xAE 입니다.이 코드 바이트 중 하나입니다 (아래의 "이상 마스크 바이트"참조).
"기능"서명 생성 기준. 진입 점 : 가능한 경우 최소 바이트 크기의 기능 입력 지점 서명을 생성하려고 시도합니다. 최소 바이트 크기 : 최소한의 와일드 카드 카운트, 바이트 크기 (5 개는 더 큰) 명령 경계 정렬 서명을 선택한 기능 본체 내부에서 생성하려고 시도합니다. 풀 기능 본문 : 고유 한 전체 기능 본문 서명을 생성하려고 시도합니다.
이 세 가지 옵션 중 하나의 경우 기능이 고유하지 않은 경우 대신 가장 작은 고유 한 교차 참조 서명을 찾으려고 시도합니다. 비 유니 키 함수에 대한 전체 또는 부분 함수 서명을 만들려면 대신 "주소 범위"옵션을 사용하십시오.
메시지 레벨 : IDA 로그 창에 내부 서명 생성 메시지 출력에 대해 "Verbose"로 설정합니다.
최대 기능 스캔 참조 : 직접 "기능"작업 서명을 찾을 수없는 경우 검색 할 기능 교차 참조 수를 제한하십시오. 일반적으로 이것은 무제한 검색의 경우 '0'이어야하지만, 참조가 너무 많아서 속도가 느려지는 문제의 경우 스캔 속도를 높이기 위해 16 또는 100과 같은 합리적인 한계로 설정할 수 있습니다.
여러 주소 범위에 청크가 퍼지는 비교적 드문 기능의 경우,이 도구는 첫 번째 청크 만 사용하려고 시도합니다. 분리 된 청크 중 하나에서 서명을 만들고 싶다면 "At Address"메소드를 사용해보십시오. 다른 모든 것이 실패하면 "주소 범위"SIG (독창성을 검색하는 수동 검색이 필요할 수 있음)를 시도하십시오.
MAX FUNTER ENTRICT POINT 시그니처 바이트 : "기능"옵션을 사용할 때 "진입 점"기준이 구성되면 선택적으로 최대 진입 점 시그니처 바이트 크기를 제한합니다. 기본값은 '0'입니다. 이 한계를 초과하면 교차 참조 서명을 대신 찾을 수 있습니다.
'16'또는 '32'와 같은 실제 한도로 설정되며, 일반적으로 더 작은 XREF 서명 대 잠재적으로 매우 큰 진입 점이 서명.
SIGMAKEREX ( "EX")는 더 나은 지침 분석을 사용하여 더 작고 단단한 기능 서명을 생성합니다. 예 : SIGMAKER ( "SM") 와일드 카드는 sub esp, 90h ( "81 EC ?? ?? ?? ?? )의 오페라 바이트를 불필요하게 볼 수있는 반면, 전체 81 EC 90 00 00 00 바이트 시퀀스를 유지합니다.
Ex는 규범 기능 신체 서명 사용 사례에 더 중점을 둡니다. SM의 경우 하나의 제어 가능한 옵션 만 있습니다. 기능에서 선택한 주소가 어디에나 고유 한 서명을 만들려고합니다. 거기에서 찾을 수 없다면 대신 고유 한 교차 참조 SIG를 찾을 수 있습니다. EX의 경우, 식별 된 일반적인 사용 사례는 기능 입력 지점을 찾는 것이므로 "진입 점"기준 옵션이 구성 될 때 가장 작은 진입 점 시그니처가 생성됩니다. "최소 바이트 크기"옵션이 선택되면 전체 기능 본문 내에서 가장 작고 최소한의 최소 와일드 카드 수의 고유 한 시그니처 (최소 5 바이트)를 찾습니다.
SM은 옵션 대화 상자에서 바이트 대 와일드 카드 수 등에 대한 출력 기준 제어가 더 많습니다. Ex는 최선을 다하고 있다고 가정합니다 (최소한 와일드 카드와 가장 작은 바이트 크기).
Ex는 SM이 더 단순하고 덜 혼란스러운 UI를 선호하는 "변환"및 개별 "검색"기능을 생략합니다.
검색의 경우, Ex는 항상 선택한 출력 형식 서명 외에 IDA 형식 출력을 방출하므로 IDA SIG 문자열과 함께 IDA Binary Search "Hex"옵션을 사용하십시오.
IDB를 RAM으로 클로닝하고 AVX2 최적화 패턴 스캐너를 사용하는 기술과 스캔을위한 느린 IDA 찾기 기능에 의존하는 기술로 인해 더 광범위한 검색을 수행 할 때 Ex는 일반적으로 더 빠릅니다.
동적으로 패턴을 찾는 내 자신의 프로젝트에서, 나는 "인라인 바이트"(더 나은 이름이 부족한) 형식을 선호합니다. 가장 단순하고 가장 작고 ASCII Hex 문자열에서 런타임 변환이 필요하지 않습니다. 나는 많은 프로젝트 에이 형식을 사용했지만 아직 시그니처 충돌 또는 중복 일치 문제를 해결하지 못했습니다.
잠재적 이중 결성 문제를 최소화하기 위해 와일드 카드/마스크 바이트에 가장 중고 코드 바이트 값 중 하나를 사용하는 것이 현명합니다. 이상적인 후보자를 찾기 위해 3 개의 큰 32 비트 및 64 비트 코드 세그먼트에서 코드 바이트 주파수를 수집 한 다음 결과를 표로 정리하고 정렬했습니다. "ida_get_byte_frequency.py"ida 스크립트는 바이트 주파수 사전 수집에 사용되어 JSON DB에 저장합니다. "byte_frequency_tabulate.py"스크립트는 저장된 JSON DBS 세트를 오름차순으로 표시하고 정렬합니다. 32 비트의 바이트 주파수는 64 비트와 같지 않으며 독립적으로 표로 표시되어 있습니다. "32bit.txt"및 "64bit.txt"를 참조하십시오. 이 둘의 시각적 상관 관계에서, 0xa2는 실제로 가장 일반적인 분모이며, 그 다음 0xae가 이어집니다. 0xae는 기본 마스크 바이트로 0xa2 이상으로 선택되었습니다.
Windows 10에서 Visual Studio 2019를 사용하여 구축되었으며, 유일한 의존성은 공식 IDA Pro C/C ++ SDK입니다. 프로젝트 파일에서 설정하면 "IDASDK/포함"및 IDA SDK가 위치한 "IDASDK/LIB"폴더를 찾을 것으로 예상되는 환경 변수 _IDADIR 찾습니다. IDA가 자체적으로 찾아 IDADIR 사용하지 않으므로 설치된 IDA 버전 이상을 사용하려고하면 충돌을 일으킬 수 있습니다.
Python 3.7'ish 또는 더 나은 "byte_frequency_tabulate.py"스크립트를 실행하는 것이 좋습니다.
GamedeCeception.net 일부터 현재 C/C ++ 및 Python 반복 저자까지 원래 SIGMAKER 도구의 제작자에게 감사합니다 : P4tr! CK, Bobbysing, Xero | Hawk, Ajkhoury 및 Zoomgod et al. 그의 Simd 프로그래밍 리소스에 대한 Wojciech Mula에게 감사합니다.
Kevin Weatherman의 MIT © 2022에서 출시