본문 바로가기

Computer Security/Reversing

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으로 읽게된다. 더보기
ELF-64bit 에서 argument 전달방식 gcc 기준, ELF 32bit에서는 (%esp),0x4(%esp), ... 에 넣어서 넘기는 방식인데, ELF64에서는 레지스터에 넣어서 넘긴다.아직도 헷갈린다. rdi : 첫번째인자rsi: 두번째인자rdx: 세번째인자rcx: 네번째인자r8: 다섯번째인자r9: 여섯번째인자(%rsp): 일곱번째인자0x8(%rsp): 여덟번째인자... 더보기
카톡킨상태로 올리디버거 사용하기 카톡이 더미다로 패킹이 되어있어서, 올리디버거를 감지하면 카톡이 꺼진다. 그럴때 사용하는 플러그인 더보기