ARM Reverse Engineering

Similar documents
Microsoft Word - 1. ARM Assembly 실습_xp2.doc

Microsoft PowerPoint - 05-ARM-Instruction-Set.ppt

Microsoft PowerPoint - LN_1_ARM_CPU_0.ppt [호환 모드]

q ARM (Advanced RISC Machines) v 1990년설립 v UK-based joint venture Ø Apple Computer, Acorn Computer Group, and VLSI Technology q 32-bit RISC Intellectu

ARM 아키텍쳐 - ARM 아키텍쳐 - Programming 모델 - ARM 프로세서명령어 - 예외처리와시스템리셋 - ARM9TDMI 프로세서 한국기술교육대학교 전기전자통신공학부 장영조 한국기술교육대학교임베디드 SOC 설계및실습

Here is a "PLDWorld.com"... // EXCALIBUR... // Additional Resources // µc/os-ii... Page 1 of 23 Additional Resources: µc/os-ii Author: Source: HiTEL D

Embedded System

hlogin2

T100MD+

INTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co

PowerPoint 프레젠테이션

(1) 주소지정방식 Address Mode 메모리접근 분기주소 명령어 직접번지 Reg. 지정 Reg. 간접 Base Index 간접 Immediate 상대번지 절대번지 Long 주소 Reg. 간접 Byte Access Bit Access 내부 Data M

untitled

임베디드 시스템 구조

9

