ARM에서의 argument 전달방식
r0 - first argumentr1 - second argumentr2 - third argumentr3 - fourth argument[sp, #0] - fifth argument[sp, #4] - 6-th argument[sp, #8] - 7-th argument[sp, #12] - 8-th argument func(1,2,3,4,5,6,7,8)을 콜했을때의 objdump 내용: 000083e0 : 83e0: b580 push {r7, lr} 83e2: b084 sub sp, #16 83e4: af04 add r7, sp, #16 83e6: 2305 movs r3, #5 83e8: 9300 str r3, [sp, #0] 83ea: 2306 movs r3, #6 83ec: 9301 str r3, [..
더보기
IDA pro ARM <-> Thumb Switch
ARM 바이너리를 디버깅 하다보면, ARM(Code 32)와 Thumb(Code 16)모드가 동시에 존재한다. Bx 명령어가 실행되면, 옵코드를 읽는 모드가 변경된다( ARM -> Thumb or Thumb -> ARM) 가끔, IDA가 이걸 캐치하지 못하고, ARM을 Thumb로, 혹은 Thumb를 ARM으로 읽으려 하는 상황이 생기는데, 그럴때는 ALT - G 를 누른후, T의 값을 1로 해주면, 해당코드는 Thumb로 읽게 되고,T의 값을 0으로 해주면, ARM으로 읽게된다.
더보기