분류 전체보기 195

CMOV - assembly (CMOV 관련 모든 명령어 정리)

CMOV -- Conditional Move (조건부 대입) 명령어 정리 ※ : r32, r/m32에도 동일하게 적용된다. ex) CMOVZ ecx, [ebp-23ch] : ecx가 0(ZF==1)이라면 ecx에 [ebp-23ch]를 대입한다. C : CMPMOVZ : Condition (if dst==zero) ==> mov ecx, [ebp-23ch] 이라고 생각하면 이해가 쉽다. Opcode Instruction Description 0F 40 /r CMOVO r16, r/m16 Move if overflow (OF=0) 0F 41 /r CMOVNO r16, r/m16 Move if not overflow (OF=0) 0F 42 /r CMOVB r16, r/m16 Move if below (CF=1..

Assembly 2018.02.14

MOVUPS assembly

MOVUPS 어셈블리 명령어(MOV Unalinged Packed Single-Precision Floating-Point Values) [사용법]MOVUPS xmm1, xmm2/m128 (OPCODE : 0F 10 /r)MOVUPS xmm2/m128, xmm1 (OPCODE : 0F 11 /r) : double quardword (16bit 즉, 4개의 packed된 single-precision floating-point 값)을 source(두번째 인자)로부터 destination(첫번째 인자)으로 옮긴다. 해당 명령어는 128-bit 메모리 공간에서 XMM 레지스터로 값을 Load하는 데에도 사용되고 반대로 XMM 레지스터 값을 128-bit 메모리 공간으로 store 하기도 하며, XMM 레지스터..

Assembly 2018.02.13

windbg symbol path 설정

Windbg에서 심볼패스 설정하기. 참고주소 : https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/symbol-path windbg를 이용하여 디버깅 시에, 심볼패스를 설정해 주면 디버깅 시에 도움이 되는 관련 DLL 심볼 정보들을 이용하여 더욱 편하게 디버깅을 진행할 수 있다. windbg에서 symbol path를 설정하는 방법을 간단히 살펴보자. windbg는 ms에서 제공하는 윈도우 맞춤 디버거로, 당연히 ms 홈페이지에서 자세한 설명을 제공하고 있다. symbol path를 설정하는 다양한 방법은 위 '참고주소'에서 다양하게 다루고 있다. ms에서도 cache를 사용하여 locally하게 심볼을 사용할 것을 추천하고 있고, 인..

파이썬 문자열 대소문자 변환

파이썬 문자열 대소문자 변환 STR = "tEsT" print STR.upper(): 모든 문자를 대문자로 변환[출력]TEST print STR.lower(): 모든 문자를 소문자로 변환[출력]test print STR.captialize(): 맨 앞 문자만 대문자로 변환[출력]Test ex) 파일로 부터 읽어온 값이 특정 element의 크기에 해당하는 값이라면, hex로 크기를 나타낼 때에 대문자로 표현하는 게 개인적으로 보기가 편하다.print hex(e_size).upper()

element가 list인지 판단하기

List의 element가 List인지 판단하기 해답 : 파이썬에서 지원하는 isinstance() 함수를 이용하자.사용법 : isinstance(값, 타입) ==> '값'이 '타입'에 해당하는 요소인지 확인. ex) 리스트 요소들이 차지하는 각각의 길이(size)를 구하고 싶다.len() 함수를 이요하면 되지만, 2차원 리스트와 같은 경우에는 크기(size)가 제대로 구해지지 않음.LIST = [ 'a', 'b', ['aaaa', 'bbbb'] ] 일 때 LIST 요소별로 len()을 해주면'a' -> 1'b' -> 1['aaaa', 'bbbb'] -> 2 (원하는 건 4(aaaa)+4(bbbb)='8' 이 나왔으면 하는데!)이럴 때, instance() 함수를 이용하여 요소가 LIST인지 판별하여 계..

파이썬 이차원 배열 생성

파이썬 이차원 배열 생성 array = [[1,2,3]. [4,5,6], [7,8,9]]이런 식의 직접적으로 명시해주는 이차원 배열도 자주 쓰이지만, ------------------------------------------------------------------------ fd = open(파일) #파일을 열고fd.seek(offset) #읽어들일 offset을 설정하고nfonts = fd.read(2) #필요한 만큼 읽어들이고 matrix = [[0 for col in range(40)] for row in range(int(nfonts))]#이에 맞는 배열 생성.==> 행(nfonts) * 열(40)의 배열이 만들어진다.0 0 0 0 0 0 ... (40번 - 열개수)0 0 0 0 0 0000..

String을 hex형태로 변환하기

String을 hex형태로 변환하기ex) 파일로부터 크기를 읽어와 크기만큼 블럭을 할당하는 경우. fd = open(파일) #파일을 열고fd.seek(offset) #offset만큼 커서를 이동시켜font_n = fd.read(bytes) #값을 읽어오면 (\x66\x00)(===>>> font_n = "f " 와 같은 String으로 저장된다.) #읽어온 길이가 'f '으로 출력되는 것을 원하지 않으므로,hexString = ''.join(x.encode('hex') for x in font_n) #이를 hex형태로 변환하여print "font_len : " + hexString #출력 등의 원하는 동작을 수행. [출력]font_len : 6600 ※ String형태로 출력되던 걸 Hex형태로 변환시킬..

GZIP header format (.gz extention)

gzip file format 참조URL : (http://www.gzip.org/zlib/rfc-gzip.html#file-format) [GZIP 구조 요약]+---+---+---+---+---+---+---+---+---+---+|ID1|ID2|CM |FLG| MTIME |XFL|OS | (more-->)+---+---+---+---+---+---+---+---+---+---+●(if FLG.FEXTRA set)+---+---+=================================+| XLEN |...XLEN bytes of "extra field"...| (more-->)+---+---+=================================+●(if FLG.FNAME set)+=====..