본문 바로가기

힙(Heap) 구조 - Linux [구조] - (line당 4bytes단위)(Header)━━━━━━━━━━━━━━━━━━━━━━━━━ (malloc chunk)Prev_Size━━━━━━━━━━━━━━━━━━━━ (actual chunk)Size | N | M | P | -- 힙 크기가 8bytes 단위이므로, 뒤의 3bit는 "Flags"로 사용된다.-----------------------(Data)FDBKFD_nextsize ┐BK_nextsize ┘ LargeBin에서만 사용됨. 크기가 다른 첫번째 Chunk를 가리킴.[Chunk data....][Chunk data....][Chunk data....]━━━━━━━━━━━━━━━━━━━━━━━━━Prev_Size -- 인접한 다음 Chunk의 Prev_Size도 현재 Chunk..
힙 디버깅 !heap사용되고 있는 힙들 목록 출력. !heap -m [힙]특정 힙에대한 모든 세그먼트들 출력. !heap -h [힙]LFH 제외한 모든 힙 엔트리 출력. (-hl 옵션은 LFH까지 포함)
64bit Big Endian <-> Little Endian 변환 #include "stdafx.h"#include #include long long value = 0x0123456789abcdef printf("%016llX", htonll(value)); //long long 자료형이라 LL이 붙습니다. (64bit)//==> ef cd ab 89 67 45 23 01 printf("%016llX", ntohll(value));//==> ef cd ab 89 67 45 23 01
xchg assembly xchg assembly XCHG는 'Exchange'의 약자라 볼 수 있다. 두개의 Operand의 내용을 서로 교환하는 명령어이다. [사용법]xchg reg, reg (O)xchg reg, mem (O)xchg mem, reg (O) ※ xchg mem, mem (X)mem to mem의 교환은 지원하지 않는다.
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..
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 레지스터..
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()