본문 바로가기

변수 var, 상수 let 상수(Constatn) : 변하지 않고 항상 일정한 수 (값 변경 시 에러)상수 선언 : let a = 100 //상수 a에 100을 넣음. 변수(Variable) : 값을 담을 수 있는 바구니. (값 변경 가능)변수 선언 : var a = 100 //변수 a에 100을 넣음. num1은 var로 선언한 변수이므로 값에 변화를 주어도 에러가 발생하지 않는다. 반면, let으로 선언한 num2는 상수이므로 값을 변경할 수 없다. 따라서 num2 += 1 수행 시 에러 발생.Error 문구의 빨간 버튼을 누르면 에러 상세 내용과 에러 해결 방안을 제시해준다. Fix버튼을 누를 경우 추천 방식에 따라 자동으로 변경해줌.
xcode simulator 명령어 기록 xcrun ( xcode run)simctl (simulator control) xcrun simctl list: device 목록들과 고유코드가 쭉 나오고. 사용 상태도 나옴 (Shutdown, Booted)==> 따라서 xcrun simctl list | grep Boot 하면 현재 실행중인 시뮬레이터 고유 코드를 찾을 수 있음. xcrun simctl install 고유코드 *.app: 고유코드와 일치하는 시뮬레이터에 .app 파일을 설치한다.
IOS 리버싱 툴 1Dynamic analysis1.1GDB / LLDB 디버거는 소프트웨어 작성시 어디서 크래시가 나는지 알아내고, 프로그램의 특정 포인트에서 backtrace 정보를 찾는 등의 기능을 할 수 있게 한다. iPhone 상에서 돌아가고 있는 일반 프로세스에 attach해서 디버깅 하는 방법은 debugserver와 Debugging on iOS 7를 참조.1.2Cycript Cycript는 내 코드를 attach된 프로세스에서 out-of-box로 실행할 수 있게 하며, 몇몇 자바스크립트 제품들과 함께 더 편리하게 코드를 작성할 수 있게 해준다. 유용한 런타임 분석 가능. (완성된 뷰 hierarchy를 가져오고, 오브젝트의 속성 확인 등) 쉽게 tweak의 프로토타이핑 수행. ( substrate bri..
SSL.handshake.type (메세지 타입) SSL.handshake 과정의 message type 종류 정리 Hello Reqeust 0 (0x00) Client Request 1 (0x01) Server Hello 2 (0x02) Certificate 11 (0x0B) Server Key Exchange 12 (0x0C) Certificate Request 13 (0x0D) Server Hello Done 14 (0x0E) Certificte Verify 15 (0x0F) Client Key Exchange 16 (0x10) Finished 20 (0x14) 와이어샤크 필터링 시, http.request || ssl.handshake.type==1를 하면 http요청과 Client Hello만 뽑아서 볼 수 있다. 아주 좋아용~~
Win API) 메모리 값 읽기 WinAPI로 메모리 값 읽기. Pin을 이용하여 ReadFile 인자를 전역변수로 잡아두고 After에서 읽은 결과를 뽑아내고자 한다.포인터 변수에 메모리 주소를 담았는데 *를 하나 더 붙이니 에러가 난다. 이럴 경우 윈도우 API 함수인 ReadProcessMemory() 함수를 쓰면 된다.프로세스 핸들이야 GetCurrentProcess() 함수로 받아오면 되고, 나머지는 선언해서 인자로 주면 된다. PIN_LockClient();WINDOWS::BYTE *tmp_buffer = new WINDOWS::BYTE[tmp_size]; //ReadFile 결과 버퍼 내용을 읽어들임.WINDOWS::HANDLE cprocess = WINDOWS::GetCurrentProcess();TraceFile
메모리 값을 Hex 문자열로 출력하기 PIN API 함수를 이용하여 메모리 값을 Hex문자열로 출력하기. WINDOWS::BYTE 타입의 배열을 선언하고 메모리 값을 읽고 파일로 출력하면 Byte값이 hex 형태로 잘 나오는데, ASCII로 표현 가능한 문자는 ASCII 문자로 출력이 된다...!!ㅜㅜ PIN_API에서 ADDRINT 값을 hex 형태의 문자열로 바꿔주는 함수인 hexstr() 함수를 지원한다.다양한 타입을 받아들이므로 쓰는데 큰 무리가 없다. hexstr(바꿀문자열, width)여기서 width는 자릿수라고 생각하면 된다. width 값을 주지 않을 경우 0x0A는 0xA로 출력이 된다.원하는 자릿수를 명시하여 값을 맞추자. 나는 BYTE별로 출력하고 있으므로 width를 2로 주었다. 원하던 대로 hex 값들이 두자릿수에..
명령어 주소를 이미지이름+나머지로 나타내기 [PinTool] 명령어 주소를 '이미지이름 + 나머지'로 출력하기. Pintool에서 InsertCall로 함수를 삽입할 때 지금 보고 있는 위치가 어디인지 식별하기 위해 인자로 IARG_INS_PTR을 넘겨 현재 명령어의 주소를 받아 파일로 출력하곤 한다. Imagebase는 자주 바뀌므로 IDA를 통해 본다던지 등에서 불편함이 있을 때가 많은데, IDA와 병행해서 보기 편하게 'dll+나머지주소'로 출력한다면 훨씬 수월하게 추적이 가능하다. 자주 사용하는 방식이므로 기록해두고자 한다. 넘겨받은 IARG_INS_PTR로 '현재 명령어 주소'는 가지고 있는 상태라고 가정한다. 현재 명령어가 속한 이미지를 찾기 위해서는 IMG_FindByAddress() 함수를 사용한다.이로써 img object를 얻었..
EXIF Format Exif format 이란?: Exchangable Image File의 약자로 기본적으로 JPEG file format과 동일하다.★ "사진의 정보" & "썸네일 사진"을 담는다. 예를 들면 쉽게 이해가 된다.[카메라 정보]제조 업체 : Apple카메라 모델 : iPhone 6s [이미지 정보]사진 크기 : 2192 * 2921너비 : 2192픽셀높이 : 2921픽셀수평 해상도 : 72 DPI수직 해상도 : 72 DPI등의 정보들이 담겨있는데, 이 정보들이 바로 JPEG포맷에 삽입된 Exif format이다. JPEG라면 파일의 시작은 항상 SOI(Start of Image) Marker인 "FF D8"이다. 다음으로 APP0(JFIF)과 APP1(Exif) marker, 이후..