> Information Security/Reverse Engineering
-
lena 05강> Information Security/Reverse Engineering 2012. 3. 31. 21:12
lena 강의 05 @zrungee 이번에 뜯어볼 파일이다. 프로그램이 어떻게 생겼나 보기 위해서 OllyDbg로 파일을 열어주고 실행시켜보자. 파일을 여는데의 회수는 10번으로 제한되어있다. 이 창이 뜨지 않도록 패치해주면 될 것 같다. 저 붉은 표시 안쪽에 있는게 Start 버튼이라고 한다.....(잘 보이지 않아서 체크해둠) 왼쪽은 Buy 란다 어쨌든, Start 버튼을 눌러 프로그램을 시작한다. 이러한 창이 뜨고, 이 프로그램을 종료시켜주면 이와 같이, 구매를 권유하는 팝업창이 뜬다. 이 팝업창도 뜨지 않도록 패치해주면 되겠다. 이제 OllyDbg로 돌아와서 첫번째로 나타났던 Trial Version의 창이 뜰때까지 차례차례 하나씩 F8로 실행시켜보겠다. 실행시키다가, 갑자기 반복문으로 인해 나갈..
-
lena 04강> Information Security/Reverse Engineering 2012. 3. 31. 11:31
lena 강의 04 @zrungee 이번에 뜯어볼 파일은 PixtopiaBook이라는 프로그램. OllyDbg로 열어서 실행하니 프로그램을 설치하라는 말이 나온다. 쭉~ 설치해주도록 한다 PixtopianBook의 정체가 나타났다. Unregistered 버전이니 registered버전으로 변경시켜주는 것이 목적인 듯 하다. 패치해주어야할 부분 첫번째 두번째 3번째 Add 가 최대 4명까지밖에 되지 않는다. (Unregistered version이라서) 4번째. 그룹추가가 3그룹까지만 가능하다. 마지막 5번째. Help>About 에 나타난 Unregisterd version. 여기에서 3번째와 4번째(인원 추가와 그룹 추가) 기능은 BackToUser모드를 이용해서 수정이 가능하다. 먼저 그룹추가 기능..
-
lena 03강> Information Security/Reverse Engineering 2012. 3. 25. 20:41
@zrungee 이번 강의는 PE구조의 이해를 통해 nag문제를 해결하는 과정이다. OllyDbg로 파일을 열어, 실행시켰다. 이렇게 총 3개의 창이 뜬다. 프로그램이 시작되기 전에 nag창이 떴고, 확인창을 누르니 메인 폼이 뜬다. 종료를 누르니 또다시 nag 창이 뜬다. 따라서, 처리해야할 부분은 실행할 때 1번과 종료할때 1번이다. 다시 OllyDbg로 돌아와서, F8로 Step Over해보겠다. GetModuleHandelA 함수로 얻어진 값을 비교한 후, EAX값과 0이 일치할 경우, Register.00401052 로 넘어가게 되는 구조. EAX값은 00400000이고, 0이 아니기 때문에 MessageBoxA가 발생한다. 이 부분을 PE구조의 EP주소를 수정하여 MessageBox가 실행되지..
-
lena 02강> Information Security/Reverse Engineering 2012. 3. 25. 01:27
lena 2번강의는 lena 강의 01과 같은 파일을 CPU레지스터와 어셈블리언어, 진수변환을 이용하여 패치하는 방식이다. 마찬가지로 OllyDbg를 이용하여 열어본당 CreatFileA는 새로운 파일을 생성한다는 의미의 API함수. 파일이름은 "Keyfile.dat"이다. 이 파일이 우리가 원하는 라이센스를 취득할 수 있도록 해주는 키 파일이 되는것으로 보인다. notepad를 이용하여 "Keyfile.dat" 을 생성해 본다. ReadFile은 파일을 읽어오는 API함수. F8을 눌러 진행한다. TEST : 두 피연산자 사이에 논리적인 AND연산을 수행하여 플래그 레지스터에 영향을 주지만 결과값은 저장하지 않는다. OF와 CF는 항상 0으로 세트되고 TEST 연산 결과값이 0이면 ZF가 1로, 0이 ..
-
lena 01강> Information Security/Reverse Engineering 2012. 3. 24. 03:29
lena (01) @zrungee OllyDbg를 이용하여 reverseMe파일을 뜯어보았다. 실행시켜보니 다음과 같은 창이 떴다. 평가기간이 지났으므로 새 라이선스를 취득하라는 창이다. 전체적으로 OllyDbg가 분석한 부분을 보니, 아까 실행시켰을 때 떴었던 문장이 보인다. 파일을 실행시켰을 때, 아무래도 API함수인 MessageBoxA라는 함수에 의해 이 문장이 실행될 수 있도록 되어있는 것으로 보인다. 다음으로, 맨 윗줄부터 F8을 눌러 한 줄씩 실행시켜보았다. 아까 보았던 문장이 있는 근처에서 JNZ명령어를 발견했다. zero플래그가 0일 때, ‘0040409A’로 Jump하는 조건이다. # JNZ : Zero 플래그가 0일 때 Jump 이 때, 창의 오른쪽에 해당하는 레지스터와 플래그 창을 ..
-
upx(실행파일압축) 가 packing 하는 원리> Information Security/Reverse Engineering 2010. 11. 17. 21:56
upx로 packing을 하는 것은 upx -d 옵션으로 압축을 푸는 방법과, Ollydbg의 Dump PlugIn을 이용하여 푸는 방법이 있음. 압축 압축풀기 기존의 소스코드 ------------> 새로만든 upx섹션 -------------> 메모리에 올림 저장 실행 이러한 원리로 압축이 다 풀려서 OEP(Original Entry Point)로 가게되는데, 이 부분에서 메모리상의 프로그램을 dump받음. OllyDump를 이용하여 (OllyDump는 매뉴얼언패킹을 간단히 할 수 있음.) 에서 Rebuild Import ↑를 체크하여 IAT(Import Address Table) 정보를 정확하게 해줌