반응형




OEP와 분기점의 OPCODE를 구하라고 합니다.


이번 문제는 ASPack이라는 팩커로 팩킹되어 있습니다.



RET까지 가다보면 OEP를 찾을 수 있습니다.

그다음 분기점은 문자열 찾기로 찾을 수 있습니다.



'Reversing > CodeEngn Basic' 카테고리의 다른 글

CodeEngn basic 09  (0) 2015.11.20
CodeEngn basic 08  (0) 2015.11.13
CodeEngn basic 07  (0) 2015.11.13
CodeEngn basic 06  (0) 2015.11.13
CodeEngn basic 05  (0) 2015.11.13
반응형



파일은 일단 UPX로 팩킹되어있습니다.

언팩킹을 하게 될 경우 실행되지 않습니다.

이는 StolenByte와 연관이 있습니다.


StolenByte란 어떤 코드를 다른 곳에 옮겨 놓은것을 의미합니다.
우리는 언팩킹을 하고 난 뒤 실행이 안됬으므로 원래 OEP로 가는 도중에
StolenByte가 있을 확률이 높습니다.


보통 UPX는 popad를 한 뒤 바로 JMP를 하지만

여기에서는 몇 코드가 더 있습니다. 이것이 StolenByte입니다.

'Reversing > CodeEngn Basic' 카테고리의 다른 글

CodeEngn Basic 10  (0) 2015.11.25
CodeEngn basic 08  (0) 2015.11.13
CodeEngn basic 07  (0) 2015.11.13
CodeEngn basic 06  (0) 2015.11.13
CodeEngn basic 05  (0) 2015.11.13
반응형


UPX 팩킹되어 있습니다.

CodeEngn basic 6에 한 내용과 같습니다.





'Reversing > CodeEngn Basic' 카테고리의 다른 글

CodeEngn Basic 10  (0) 2015.11.25
CodeEngn basic 09  (0) 2015.11.20
CodeEngn basic 07  (0) 2015.11.13
CodeEngn basic 06  (0) 2015.11.13
CodeEngn basic 05  (0) 2015.11.13
반응형

바로 비밀번호 체크 루틴으로 들어왔습니다. 

BOOL WINAPI GetVolumeInformation(

_In_opt_ LPCTSTR lpRootPathName,

_Out_opt_ LPTSTR lpVolumeNameBuffer,

_In_ DWORD nVolumeNameSize,

_Out_opt_ LPDWORD lpVolumeSerialNumber,

_Out_opt_ LPDWORD lpMaximumComponentLength,

_Out_opt_ LPDWORD lpFileSystemFlags,

_Out_opt_ LPTSTR lpFileSystemNameBuffer,

_In_ DWORD nFileSystemNameSize

);

이중 0x040225C에 저장되는 VolumeNameBuffer는 

첫번째 볼륨의 이름이 저장됩니다.



위 루틴을 분석해보면


str = VolumName + 4562-ABEX

str앞 4글자 각각 2더함

Serial = L2C-5781 + str




'Reversing > CodeEngn Basic' 카테고리의 다른 글

CodeEngn basic 09  (0) 2015.11.20
CodeEngn basic 08  (0) 2015.11.13
CodeEngn basic 06  (0) 2015.11.13
CodeEngn basic 05  (0) 2015.11.13
CodeEngn basic 04  (0) 2015.11.13
반응형


UPX 팩킹 되어 있음을 알 수 있습니다.

이번에는 OEP를 알아야 함으로 툴을 사용할 수 없습니다.

UPX는 언펙킹을하고 마지막에 원래 OEP로 가는 JMP문이 있는 특징이 있습니다.


OEP는 0x0401360 입니다.


DialogBoxParam API는 다이얼 로그를 표시하는 함수입니다.

INT_PTR WINAPI DialogBoxParam(

_In_opt_ HINSTANCE hInstance,

_In_ LPCTSTR lpTemplateName,

_In_opt_ HWND hWndParent,

_In_opt_ DLGPROC lpDialogFunc,

_In_ LPARAM dwInitParam

);

