케이스1 (ret) | 케이스2 (br) | 케이스3 (b) | 케이스4 (b) | 케이스5 (br) | 케이스6 (ret) | |
IDA 7.7 | 분석 안됨 | 분석 안됨 | 분석 안됨 | 정상 분석 됨 | 정상 분석 됨 | 분석 꼬임 |
Binary Ninja 3.3 | 분석 안됨 | 정상 분석 됨 | 정상 분석 됨 | 정상 분석 됨 | 정상 분석 됨 | 분석 꼬임 |
케이스 1 (ret)
int main(int argc, char const *argv[])
{
printf("hello world!\n");
__asm__ volatile(
"adr x30,0x0 \n\t"
"add x30,x30,0xc \n\t"
"ret \n\t"
);
printf("test 1\n");
printf("test 2\n");
return 0;
}
IDA 7.7 분석 결과
Binary Ninja 3.3.3996 분석 결과
케이스 2 (br)
int main(int argc, char const *argv[])
{
printf("hello world!\n");
__asm__ volatile(
"adr x30,0x0 \n\t"
"add x30,x30,0xc \n\t"
"br x30 \n\t"
);
printf("test 1\n");
printf("test 2\n");
return 0;
}
IDA 7.7 분석 결과
Binary Ninja 3.3.3996 분석 결과
케이스 3 (b)
#include <ctime>
int main(int argc, char const *argv[])
{
printf("hello world!\n");
// 항상 false가 되어야 실행되지 않는다.
// 최적화 되지 않기 위해 불투명 술어로 코딩한다.
if (rand() < 0) {
__asm__(
"b 0x4\n"
".long 12345678\n"
);
}
printf("test 1\n");
printf("test 2\n");
return 0;
}
IDA 7.7 분석 결과
Binary Ninja 3.3.3996 분석 결과
케이스 4 (b)
#include <ctime>
int main(int argc, char const *argv[])
{
printf("hello world!\n");
// 항상 false가 되어야 실행되지 않는다.
// 최적화 되지 않기 위해 불투명 술어로 코딩한다.
if (rand() < 0) {
__asm__(
"b 0x4\n"
"add sp,sp,#0x100\n"
"add sp,sp,#0x100\n"
);
}
printf("test 1\n");
printf("test 2\n");
return 0;
}
IDA 7.7 분석 결과
Binary Ninja 3.3.3996 분석 결과
케이스 5 (br)
int main(int argc, char const *argv[])
{
printf("hello world!\n");
if (rand() < 0) {
__asm__(
"mov x8,#0x1\n"
"adr x9, #0x10\n"
"mul x8, x9, x8\n"
".long 0x12345678\n"
"br x8\n"
);
}
printf("test 1\n");
printf("test 2\n");
return 0;
}
IDA 7.7 분석 결과
Binary Ninja 3.3.3996 분석 결과
케이스 6 (ret)
int main(int argc, char const *argv[])
{
printf("hello world!\n");
if (rand() < 0) {
__asm__(
"adr x8,#0xc\n"
"mov x30,x8\n"
"ret\n"
);
}
printf("test 1\n");
printf("test 2\n");
return 0;
}
IDA 7.7 분석 결과
Binary Ninja 3.3.3996 분석 결과
'Android Linux' 카테고리의 다른 글
[Android App] fork & ptrace (0) | 2022.08.29 |
---|---|
jni(arm64-v8a) NOX 개발 환경 구축하기 (1) | 2021.02.05 |
gdb 7.11 (arm 32bit) (0) | 2020.10.15 |
안드로이드 후킹, 메모리 변조 : 코드 후킹과 재배치(relocation) (0) | 2018.07.23 |
classes.dex memory dump (0) | 2018.07.19 |