본문 바로가기

reversing3

[rev] Summer Fan (level2) 안드로이드 apk 리버싱문제이다.JADX로 디컴파일 해본다. MainActivityKt 클래스의 generateFlag() 함수를 이용해서 플래그가 생성되는 것을 확인할 수 있다.변수는 다음과 같이 받아온다.위 두가지 내용을 기반으로 연산하는 것을 python 코드로 작성하면 다음과 같다. ChatGPT를 잘 이용하면 더 빠르게 코드를 작성해준다 ㅎㅎFLAG = [220, 211, 180, 230, 192, 22, 341, 220, 227, 341, 139, 163, 355, 293, 333, 196, 142, 216, 376, 133, 248, 26, 342, 378, 231, 149, 145, 173, 185, 1, 10, 198]KEY = ["h", "o", "t", "_", "h", "o", "t.. 2024. 6. 15.
리버싱 기초 정리할 일이 있어서 한번 정리해 보았다. Register GPR : 변수와 같은 느낌 ax, bx, cx, dx di, si SPR : 목적이 중요함 bp (base pointer) : 지역변수 sp (stack pointer) : 함수를 효율적으로 사용하기 위해 ip (PC) : 현재 실행 위치 Intel * little endian : 전력이 많이 소모되나, 속도가 빠름 big endian : ex) ARM * Windows : PE 포맷, PE파일의 시그니쳐는 MZ * Linux : ELF 포맷 text -----> object -----> ELF compile Linking calling convension : 기본적이라 의미 없는 것들 마지막에 지역변수 없으면 leave가 아니라 pop 사용 (.. 2019. 10. 14.
[Insomni’hack 2019] beginner reverse beginner reverse는 64bit 바이너리의 rust 언어로 된 리버싱 문제이다. 막상 대회때는 제대로 보지 않은 문제인데, write up 쓰려고 찾다가 고르게 되었다 ㅎㅎ 비슷한 시기에 나왔다는 go언어는 해봤지만, rust는 좀 어렵다고 해서 거리감을 가지고 있었는데 이렇게 리버싱으로 접하게되어 반가웠다. rust 언어로 되어있어서 더 어렵거나 한 문제는 아니었지만…! rust는 어떤 언어인지 좀 찾아봤는데, 메모리 오류를 없애기 위한 목적을 가지고 만들어진 언어라고 한다. 언젠가 한 번 사용해 봐야겠당 ㅎㅎ 분석 ubuntu@ubuntu:~/ctf/2019/insomni$ file beginner_reverse-466bdf23cf344b8ee734a8ae86620ac72a37bb81a95.. 2019. 10. 7.
반응형