목록공부/Reversing (6)
베지밀
2가 더 쉬움 Server-client 2 IDA로 서버 코드를 열어보자 23번째 줄에서 연결이 수립되고, sub_401140 함수로 연결된다. (i는 아마도 소켓일 것이다)해당 부분이 문제를 푸는 포인트인 것 같아서 진입해본다. sub_401140 함수아까 cmd창에서 본 문자열들이다.사용자로부터 번호를 receive하고 input에 저장한다. strncmp로 입력값을 비교해서 어떤 역할을 수행하는데, 7777이 보인다. input 입력값에서 세미콜론을 찾고, 해당 위치 포인터를 v2에 반환한다.그리고 ; 이후의 값부터 sub_401000함수로 넘겨준다. sub_401000 함수v2+1부터의 값은 Command라는 매개변수로 들어왔다.buf라는 버퍼를 7777~ 문자열로 붙여놓고, 이후는 0으로 초기화..
분석툴 - x32dbg / IDA 처음 fe를 실행시키면 바탕화면에 아이유들이 다 사라져있다. (새로운 파일로 덮어씌워졌다) main 함수 12번째 줄 함수 (get_desktop_path)해당 함수의 내용SHGetSpecialFolderPathA라는 API에 \x10를 인자로 주면 Desktop의 경로를 받아온다.SHGetSpecialFolderPathA : 윈도우의 특정 경로를 가져오는 함수참고 : https://2ry53.tistory.com/entry/CSIDL의-값과-그-사용-방법Desktop 경로를 잘 가져왔으면 1, 아니면 0 FileName = input(=Desktop 주소) + \\*.* 을 이어붙여서 버퍼에 쓰고바탕화면에서 확장자가 존재하는 모든 파일을 가져온 후문자열 끝에서 .을 찾..
분석툴 - IDA 현재 실행중인 파일 경로 Filename에 받아온다.Filename = C:\Users\anon\Desktop\kisia_samples\4_ida_training\ida_training\training1_hm.exemal_deu라는 경로는 filename에 없기 때문에 if문을 지나서 밖의 명령이 실행됨GetTempPathA : 임시폴더의 경로를 Buffer에 가져옴. Buffer = C:\Users\anon\AppData\Local\TempPathAppendA : Buffer의 경로에 ‘mal_edu’라는 값을 더한다. Buffer = C:\Users\anon\AppData\Local\Temp\mal_eduCreateDirectoryA : Buffer 문자열에 해당하는 경로..
분석 툴 : x32dbg 입력값을 더하는 시스템그러나 파일 이름에 맞게 random_number를 찾아야 한다. ebp-8, ebp-C : 우리가 입력한 값입력값이 401000의 인자로 들어간다. call을 해서 401000함수로 진입이때, 우리가 입력한 값이 ebp+8, ebp+C로 바뀌어있음⇒ 이전 함수의 ebp 값을 스택에 저장해서 401000의 새로운 스택 프레임을 만들었기 때문에!! add로 두 값을 더해서 return한다다음 함수로 진입하면 다음과 같은 화면을 볼 수 있는데,GetTickCount : cpu의 clock 타임을 가져온다 → 랜덤한 값을 가져올 때 많이 씀eax에 01BE9EA7가 있고, idiv ecx를 하면idiv를 통해 eax에 몫이, ecx에 나머지가 들어간다.하위 연산..
👾분석 환경 : Ollydbg 우선 crackme3 파일을 실행시켜보자이렇게 프로그램은 끝난다.Ollydbg 분석파일을 열자마자 CreateFileA라는 API 함수 호출이 보인다.CreateFile 함수의 인자를 확인해보자FileName = “abex.l2c”Access = GENERIC_READ (읽기 권한)ShareMode = 0 (다른 프로세스에 공유 불가)pSecurity = NULLMode = OPEN_EXISTING (파일이 존재할 때만 파일을 엶)Attributes = NORMALhTemplateFile = NULL GetFileSize로 파일의 크기도 확인함 → 리턴값 = 파일 사이즈hFile = NULL (파일 사이즈를 알기 위한 해당 파일에 대한 핸들. GENERIC_READ..
혼자 공부하는 글이라 설명이 불친절 할 수 있음. 인터넷 검색을 통해 해결했다 Ollydbg로 분석해보자 (추후 x32dbg로 분석해볼 예정) 32비트 파일이다. 지뢰찾기 바이너리에서 이용될 함수 추론해보기 - 지뢰 무작위 배치하는 함수 (srand로 구현) - 지뢰를 클릭했을 때 보여주는 함수 - 사용자 입력, 즉 클릭할 때 실행되는 함수 srand부분에 bp를 걸었다. srand부분에서 쭉 돌다보니 0x10036C7부터 0x1003703 부분을 반복한다. 1005334의 값은 9이다. 1005330의 값이 9부터 줄어들다가 1이 지나면 탈출한다. 1005334의 값(9)부터 0까지 하나씩 줄어드는 것 같다. 지뢰찾기 초급 게임의 지뢰 수는 10개이므로 다음과 같은 사실을 알 수 있다. 1005334 ..