목록공부 (37)
OutDoorFrog의 리버싱 이야기
보호되어 있는 글입니다.
오늘은 게싱 능력 상승을 위해 Codegate 2018 예선에 출제되었던 easy_serial 문제를 풀어볼 것입니다. 그럼 문제를 풀면서 행복 회로를 활활 태워보러 갑시다! 실행 환경 결정 Detect It Easy를 이용해서 한 번 확인해봅시다. Elf64인 것을 확인할 수 있습니다. 돌려봅시다. 반응이 영 좋지 못하군요. IDA로 돌려봅시다. hs_main이라 main에서 또 main 호출하는 패턴이면 c 말고 다른 언어일 확률이 높습니다. shutdownHaskellAndExit... Haskell을 한 번 구글에 검색해봅시다. 네 함수형 프로그래밍 언어라는 점과 컴파일 과정을 나타내주는 사진을 구할 수 있었습니다. 복잡하긴 합니다만.. 요약하면 하스켈이라는 언어에서 C로 탈바꿈해서 나온거네요. ..
오늘은 z3에 적응하기 위해서 2018 Codegate 예선전 문제로 나온 Redvelvet을 풀어보겠습니다. 일단 DIE에 던져줍시다. 우분투 x64 환경에서 한 번 돌려봅시다. 프로그램이.. 죽어버렸네요. IDA로 살펴보면 27의 길이의 문자열을 입력받은 후 15개의 함수를 거쳐서 값을 검증한 후 SHA256 해시 함수로 암호화하여 바이너리에 하드코딩되어 있는 긴 문자열과 비교하고 있습니다. 이름을 지어주자. 이대로 계속 작업을 하다간 멘탈폭사를 겪을 수 있습니다. 네이밍을 해줍시다. 혹시 모르는 함수가 있다면 제가 참조글 링크를 해놨으니 한 번 보시는 것을 추천드립니다. OpenSSL 라이브러리 홈페이지에서 설명한 SHA*_* 함수 ptrace 함수 설명 흐름이 이제 보이는 것 같습니다. NULL을..
수학에 면역력이 없는 사람입니다. 1트 파일 구성을 보시면 간단하게 JavaCrackMe.jar 파일 하나를 줍니다. jd-gui로 디컴파일해보시면 아무 내용이 없는 기적을 볼 수 있습니다. 실행을 시켜봅시다. 프로그램이 제대로 돌려지는 것 보아 안티 리버싱 기법이 적용된 듯 합니다. 알집을 써서 class 파일을 적출, 다른 디컴파일러를 써서 디컴파일해봅시다. 디컴파일이 성공했습니다. 이제 코드 해석만 하면 끝나겠죠? 간단하군요. 역산만 하면 되겠어욥. 0xeaaeb43e477b8487 / 26729 = [답] 이겠죠?? (끝일 것이라 생각했습니다. 착각이였습니다. 이런 ㄴㅇㅁㄻㄴㅇㄹ) 지인 찬스를 썼습니다. (도움을 주신 몇몇 분들께 진심으로 감사드립니다) 수학 앞에만 서면 왜 이리 나는 작아지는가...
- I Love Intel - HateIntel 과 ReadMe 파일로 구성이 되어 있습니다. ReadMe 파일에는 비밀번호를 찾으라는 문구가 적혀있더군요. Detect It Easy를 사용해서 실행 환경을 결정합시다. MACH-O네요.. (macOS, iOS는 준비가 되지 않았는데;;) 음 IDA를 이용해서 정적 분석을 해봅시다. 메인 함수로 추정되는 sub_2224를 디컴파일해봤습니다. 가독성을 증진시키기 위해 변수 이름들을 역할에 맞게 바꿔줬습니다. sub_232C 함수를 봅시다. 넣은 글자들을 차례대로 4회 인코딩시키는 루틴이기에 Encode4라고 지었습니다. (작명센스..) sub_2494 함수를 봅시다. 입력한 문자를 2를 곱해서 반환하거나 0x100과 And연산 했을 때 값이 0이 아니면 1..