이중 lpDialogFunc가 중요합니다.



여기가 lpDialogFunc 주소 위치입니다.


F9로 실행하고 값을 넣고 실행하면



키를 찾을 수 있습니다.


'Reversing > CodeEngn Basic' 카테고리의 다른 글

CodeEngn basic 08  (0) 2015.11.13
CodeEngn basic 07  (0) 2015.11.13
CodeEngn basic 05  (0) 2015.11.13
CodeEngn basic 04  (0) 2015.11.13
CodeEngn Basic 03  (0) 2015.11.13
반응형






UPX로 팩킹되어 있습니다.

UPX로 팩킹되어 있을경우 툴이나 디버깅으로 풀 수 있습니다.

저는 툴을 사용했습니다.



언팩킹한 파일로 열어서 문자열을 찾아보면0




'Reversing > CodeEngn Basic' 카테고리의 다른 글

CodeEngn basic 07  (0) 2015.11.13
CodeEngn basic 06  (0) 2015.11.13
CodeEngn basic 04  (0) 2015.11.13
CodeEngn Basic 03  (0) 2015.11.13
CodeEngn Basic 02  (0) 2015.11.13
반응형

첫 안티디버깅 문제입니다.

분석을 해 보면


IsDebuggerPresent 라는 API가 있습니다.

이름에서 알 수 있듯이 이 함수는 프로그램이 디버깅 중인지

확인해서 디버깅 중이라면 1을 반환하는 함수입니다.


'Reversing > CodeEngn Basic' 카테고리의 다른 글

CodeEngn basic 06  (0) 2015.11.13
CodeEngn basic 05  (0) 2015.11.13
CodeEngn Basic 03  (0) 2015.11.13
CodeEngn Basic 02  (0) 2015.11.13
CodeEngn Basic 01  (0) 2015.11.13
반응형

비주얼 베이직은 .NET프레임워크로 작동하는 것이기 때문에

어떤 동작을 하려면 특정 함수를 호출합니다.

또한 비주얼 베이직은 String 찾기로 찾을수 없으니 

특정 함수로 찾아야 합니다.





'Reversing > CodeEngn Basic' 카테고리의 다른 글

CodeEngn basic 06  (0) 2015.11.13
CodeEngn basic 05  (0) 2015.11.13
CodeEngn basic 04  (0) 2015.11.13
CodeEngn Basic 02  (0) 2015.11.13
CodeEngn Basic 01  (0) 2015.11.13
반응형

실행파일은 실행되지 않습니다. 

그 이유는 PE 헤더가 손상되어 있기 때문인데

아직 시도해보지 않았으나 PE헤더를 복구 시킬수도 있을것 같습니다.

하지만 저는 보통 실행파일에 문자열은 Data 섹션에 밀집해 있다는 것을 이용하였습니다.





'Reversing > CodeEngn Basic' 카테고리의 다른 글

CodeEngn basic 06  (0) 2015.11.13
CodeEngn basic 05  (0) 2015.11.13
CodeEngn basic 04  (0) 2015.11.13
CodeEngn Basic 03  (0) 2015.11.13
CodeEngn Basic 01  (0) 2015.11.13
반응형

GetDriveTypeA API에 대해 공부할 수 있는 문제입니다.


디버거를 시작하자마자 이 화면이 뜰 것입니다. 

MSDN에서 GetDriveTypeA를 검색해 보면

GetDriveTypeA라는 API는 파라미터로 루트 디렉터리를 입력받고

드라이버의 타입에 따라 값을 반환합니다.

이걸 통해 답을 알 수 있습니다.

이때 하드디스크를 CD-ROM으로 인식시킬려면

리턴값을 바꾸거나 JE부분을 패치 시키면 됩니다.



'Reversing > CodeEngn Basic' 카테고리의 다른 글

CodeEngn basic 06  (0) 2015.11.13
CodeEngn basic 05  (0) 2015.11.13
CodeEngn basic 04  (0) 2015.11.13
CodeEngn Basic 03  (0) 2015.11.13
CodeEngn Basic 02  (0) 2015.11.13

+ Recent posts