온라인 IT 교육최강 ( 강의정보처리필기강사조대호 차시명 [CA-06 강 ] 프로세서와명령어차시 6 차시 학습내용 프로세서와명령어 학습목표 컴퓨터의구조와프로세서에대해이해할수있다 컴퓨터의명령어에대해이해할수있다 학습내용 1. 컴퓨터의구성 - 1

Microsoft PowerPoint - 강의2.ppt

Deok9_Exploit Technique

Microsoft PowerPoint - a6.ppt [호환 모드]

라는 점이다. ARM7TDMI 같은 ARM7에서는 페치(fetch), 디코드 (decode) 그리고 실행(execute)의 3단계로 구성된 파이프라인을 적 V4 PF1 ARMv I-캐시 액세 + 다이내믹

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - hy2-12.pptx

ARM01

슬라이드 1

Microsoft PowerPoint - e2.ppt [호환 모드]

Microsoft PowerPoint - System Programming Lab Week1.ppt [호환 모드]

No Slide Title

Microsoft Word - FunctionCall

Computer Architecture

Microsoft PowerPoint - o8.pptx

DE1-SoC Board

PowerPoint 프레젠테이션

Chapter ...

ARM 프로세서 입문

구문 분석

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

슬라이드 1

PowerPoint 프레젠테이션

학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능

< B5BFBEC6BDC3BEC6BBE E687770>

MicrocontrollerAcademy_Lab_ST_040709

시스코 무선랜 설치운영 매뉴얼(AP1200s_v1.1)

프로그램카운터 (Program Counter) 명령레지스터 (Instruction Register) 누산기 (AC: Accumulator) 상태레지스터 (Status Register) PSWR(Program Status Word Register) 메모리주소레지스터 (M

<C1A4BAB8C3B3B8AE5FB1E2BBE75FC7CAB1E25F E687770>

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

PowerPoint 프레젠테이션

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

The_IDA_Pro_Book

PowerPoint 프레젠테이션

JVM 메모리구조

KEY 디바이스 드라이버

hwp

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

슬라이드 1

Lectures for 2nd Edition

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

PCServerMgmt7

SRC PLUS 제어기 MANUAL

IDA 5.x Manual hwp

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

untitled

5" TFT- LCD 및감압터치지원 : 800x480 USB Host 2.0, USB OTG 2.0, GPS, Wireless LAN, Ethernet 10/100Mbps 통신지원 300 만화소 CMOS Image Sensor 고해상도카메라모듈내장 전원은베이스보드에서공

Microsoft PowerPoint - 30.ppt [호환 모드]

삼외구사( 三 畏 九 思 ) 1981년 12월 28일 마산 상덕법단 마산백양진도학생회 회장 김무성 외 29명이 서울 중앙총본부를 방문하였을 때 내려주신 곤수곡인 스승님의 법어 내용입니다. 과거 성인께서 말씀하시길 道 를 가지고 있는 사람과 어울려야만 道 를 배울 수 있

Microsoft PowerPoint EmbedSW-Target

Microsoft PowerPoint - hw8.ppt [호환 모드]

Microsoft PowerPoint - 15-MARS

PowerPoint 프레젠테이션

CANTUS Evaluation Board Ap. Note

1

6주차.key

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

며 오스본을 중심으로 한 작은 정부, 시장 개혁정책을 밀고 나갔다. 이에 대응 하여 노동당은 보수당과 극명히 반대되는 정강 정책을 내세웠다. 영국의 정치 상황은 새누리당과 더불어 민주당, 국민의당이 서로 경제 민주화 와 무차별적 복지공약을 앞세우며 표를 구걸하기 위한

=

Microsoft Word - ExecutionStack

PowerPoint 프레젠테이션

02_3 지리산권 스마트폰 기반 3D 지도서비스_과업지시서.hwp

Microsoft PowerPoint - PL_03-04.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

강의10

슬라이드 1

Microsoft Word - Installation and User Manual_CMD V2.2_.doc

PowerPoint 프레젠테이션

2힉년미술

ESP1ºÎ-04

1217 WebTrafMon II

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Microsoft PowerPoint - chap01-C언어개요.pptx

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

Microsoft PowerPoint - ch07.ppt

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - ARM 개발 환경.ppt

API 매뉴얼

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

Microsoft Word ARM_ver2_0a.docx

Microsoft PowerPoint - chap06-2pointer.ppt

bn2019_2

Transcription:

singi@hackerschool Facebook : @sjh21a

http://kernelhack.co.kr/netsec-singi.zip

- First Phase About ARM ARM Operating Mode and Registers Basic ARM Instruction Thumb Mode - Second Phase Configuration of Reverse Engineering Function Calling Convention Analysis C Syntax to ARM Assembly Real world Example #1 for third party app Real world Example #2 for Default Browser Reference

ARM CPU 의동작모드 ARM CPU 의 Register 와용도 자주사용되는 ARM Instruction 습득 ARM CPU 만의특징파악 ARM Assembly 예제

ARM is Advanced RISC Machine 32비트의명령어로구성되어있음. (ARM 서버용으로 64비트출시됨 ) RISC는명령어가 CISC보다간단하고, 수가적음. (x86 계열은 CISC 사용 ) ARM Core? ARM Processor? ARM Architecture / Processor 종류 Architecture v4 v5te v5tej v6 v7 Processor ARM7TDMI, ARM720T, ARM940T, ARM920T, ARM922T ARM946E-S, ARM926E-S, Xscale ARM926EJ-S ARM1136JF-S Cortex A, M, R T : Thumb, D : Debug Port (JTAG), M : 8 비트곱셈기, I : Break Point 나 Watch Point 설정가능, D 와사용. -E : DSP 연산명령어추가, -S : VHDL, Verilog 로회로도가제공됨. -J : Java Byte code 해석가능.

ARM Operating Modes Mode 설명 Supervisor(SVC) Reset 이나 SWI 명령이실행될때 Privileged mode FIQ IRQ Abort Undefined System Fast Interrupt가발생되었을때일반적인 Interrupt가발생되었을때 Data 나 instruction fetch에실패할때정의되지않은 instruction일때 User 모드와같지만, 특권모드임 User 응용프로그램이나 OS 실행할때 Unprivileged mode Privileged mode 에선 Interrupt 의사용유무설정가능 Privileged mode 에선서로변경이자유롭지만, Unprivileged mode 에선변경이불가능함.

Example #1 User mode MOV R8, #1 MOV R9, #2 FIQ 발생 FIQ Mode MOV R8, #0 MOV R9, #0 ADD R10, R8, R9 복귀 R10 에저장되는값은?

R0 ~ R12 : 일반연산및임시저장장소등으로사용. R13 Stack Pointer (SP) 동작모드별로별도로존재함. R14 Link Register (LR) 함수호출시리턴될주소를가지고있음 동작모드별로별도로존재함. 스택에접근해서 Return Address 에접근하는것은레지스터보다상대적으로느림. R15 Program Counter (PC) 다음에실행될명령어를가지고메모리로부터가지고옴. 모드별로별도로존재하지않고, 하나의 R15 레지스터만존재함. CPSR Program Status Register (CPSR) Mode 가변경되면 H/W 적으로변경되기전의 CPSR 이 SPSR(Saved ) 에저장됨. User/System Mode 를제외하고각모드마다하나씩존재함.

CPSR Register 구조 31 30 29 28 27 24 8 7 6 5 4 0 N Z C V Q J Reserved I F T M Flag Field Status Field Extension Field Control Field Flag Field Control bits Mode bits N 연산결과가마이너스인경우에 set I 1 인경우 : IRQ 비활성화 10000 User Z 연산결과가 0 인경우에 set F 1 인경우 : FIQ 비활성화 11111 System C 연산결과에자리올림이발생했을때 set T 1 인경우 : Thumb, 0 인경우 : ARM 10001 FIQ V 연산결과가 overflow 됐을경우 set 10010 IRQ Q 포화가발생되면 set, 반드시 clear 10011 SVC J 자바바이트코드실행상태 10111 Abort 11011 Undefined

32bit ARM Instruction 구분 1 분기명령 B, BL 명령어 2 데이터연산명령 ADD, ADC, SUB, SBC, RSB, RSC, AND, ORR, BIC, MOV, MVN, CMP, CMN, TST, TEQ 3 Multiply 명령 MUL, MLA, SMULL, SMLAL, UMULL, UMLAL 4 Load/Store 명령 LDR, LDRB, LDRBT, LDRH, LDRSB, LDRSH, LDRT STR, STRB, STRBT, STRH, STRT 5 Load/Store Multiply 명령 LDM, STM 6 Swap 명령 SWP, SWPB 7 Software Interrupt 명령 SVC ( 기존 SWI 에서변경 ) 8 PSR 전송명령 MRS, MSR 9 Co-Processor 명령 MRC, MCR, LDC, STC 10 Branch Exchange 명령 BX 11 ARM Architecture 별로명령어들이추가존재.

MOV R0, #31337 MOV R0, R1 Op-code Destination Register Source Register ARM 은메모리내에직접데이터를쓰거나, 가져올수없음! 특정명령을통해메모리값을레지스터에가져오거나, 레지스터값을메모리에써야함. (LDR, STR 명령어 ) 이것은 RISC 구조의대표적인특징이고, Load/Store 구조라함. 또한, 32 비트상수값은 Operand 로사용할수없음.

조건부실행 {<cond>} 파이프라인구조를가지는 CPU의지연을줄이기위한것. 명령어의조건필드와 CPSR Register의 N, Z, C, V값을비교하여수행됨. 접미사 CPSR Flag 의미 EQ Z Flag set 같다. NE Z Flag Clear 같지않다. CS C Flag Set 크거나같다.(unsigned) CC C Flag Clear 작다 (unsigned) MI N Flag Set 음수 PL N Flag Clear 양수또는 0 VS V Flag Set 오버플로우발생 VC V Flag Clear 오버플로우 X HI C Flag Set, Z Flag Clear 크다.(Unsigned) LS C Flag Clear 작다.(Unsigned) GE N Flag = V Flag 크거나같다. LT N Flag!= V Flag 작다 GT Z Flag Clear AND (N = V) 크다 LE Z Flag Set OR (N!= V) 작거나같다 AL Ignore 무조건실행

산술연산명령어형식 Operation{<cond>} {s} Rd Rn Operand2 Operation ADD, SUB, ADC, 등 {<cond>} 조건부실행을위한조건 {s} 연산결과로부터 CPSR Register의 Flag를 set 함. Rd Destination Register Rn Source Register 산술연산명령어예제 ADD R0, R1, R2 R1 과 R2 을더하여 R0 에저장. SUBEQ R0, R1, #8 EQ조건이면, R2에서 8을빼서, R0에저장하고, 결과에따라 CPSR Flag를설정함. ADDS R1, R2, R0 R2 과 R0 를더하여 R1 에저장하고, 결과에따라 CPSR Flag 를설정함.

논리연산명령어형식 Operation{<cond>} {s} Rd Rn Operand2 Operation AND, ORR, EOR, BIC {<cond>} 조건부실행을위한조건 {s} 연산결과로부터 CPSR Register의 Flag를 set 함. Rd Destination Register Rn Source Register 논리연산명령어예제 AND R0, R1, R2 R1 과 R2 을 AND 연산하여 R0 에저장. ANDEQS R0, R1, R2 EQ 조건이면, R1 과 R2 를 AND 연산하여 R0 에저장하고, 결과에따라 CPSR Flag 를설정함. BICLE R1, R2, R0 LE 조건이면, R2 와 R0 를 XOR 하고결과를 R1 에저장.

비교명령어형식 Operation{<cond>} Rn Operand2 Operation CMN, CMP, TEQ, TST {<cond>} 조건부실행을위한조건 Rn Source Register Destination Register 가존재하지않음. CPSR Flag 를설정하기위한명령이없어도항상설정함. 비교명령어예제 CMP R0, R1 R1 과 R2 를비교하여, 그결과로 CPSR 에 Flag 설정. TSTEQ R2, #8 EQ 조건이면, R2 와 #8 을비교후, 결과로 CPSR Flag 설정. CMN LE 조건이면, R2 와 R0 를 XOR 하고결과를 R1 에저장.

MOVE 명령어형식 Operation MOV, MVN {<cond>} 조건부실행을위한조건 Rd Destination Register Operation{<cond>} Rd Operand2 Source Register 가존재하지않음. MOV R0, R1 R1 을 R0 로옮긴다. 비교명령어예제 MOVLE R0, R2 LE 조건이면, R2 를 R0 로옮긴다. MVN R0, R2 R2 XOR 0xFFFFFFFF 한값을 R0 에옮긴다. (Negative 로변경 )

분기명령어형식 B{L} {cond} <expression> {L} Branch with link 로 R14 에 PC 값을저장함. {<cond>} 조건부실행을위한조건 <expression> 위치정보 비교명령어예제 BL somewhere Somewhere로분기, LR에돌아올주소저장. ( 함수호출에사용 ) 함수호출후, 되돌아갈때, MOV PC, LR 사용함. B somewhere Somewhere 로분기 BL somewhere+1 계산된위치로분기. CMP R1, #0 BEQ success R1 이 0 이면 (EQ 조건이면 ) success 로분기.

데이터전송명령어형식 Pre-index 방식 LDR STR {cond} {B} Rd [Rn, <offset>] {!} {cond} 조건부실행을위한조건 {B} Unsigned Byte 단위의 Access 를할때사용됨. Rd LDR 의경우 Destination Register 가되고, STR 의경우 Source Register 로사용됨. Rn Base Register 로사용됨. Offset 12 비트상수또는레지스터가올수있음. {!} Pre-Index 방식에서 Base Register 값을자동으로업데이트할때사용됨. 데이터전송명령어형식 Pre-index 방식 LDR R1, [R2, R4] R2+R4 위치에서데이터를워드만큼읽어서, R1 에저장. LDR R1, [R2, R4]! R2+R4 위치에서데이터를워드만큼읽어서, R1 에저장. 전송후, R2 의값은 R2+R4 값으로변경됨. STR R1, [R2, R4] R1 값을 R2+R4 위치에워드만큼저장함. LDR R1, [R2, #8] R2+8 위치에서워드만큼읽어서 R1 에저장함.

데이터전송명령어형식 Post-index 방식 LDR STR {cond} {B} {T} {cond} 조건부실행을위한조건 {B} Unsigned Byte 단위의 Access 를할때사용됨. {T} 데이터전송시에 Unprivileged mode 로전송함. Rd LDR 의경우 Destination Register 가되고, STR 의경우 Source Register 로사용됨. Rn Base Register 로사용됨. Offset 12 비트상수또는레지스터가올수있음. Rd Rn offset 데이터전송명령어형식 Post-index 방식 LDR R1, [R2], #4 R2에서워드만큼읽어서 R1에저장후, R2+4값으로 R2 변경함. LDR R1, [R2], R4 R2에서워드만큼읽어서 R1에저장후, R2+R4 값으로 R2 변경함. STR R1, [R2], R4 R1 값을 R2 위치에워드만큼저장후, R2+R4 값으로 R2 변경함.

데이터전송명령어형식 PC-Relative 방식 LDR {cond} 조건부실행을위한조건 {size} Unsigned Byte 단위의 Access 를할때사용됨. Rd Destination Register. Label PC 위치에서 4K byte 내에있는 Label 참조 =DATA 32 비트데이터를레지스터에쉽게넣기위한어셈블러기능. LDR R1, label label: DCD 0xdeadbeef {cond} {size} Rd 데이터전송명령어형식 PC-Relative 방식 Label 위치에서데이터 0xdeadbeef 를워드만큼읽어서, R1 에저장. LDR R1, =0xdeadbeef 데이터 0xdeadbeef 를 R1 에저장한다. Label =DATA

다중데이터전송명령어형식 STM {cond} 조건부실행을위한조건 {addressing mode} 어드레스를만드는방법을나타냄. Rn Base Register 로이위치로부터데이터가저장.! 데이터전송후, Base Register 를변경한다. {register_list} 저장할데이터를가지고있는레지스터. {cond} <addressing mode> Rn{!} <register_list> 다중데이터전송명령어형식 STMIA R0, {R1,R2,R3} R1,R2,R3 데이터를 R0 위치부터저장함. STMIA R0!, {R1,R2,R3} R1,R2,R3 데이터를 R0 위치에저장하고, R0 값에 12 가더해짐. 12 = R1(4) + R2(4) + R3(4)

다중데이터전송명령어형식 LDM {cond} 조건부실행을위한조건 {addressing mode} 어드레스를만드는방법을나타냄. Rn Base Register 로이위치로부터데이터가읽혀짐.! 데이터전송후, Base Register 를변경한다. {register_list} 저장할데이터를가지고있는레지스터. ^ Privileged mode 에서 CPSR 를복원. {cond} <addressing mode> Rn{!} <register_list>^ 다중데이터전송명령어형식 LDMIA R0, {R1,R2,R3} R0 위치에서데이터를차례대로읽은후, 각각 R1, R2,R3 에저장. LDMIA R0!, {R1,R2,R3} R0 위치에서데이터를차례대로읽은후, 각각 R1, R2, R3 에저장, 그후, R0 에 R1(4)+R2(4)+R3(4) 가증가. LDMIA R0, {R0-R7} R0 위치에서데이터를읽은후, R0~R7 까지각각저장. LDMIA R0!, {R0-R2, PC} R0 위치에서데이터를읽은후, R0~R2 까지그리고 PC 에저장.

ARM<->Thumb mode 명령어 (Inter-working) BLX {cond} Rm {cond} 조건부실행을위한조건 Rm 분기하고자하는주소정보와변환하고자하는상태정보가저장. Label PC-relative 방식으로분기, 반드시조건없이사용해야하고, 무조건 Thumb 로전환됨. BLX Label Inter-working 명령어형식 BLX thumb_func thumb_func로분기하고, Thumb mode로전환하고 R14 Register에돌아올주소저장. BLXEQ R0 EQ조건이면, R0가지정하는위치로분기하고, 상태정보에따라 상태를전환하고, R14 Register에돌아올주소저장.

Software Interrupt 명령어형식 SVC {cond} <expression> {cond} 조건부실행을위한조건 <expression> 인터럽트번호 Software Interrupt 명령어형식 SWI 0x80 CPSR을 SPSR_svc에저장후, PC를 0x08(SWI의예외처리 Handler) 로분기후, 0x80을보고정의된동작실행.

ARM<->Thumb mode 명령어 (Inter-working) BLX {cond} <addressing mode> Rn{!} <register_list>^ {cond} 조건부실행을위한조건 Rm 분기하고자하는주소정보와변환하고자하는상태정보가저장. Label PC-relative 방식으로분기, 반드시조건없이사용해야하고, 무조건 Thumb 로전환됨. Inter-working 명령어형식 BLX thumb_func thumb_func로분기하고, Thumb mode로전환하고 R14 Register에돌아올주소저장. BLXEQ R0 EQ조건이면, R0가지정하는위치로분기하고, 상태정보에따라 상태를전환하고, R14 Register에돌아올주소저장.

.global _start _start: MOV r0, #1 MOV r1, pc ADD r1, #24 MOV r2, #13 MOV r7, #4 SVC 1 SUB r0, r0, r0 MOV r7, #1 SVC 1.ascii "Hello NetSec\n"

Thumb mode 도입이유 기존 ARM 명령을사용하여만들어진바이너리보다크기가약 75% 적음. (Thumb-2) 크기가적어지면, Flash나 Rom 같은저장장치의단가를줄일수있음. 16비트메모리인터페이스를사용하면, 가격과전력소모를줄일수있음. ARM Mode Thumb Mode 명령어크기 32bit 16bit 사용 Register 수 R0~R15 R0~R7 조건부실행가능 가능 불가 실행파일크기 100% 65%

.global _start _start:.code 32 ADD r3, pc, #1 BX r3.code 16 MOV r0, pc ADD r0, #10 STR r0, [sp, #4] ADD r1, sp, #4 SUB r2, r2, r2 MOV r7, #11 SVC 1.ascii "/system/bin/sh"

Crackme.apk

APK-Multi-Tool 을이용해디컴파일

APK 안에있던 JNI 파일추출. IDA 를이용하면, 함수이름보여짐. 함수명 : Java_com_app_crackme_MainActivity_CreateSerial

Clear!

ARM Based Android Device 에서 Test 환경구성 ARM Assembly 로보는 C 언어함수호출규약파악 자주사용되는 C 언어문법형태파악. Webkit One-day 취약점분석

Test Device/OS : Samsung Galaxy S3 / Android Host OS : Ubuntu 12.04 Cross Compiler : Android-NDK-r8d Android Debugger : Android-SDK

NDK : http://developer.android.com/tools/sdk/ndk/index.html NDK 안의 arm-android toolchain 설치

설치된 Toolchain 을이용한 ARM 예제컴파일방법

설치된 Toolchain 을이용한 Thumb 예제컴파일방법

ARM Mode 결과 Thumb Mode 결과

컴파일된바이너리를 adb 를이용해 test device 에업로드후실행.

인자가 4 개인경우 인자가 4 개이상인경우 Register R0 R1 R2 R3 R7 용도 1 번째인자 / 함수반환값 2 번째인자 3 번째인자 4 번째인자 Syscall 번호 4 개이상의인자를사용하면, 스택을사용함.

If-else 구문

Switch 구문

Target Third Party Application 목적 : Android App 에대한동적디버깅예제. 사용 Tool : gdb, gdbserver

Target Application 목적 : Android App 에대한취약성점검 사용 Tool : gdb, gdbserver, IDA

1. ARM Architecture Reference Manual ARMv7-A and ARMV7-R / arm.com 2. ARM 으로배우는임베디드시스템 / 안효복저 / 한빛미디어