전체 글 195

배열

Swift 배열 [ 배열 ]: 같은 타입을 가진 여러 개의 값을 순서대로 저장하는 자료구조 [ 배열 선언 ]----------------------------3~4 : 배열 선언 방법 (자료형 추정, 자료형 명시)7~8 : 비어있는 배열 선언10~11 : 비어있는 배열에 값 넣기 15 : 같은 타입이 아닌 다른 타입들을 배열로 선언하려면 위와 같이 : Array로 배열 선언.Question : 이러면 튜플과 뭐가 다르지?Answer : 튜플은 배열처럼 append, remove 등을 통한 element 추가 삭제가 불가능하다. [ 배열 요소 접근 방법 ]-------------------3 : 같은 값 여러번 넣는 배열 초기화 방법5~7 : 배열 요소(element) 접근 방법9 : 한번에 여러 배열 값..

Swift 기초 2019.01.18

튜플(Tuples)

Swift 튜플(Tuples) Swift의 강력한 기능 중 하나! 1. 여러가지 타입 값들을 하나의 상수,변수에 선언 가능. (구조체를 떠올려 보아라!)2. 튜플 상수, 변수를 리턴 값으로 사용가능. ==> 여러 값을 한번에 반환할 수 있다!!!!! 괄호안에 ,컴마 를 이용하여 여러 타입의 값들을 하나의 변수, 상수에 선언 가능. .(dot) 연산자로 각 요소(element)에 접근. .0 .1 .2 .3 외에도 별도의 이름도 지정 가능. 여러 변수를 튜플 변수,상수를 통해 한번에 초기화 가능. ※ 튜플은 배열처럼 append, remove 등을 통한 element 추가 삭제가 불가능하다.

Swift 기초 2019.01.18

변수 var, 상수 let

상수(Constatn) : 변하지 않고 항상 일정한 수 (값 변경 시 에러)상수 선언 : let a = 100 //상수 a에 100을 넣음. 변수(Variable) : 값을 담을 수 있는 바구니. (값 변경 가능)변수 선언 : var a = 100 //변수 a에 100을 넣음. num1은 var로 선언한 변수이므로 값에 변화를 주어도 에러가 발생하지 않는다. 반면, let으로 선언한 num2는 상수이므로 값을 변경할 수 없다. 따라서 num2 += 1 수행 시 에러 발생.Error 문구의 빨간 버튼을 누르면 에러 상세 내용과 에러 해결 방안을 제시해준다. Fix버튼을 누를 경우 추천 방식에 따라 자동으로 변경해줌.

Swift 기초 2019.01.17

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