목록분류 전체보기 (420)
외로운 Nova의 작업실
- 문제인식 먼저 실행해보겠습니다. 3번째 remove me! 라고 되어있고 nagnag라고 있습니다. 이부분 메시지를 지우면 되는것 같습니다. - 크랙 설계 메시지를 만드는 함수를 call하는 부분을 찾아서 검증하고 없애줍니다. - 리버싱 근데 코드가 너무 간단합니다. - 크랙 nagnag 출력부분을 다 nop으로 만들어버립니다.
- 문제 인식 먼저 실행시켜보겠습니다. 아무래도 키젠프로그램들이니 1234로 키값을 넣어보겠습니다. 그랬더니 이렇게 뜹니다. 이렇게 안뜨고 정상실행하는게 목표인 것 같습니다. - 크랙 설계 먼저 문자열을 비교하는 함수가 무조건 있을 것입니다. strcmp, cmp 등등이 있을겁니다. 이를 어셈블리에서는 call 명령어로 함수를 불러낼 것입니다. 따라서 call 명령어를 검색해서 문자열을 비교하는 부분에 bp를 걸고 어떻게 비교하는지 알아내거나 비교후 점프문을 크랙해보도록 하겠습니다. - 리버싱 search for - all intermodular calls를 눌러 모든 call 하는 함수들을 검색합니다. 그럼 딱봐도 strcmp 함수가 보입니다. 여기에 bp를 걸고 F9로 run 해줍니다. 이후 1234..
- 브로드캐스트 리시버 브로드캐스트 리시버는 흔히 이벤트 모델로 실행되는 컴포넌트라고 정의합니다. 시스템에 어떤 이벤트가 발생하면 브로드캐스트 리시버를 실행해 앱이 해당상황에 맞게 동작할 수 있습니다. - 브로드캐스트 만들기 브로드캐스트 리시버는 BroadcastReciever를 상속받는 클래스를 선언해야합니다. 또한 브로드캐스트 리시버의 생명주기는 onRecevie() 하나뿐입니다. 따라서 이 함수를 override 해줍니다. class MyReceiver : BroadcastReceiver(){ override fun onRecevie(context: Context, intent: Intet){ } } 특히 onRecevie는 10초이내에 완료할 것을 권장함으로 오래걸리는 작업을 담기에는 부적절합니다..
- 버추얼박스 설치 및 우분투 설치 https://mainia.tistory.com/2379 버추얼박스(VirtualBox) 이용해서 우분투(Ubuntu) 설치하기 버추얼박스(VirtualBox) 를 이용해서 다양한 OS 를 자신의 컴퓨터에 설치할 수 있습니다. 저는 직업 특성상 리눅스 OS 를 접할 일이 많습니다. 별도로 컴퓨터를 마련해서 리눅스 테스트 환경을 갖추 mainia.tistory.com 이후 화면 크기 설정을 VboxVGA로 변경해야 비율에 맞게 잘 커집니다. - 공유 폴더 만들기 https://www.manualfactory.net/11052 버추얼박스 / 공유 폴더 만드는 방법 버추얼박스에서 호스트와 게스트 간 파일을 주고 받는 방법 중 가장 쉬운 것은 드래그 앤 드롭을 이용하는 것입니..
- ANR 문제 ANR(activity not response)는 액티비티가 응답하지 않는 오류 상황을 의미합니다. 액티비티를 작성할때 ANR을 고려하지않으면 앱이 수시로 종료될 수 있습니다. 액티비티가 사용자 이벤트에 5초이내에 반응하지않으면 ANR 오류가 발생합니다. 즉, 시스템의 수행 흐름에서 시간이 오래 걸리는 작업이 끝나지 않으면 사용자 이벤트에 반응하지 못합니다. 오래 걸리는 작업이 있다면 사용자가 기다려주면 되지만 사용자가 언제 터치할지 모르기때문에 항상 ANR 오류를 고려해야합니다. 특히 액티비티에서 시간이 오래 걸리는 대표적인 작업은 네트워크입니다. 물론 앱은 대부분 네트워크 통신을 지원하는 전문 라이브러리(Volley 또는 Retrofit2)를 사용해서 만들며 이 라이브러리를 사용할때는..
안녕하세요. 네트워크 해킹과 보안 시리즈는 네트워크 해킹과 보안 책을 통해서 공부하면서 알게된 지식들을 정리하기위해 만든 포스팅입니다. 오늘은 계층에따른 패킷 분석을 실행해보도록 하겠습니다. - 와이어샤크 먼저 패킷 분석 툴인 와이어샤크를 준비해줍니다. https://www.wireshark.org/download.html Wireshark · Download Download Wireshark The current stable release of Wireshark is 4.0.3. It supersedes all previous releases. www.wireshark.org 위 링크에 접속해주셔서 운영체제에 맞는 툴을 다운로드 해주시면됩니다. - 랜 구성 저는 와이파이를 라우터로 두고 노트북은 와이파..
- 태스크 액티비티 태스크란 앱이 실행될때 시스템에서 액티비티의 각종 정보를 저장하는 공간입니다. 시스템의 stack처럼 뒤돌아가기 버튼을 눌렀을때 어떤 액티비티로 돌아가야하는지를 저장하는 공간입니다. 예를 들어 A_OneActivity와 A_TwoActivity가 한 앱에 있을때 순서대로 A_OneActivity -> A_TwoActivity를 실행한다면 태스크에는 아래와 같이 저장됩니다. 그렇다면 실행하는 앱마다 태스크는 하나만 존재할까요? 그렇지는 않습니다. 이번에는 앱과 앱이 연동되어 실행되는 구조를 알아보겠습니다. 아래와 같은 실행 구조가 있다고 가정해보겠습니다. 그러면 아래와 같이 태스크가 구성됩니다. 그렇다면 아래와 같은 경우는 어떨까요? 아래와 같이 태스크가 구성됩니다. - 태스크 제어 원..
- 동적 분석 저번 1장에서 안드로이드 앱을 apk > dex > .class 파일로 변경해서 자바 디컴파일로 파일을 봐보았습니다. 하지만 이는 정적 분석으로 코드만 볼 수 있습니다. ollydbg같이 프로그램을 실행시키면서 동적으로 분석하는 방법이 있는지 찾아보았습니다. IDA Pro로 가능하다는 것을 알게 되었습니다. 그 방법을 소개해드리겠습니다. - 사전 준비 먼저 동적 분석을 하려면 IDA pro, 통합USB드라이버, 안드로이드 단말기, adb 프로그램이 필요합니다. IDA pro가 있으신 분들만 가능합니다. 이제 통합 USB 드리이버를 다운로드 해보겠습니다. 스마트폰 제조사에 맞춰 통합 usb드라이버를 다운로드해줍니다. 저의 경우에는 삼성이므로 아래의 링크에서 다운로드가 가능합니다. https:..
안녕하세요. 이번 시리즈는 안드로이드 앱을 리버싱해보고 작동 원리를 알아내려고합니다. 안드로이드 앱 리버싱 관련해서는 예제가 많이 없어서 제가 직접 예제를 만들고 리버싱을 해서 작동 부분을 알아내보려고합니다. 그전에 사전 지식 이있습니다. - 사전 지식 구글은 태블릿, pc, 자동차에 들어가는 안드로이드 운영체제를 만들고싶었습니다. 따라서 열악한 환경에서도 잘 돌아가는 운영체제를 만들고싶었습니다. 이에따라 jvm을 사용하고싶었지만 저작권때문에 사용하지못하고 Dalvik 가상머신을 새롭게 만들었습니다. 하지만 Dalvik 가상머신또한 jvm에 영향을 받고 있습니다. jvm은 자바 가상 머신으로 프로그램을 해석하는 기능을 합니다. 이때 기계어가 일반적인 cpu와는 다르다는 특징이 있습니다. 따라서 jvm에서..
- 문제인식 파일 업로드 기능을 활용하는 문제인것같습니다. 문제파일중에 index.php와 upload.php를 보겠습니다. index.php먼저 보겠습니다. Online File Box Choose a file... No file uploaded 간단하게 파일을 업로드할 수 있는 form이 구현된 index.php입니다. submit 버튼을 누르게되면 upload.php를 실행하게되므로 upload.php를 봐보겠습니다.