목록Reversing/CodeEngn (32)
Information Security Study

문제: Name이 CodeEngn일때 Serial을 구하시오 15번 문제 파일을 실행했을 때의 모습이다. Name에 CodeEngn을 입력하고 Serial 값으로 임의의 값을 넣어 Check it!을 눌러보았다. Immunity Debugger로 문제 파일을 열어보았다. 아까 Serial 값에 1234를 넣어 확인한 "Try Again !" 문자열을 찾아 그 위에 있는 CMP문에 BP를 걸어 실행했다. EAX와 어떤 값을 비교하는 것 같다. Serial 값을 1로 입력했다. EAX에는 Serial 값으로 입력했던 1이 들어가있었다. BP를 걸었던 CMP문에 Follow in Dump > Memory address 를 눌러봤다. dword ptr은 4바이트만 비교한다. CMP문에 있는 48B844 주소에 ..

문제: 정답은 무엇인가 문제 파일을 실행해 아무 값을 입력하니 "Bad Luck! Try again!" 문자열을 볼 수 있었다. PEiD로 C#으로 만들어진 프로그램인 것을 알 수 있었다. dotPeek 툴로 파일을 열어보았다. 내부의 암호화 된 Text를 프로그램 실행 시 복호화한 후 그 복호화 된 plainText와 입력받은 값을 비교하는 형태였다. Visual Studio로 열어 C# 파일을 정답을 출력할 수 있도록 수정했다. 수정 후 실행하니 정답이 출력되었다.

문제: Name이 CodeEngn 일때 Serial을 구하시오 (이 문제는 정답이 여러개 나올 수 있는 문제이며 5개의 숫자로 되어있는 정답을 찾아야함, bruteforce 필요) Ex) 11111 문제 파일을 실행해봤다. 아무 값이나 입력 후 check를 눌렀다. Immunity Debugger로 파일을 열어보니 패킹되어있음을 알 수 있었다. PEiD로 UPX로 패킹되었음을 알 수 있었다. CFF로 언패킹했다. 언패킹 후 다시 디버거로 열었다. 성공구문 위에 EAX와 ESI를 비교하는 CMP문을 찾았다. BP를 걸고 실행해봤다. Name에 CodeEngn, Serial에 123456을 입력했다. 내가 입력한 Serial 값이 EAX에 들어가는 것 같았다. 이 값이 ESI와 같으면 성공 구문이 뜨는 것이..

문제: Key를 구한 후 입력하게 되면 성공메시지를 볼 수 있다 이때 성공메시지 대신 Key 값이 MessageBox에 출력 되도록 하려면 파일을 HexEdit로 오픈 한 다음 0x???? ~ 0x???? 영역에 Key 값을 overwrite 하면 된다. 문제 : Key값과 + 주소영역을 찾으시오 Ex) 7777777???????? 파일을 실행했을 때의 모습이다. Immunity Debugger로 열어보았다. 성공 구문을 찾아 분기점을 찾았다. EAX와 7A2896BF를 비교하는 구문이다. 분기점에 BP를 걸고 실행했다. 123을 넣어보았다. EAX에 Key값으로 입력한 123이 들어간 것을 확인했다. 7A2896BF가 Key값인 것을 알 수 있었다. 7A2896BF를 10진수로 바꾸면 204948038..

문제: OEP를 찾으시오. Ex) 00401000 / Stolenbyte 를 찾으시오. Ex) FF35CA204000E84D000000 정답인증은 OEP+ Stolenbyte Ex ) 00401000FF35CA204000E84D000000 문제 파일을 실행해 보았다. PEiD에 올려보니 UPX로 패킹되어있음을 알 수 있었다. CFF Explorer로 언패킹했다. StolenByte - 안티디버깅 기법 중 하나이다 - OEP 주소의 코드를 따로 분리해서 OEP로 점프하기 직전에 push로 넘겨준다 - OEP의 옵코드 일부가 JMP 직전에 있어서 OEP로 코드 조각이 오지 못했고, 이 경우 StolenByte라는 옵코드를 찾아 실행코드 부분에 복원해준 다음 언팩을 해주어야 정상 실행이 가능하다 StolenB..

문제: 컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 'ß어떤것'으로 변경되는가 해당 문제 파일을 실행했을 때의 모습이다. 아무 값이나 입력하니 에러창을 볼 수 있었다. 문제를 보고 C드라이브 이름에서 Serial을 만드는 것이라 추측되어 C드라이브 이름을 CodeEngn으로 변경해 보았다. Immunity Debugger로 열어보았다. 성공 구문이 보여 들어가보았다. 별다른 값은 찾을 수 없었다. 우선 실행해서 Serial값에 3355를 입력해 보았다. 값을 입력하니 없었던 문자열이 생겼다. 이 문자열이 Serial이라고 추측했다. serial값을 보니 CodeEngn -> EqfgEngn4562-ABEX -> L2C-5781EqfgEngn4562-ABEX 로 ..

문제: Unpack을 한 후 Serial을 찾으시오. 정답인증은 OEP + Serial Ex) 00400000PASSWORD 문제파일 실행 화면이다. 우선 아무 값이나 입력해보니 에러 창이 뜬다. PEiD로 보니 UPX로 패킹되었음을 알 수 있었다. CFF Explorer로 Unpack 해준 뒤 Immunity Debugger로 열어주었다. Unpack이 잘 되었다. 시작 위치가 00401360이므로 OEP는 00401360이다. Search for > All referenced text strings에서 성공 구문을 찾았다. 성공 구문 위를 보니 Serial로 추정되는 값을 볼 수 있었다. BP를 걸고 실행해보았다. 무작위로 값을 입력했다. abcdef와 AD46DFS547을 비교하는 것 같다. 따라서..

문제: 이 프로그램의 등록키는 무엇인가 문제 파일을 실행해보니 User name과 등록키를 입력하는 창이 나타났다. 우선 Register now!를 눌러보니 등록키가 맞지 않는다는 오류 창을 볼 수 있었다. Immunity Debugger로 열어보니 파일이 패킹되어있었다. PUSHAD는 패킹 되었다는 의미이다. PEiD 프로그램으로 UPX로 패킹된 것을 볼 수 있었다. CFF Explorer로 파일을 언패킹해주었다. 언패킹 된 파일을 다시 Immunity Debugger로 열어보니 PUSHAD에서 PUSH로 바뀌어 언패킹이 되었음을 볼 수 있었다. 한줄씩 실행하다보니 User name과 등록키를 볼 수 있었다. 성공! 이외에도 Search for > All referenced string에서 등록키를 구..