전체 글 195

파이썬3 바이너리 값 편집

[파이썬3 바이너리 값 편집][ Python3 기준 ] 파일의 바이너리 값을 편집하고자 한다.ex) 파일의 Data 길이를 나타내는 Header 값을 수정하고자 하는 경우! 파이썬 3에서는 참 편리한 함수를 제공하여 편집이 용이하다. 우선 파일을 바이너리 모드로 열어준다. (b 추가) 바이너리 모드이므로 여기서 read() 함수를 호출하면 type : 으로 읽힌다.bytes 타입으로 산술연산을 할 수 없으므로 int로 변환시켜 계산한다.int.from_bytes(bytes, byteorder, signed=) 함수를 사용하자. bytes bytes-like-object 또는 iterable producing bytes가 들어가야한다. byteorder endian 방식을 표기하는데, 'big' or 'l..

파이썬 Binary 파일값 hex로 다루기

binascii 모듈을 이용해서 파일에서 읽어온 값을 hex 수준에서 다룰 것이다. 보통 파일을 열어 read(4) 후 print 하면 ascii 수준의 값인 "abcd"가 출력된다.이를 hex 수준의 값으로 출력하고 싶다면 binascii.b2a_hex() 함수를 이용하면 된다. 뜻을 풀어보면 다음과 같다.b2a : Binary to Ascii 즉, Binary 값을 Ascii 문자열로 만들건데,_hex() : 16진수 표현식으로 만들거다. ex) 시그니처를 검사한다던지, 파일 헤더값을 참조한다던지 등 hex 값을 이용할 일이 많다. 문자열의 hex 값으로 출력이 잘 된다. binascii.b2a_hex(data)binascii.hexlify(data)Return the hexadecimal repre..

파이썬 한글 인코딩 해결

파이썬 2.7 기준 맨 앞에 주석 한줄을 추가해주면 됨. #-*- coding:utf-8 -*- 이는 아래의 모든 문자열을 UTF-8 형식으로 처리한다는 의미. 파이썬 2.7은 기본적으로 문자열을 Unicode형식으로 처리하므로, 한글 사용 시 위와 같은 인코딩 설정이 필요. --------------------------------------------------------------------------------------------------------------※ 파이썬 3부터는 기본적으로 utf-8을 사용하므로, 위 같은 주석을 쓰지 않아도 됨.

파이썬 입출력

[ 파일 모드 종류 ]r - 읽기모드 (디폴트)w - 쓰기모드, (항상 새로 생성 - 기존 내용 삭제됨.)x - 쓰기모드, (이미 파일 존재 시 오류.)a - 내용추가모드, 파일이 있으면 뒤에 내용을 추가 -- 중간에 추가는 안됨.+ - 읽기쓰기모드t - 텍스트 모드 (default)b - 바이너리 모드, bytes 단위 데이터 처리. +) 알아두기.f = open('file.txt', 'r+t')텍스트 읽기쓰기모드, 맨 앞에서부터 내용을 덮어쓴다. 기존 파일 유지. (파일이 없으면 오류 발생) --> r(읽기모드) 이므로.

ZIP Archive file format

[ ZIP Archive file format ]: https://en.wikipedia.org/wiki/Zip_(file_format): https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html [ 구성도 ] ZIP Archive 포맷 구조는 위 그림과 같다. [ Local file header + Data + Data descriptor ] 가 한 세트를 이루어 파일별로 쭉 쓰인다.Data descriptor는 Optional한 헤더로 Flag의 3번째 비트(0x08자리)가 set 된 경우에만 추가되고, 보통은 header+data가 한 세트이다. Central directory file header는 Local file header의 확장으로,..

windbg 포인터 참조하기

WinDBG 포인터 참조하기 70634b48이라는 메모리 주소에 6e26a330이라는 값이 담겨있습니다. call dword ptr [eax+0Ch] 처럼 어셈블리 명령어에서는 내부의 값을 참조한다는 의미로 [] 대괄호가 사용됩니다.하지만 이를 그대로 메모리창 (Alt+5)에서 확인하려고 똑같이 대괄호를 쓰면 원하는 값이 나오지 않습니다. 어셈블리 명령어 그대로 [eax+0ch]를 입력해보겠습니다.그림에서 보듯이 eax+0ch 와 [eax+0ch] 출력 시 값이 같게 나옵니다. 메모리창에서도 마찬가지구요. 어셈블리에서 쓰이는 값참조의 의미가 아닌 수식을 위한 괄호로 인식하기 때문입니다. 보다 정확하게 보자면 덧셈과 곱셈 연산에 괄호유무에 따라 값이 바뀌는 걸 확인할 수 있습니다. 어셈블리 명령어의 대괄호..

IDA SetColor (색상 입히기) - 7.4이후로는 set_color

[ IDA Pro 색상입히기 ] Idapython의 colours.py에 있는 SetColor( where , what, color ) 함수를 통해 원하는 색상을 입힐 수 있습니다. ! 7.4버전 이후로는 set_color where 에는 원하는 주소를, what 에는 색을 입히기를 원하는 것을 (CIC_SEGM, CIC_FUNC, CIC_ITEM) color 에는 원하는 RGB색상코드를 입력해주면 됩니다. [What 종류별로 예] 1. CIC_ITEM ==> 수행한 명령어 SetColor( here(), CIC_ITEM, 0xBB37FF ) here() : 현재 커서가 위치한 곳의 CIC_ITEM : 명령어 하나를 0xBB37FF : 해당 색상으로 칠함. 2. CIC_FUNC ==> 수행한 명령어 Se..

IDA 2018.09.03