목록공부/사이트 문제 풀이 (7)
OutDoorFrog의 리버싱 이야기
수학에 면역력이 없는 사람입니다. 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..
안녕하세요~ 블로그의 주인장 OutDoorFrog입니다. 오늘은 Csharp를 풀어봅시다. 일일 초대 손님이 있습니다. 바로... .Net Reflector입니다! (Free-Trial이라 14일 시한부 판정을 받은 프로그램입니다 ㅠㅠ) 1. 프로그램 실행 일단 실행시켜보니 Windows Form으로 만들었을 확률이 높겠네요. 리네이밍을 하지 않는다고 가정하면 Form1 클래스에 사용자가 만든 코드가 있고 Program 클래스의 메인 함수에서 Form1 객체를 생성하여 실행하는 방식이겠네요. 몇몇 답도 찍어봤는데 역시나 맞진 않습니다. 2. .Net Reflector - 1 역시 예상과 같군요. main 함수입니다. 자동으로 생성되는 코드들이랑 비슷하네요. 객체를 생성했네요. Form1의 구성을 봅시다...
여러분들 새해 복 많이 받으세요~! 안녕하세요~ 블로그의 주인장 OutDoorFrog입니다. 2학년 2학기도 거의 끝나가고.. 방학도 머지 많아서 조금 긴 쉬는 시간을 가진 것 같습니다. 쉴 때는 확실하게 쉬고 공부할 때는 확실하게 공부하는 게 중요하죠! Reversing.kr 올클을 향해 같이 나아가 봅시다. 1. 문제 구성 ReadMe.txt를 살펴보시면 문제에 대한 설명이 존재하고Music_Player.exe의 실행에 필요한 msbvm60.dll도 동봉해서 넣어주신 것 같습니다.(출제자님의 세심한 배려를 느낄 수 있습니다) ReadMe.txt의 내용은 이 프로그램에서는 음악을 1분 동안만 들을 수 있게 제한이 걸려있고1분 초과하여 들어야 하는데 1분 체크 루틴을 모두 우회하면 완벽한 플래그(?)를 ..
재활치료 중인 개구리, OutDoorFrog입니다! 0. 인사말 윈도우 아키텍처를 어떻게 설명드릴까... 고민하던 중 어떤 분께서 리버싱케알 문제에 대해서 언급을 해주셨습니다. 요즈음 온라인 CTF랑 세미나에 참가하느라 정신이 없었는데 조언을 해주신 분께 감사의 말씀을 전해드리고 싶습니다. 재활 치료 중이니 난이도가 그나마 쉬운 문제부터 천천히 풀겠습니다! (까먹고 있었는데 정말 감사합니다.) 1. IDA를 이용한 풀이 이번 풀이는 아이다 디컴파일러를 이용해서 트레이싱 없이 진행할 예정입니다. (도구최고) main 함수를 찾아 디컴파일 해봅시다. 이미 풀었기 때문에 각 함수마다 역할에 알맞은 이름을 붙인 상태입니다. Input 함수 : scanf 함수를 호출하고, 문자열을 입력받습니다. judgement..