본문 바로가기

전체 글55

KeyFile 체크 문제 풀이, 바이너리 수정 crackme 15 를 올리디버거로 열어본 뒤all reperenced text string 을 보면 solved 라는 문장과File Monitor 라는 눈에띄는 문장이 보인다. FileMonitor 를 실행시키면 다음과 같은 창을 볼 수 있는대project1.exe를 입력하면 문제에 관한 이벤트만 볼 수 있다. C:\Document and Settings\Adminstrator\바탕화면\keyfile\kernel32.dll 파일을 찾고있는대아무 텍스트파일을 이름을 바꿔서 같은 위치에 넣어두면 다음과 같은 결과를 얻을 수 있다. 이재 디버거로 가서 solved 스트링의 위치로 가보자. EDX에 solve 를 넣고 call 하는것을 볼 수 있다. 그럼 이 넣는 부분을 실행하기 위해서는 이 함수부분에 진입해.. 2015. 5. 19.
키젠문제 풀이 키젠 문제란 원본 문제파일은 수정하지 않은 상태에서 분석만을 통해서 키 값들을 계산하거나 조합하는 문제이다.시리얼 키 문자열이 그대로 메모리상에 있어서 풀리는 문제도 있지만 이번에는 Key를 생성해내도록 하는것이 목표이다키젠 문제를 풀기위해 어셈블리어를 꼼꼼하게 알아볼 필요가 있다. 먼저 함수를 선언할때, if문, for문이 어셈블리코드에서 어떤 형태를 보이는지 알아보자fuc(1, 2) 라고 함수를 선언하게 된다면 두번째 파라미터를 넣고 그다음 첫번째 파라미터값을 넣은 뒤 call을 하게된다.push 2push 1call 004017E0두번째 값부터 넣는 이유는 메모리구조가 스택 형식이기 때문이다.스택은 LIFO(Last In First Out)구조로 나중에 들어온 값이 먼저 나가기 때문이다. 일반적인 .. 2015. 5. 18.
Unpack, Back To User mode upx로 패킹되어 있는 것을 올리디버거 덤프 플러그인을 사용하여 풀어 볼 수 있다.먼저 tuts4you.com 으로 가서 OllyDump.dll을 찾아 다운받고올리디버거 폴더의 Plugin 에 넣는다. 이제 upx로 압축되어 있는 문제파일인 CrackMe2.exe를 올리디버거로 열어보면코드가 압축되어 있다는 것을 올리디버거가 알려주고 더 분석할 것인지를 묻는다. 예(Y) 를 눌러 진행한 뒤 스크롤을 조금 내리면DB 00 으로 채워져있는 부분 위를 보면압축이 모두 풀려 메모리에 올라가 있는 초기상태인 OEP부분으로 가는 JMP문이 보인다. 그부분에 BreakPoint를 정해주고 실행을 하면, 이 주소값에서 한번 정지상태가 된다.이때 StepOver(F8)로 진행해주면 OEP의 위치로 이동한다. PUSH E.. 2015. 5. 18.
어셈블리 명령어 어셈블리 명령어 INC : 피연산자에 1을 더한다 결과에 따라 ZF, OF가 세트될 수 있다. DEC : 피연산자에 1을 뺀다 결과에 따라 ZF, OF, CF가 세트될 수 있다. ADD : Destination 에 Source 값을 더해서 Destination에 저장하는 명령이다 ex) ADD destination , source 결과에 따라 ZF, OF, CF가 세트될 수 있다. SUB : Destination 에 Source의 값을 빼서 Destination에 저장하는 명령이다. ex) SUB destination, source 결과에 따라 ZF, OF, CF가 세트될 수 있다. MUL : 부호 없는 al, ax eax의 값을 피연사자와 곱한다. 피연산자가 8비트이면 al과 곱해서 ax에 저장되고 1.. 2015. 5. 15.