2018. 5. 22. 14:22ㆍ0x02 Reverse Engineer/0x03. Etc
// rootme
// elf-antidebug solve
// c0nstant
// 풀이
// 바이너리를 키면 안티디버깅 int 3, int 80밖에 안보인다.
// 텍스트로 바이너리를 보면 사용되고 있지 않은 함수 sub_80480E2가 있다.
// sub_80480E2에서 특정 주소까지 xor을 시키게 되는데 여기서 opcode가 복원이 된다.
// 복원 된 opcode를 덤프 떠서 새로운 elf를 만든 다음 루틴 분석을 진행한다.
// 루틴은 byte씩 0xfc로 xor를 하게 된다.
#include <stdio.h>
int main(int argc, char*argv[])
{
// 0xA5, 0xCF, 0x9D, 0xB4, 0xDD, 0x88, 0xB4, 0x95, 0xAF, 0x95, 0xAF, 0x88, 0xB4, 0xCF, 0x97, 0xB9, 0x85, 0xDD
// xor 0xfc
short flag[] = { 0xA5, 0xCF, 0x9D, 0xB4, 0xDD, 0x88, 0xB4, 0x95, 0xAF, 0x95, 0xAF, 0x88, 0xB4, 0xCF, 0x97, 0xB9, 0x85, 0xDD };
for (int i = 0; i < sizeof(flag)/sizeof(flag[0]); i++)
{
flag[i] = flag[i] ^ 0xfc;
printf("%c", flag[i]);
}
return 0;
}
'0x02 Reverse Engineer > 0x03. Etc' 카테고리의 다른 글
[Rootme] Go lang Basic (0) | 2019.01.31 |
---|---|
rootme elf nanometis (0) | 2018.05.22 |
ROOTME PE-SEHVEH (0) | 2018.05.21 |
ROOTME Macho keygen or not (0) | 2018.05.19 |
ROOTME ARM (0) | 2018.05.19 |