전체 글 80

[Code Engn Challenge] Basic 19

프로그램을 실행시키고 언제 종료되는 지 찾아야하는 문제이다.아마도 sleep함수와 연관있지 않을까 생각해본다.   7-zip을 이용해 압축을 풀어주고, DIE로 확인해보았다.upx로 압축되어있어 풀어주었다. exe파일을 실행해보니 다음과 같이 출력되었다.   Immunity Debugger로 실행을 시켜보면 아까와는다른 문구가 출력되는 것을 확인할 수 있다. 여기서 뭔가 우회를 해야할 것 같다.  디버깅을 우회해주는 함수 IsDebuggerPresent를 찾았다.  여기서 JNZ를 JE로 어셈블시켜 바꾸고 파일을 저장한다.  저장한 파일을 실행시켜주면 아까와는 다르게알맞은 문구가 출력되는 것을 알 수 있다.   여기서 시간과 관련된 함수 timeGetTime을 찾아 브레이크를 걸어준다.  한 행씩 실행시..

카테고리 없음 2024.05.12

[Code Engn Challenge] Basic 18

이름이 CodeEngn일 때 시리얼을 구하는 문제이다.    7-zip을 이용해서 압축을 풀어주고 DIE로 확인해보았다.별다른 압축은 더이상 없었다. exe파일을 실행시켜 이름으로 CodeEngn, 시리얼로 1234를 입력했다.시리얼 번호가 틀렸다는 문구가 출력되었다. Immunity Debugger를 실행시켜 다음 문구를 찾아보겠다.  여기서 내가 입력한 시리얼 값이 나타나는 것을 확인할 수 있다.Sting1,2를 비교해서 값이 같아야만 성공 문구가 출력되는 형식이다. 그러니 시리얼 번호로 "06162370056B6AC0"를 입력주면 된다.  그러면 다음과 같이 성공 문구가 출력된다.

카테고리 없음 2024.05.12

[Code Engn Challenge] Basic 17

키 값이 BEDA-2F56-BC4F4368-8A71-870B일때이름을 찾는 문제이다. 여기서 이름은 "한 자리"이다.  7-zip으로 압축을 풀어준 뒤 DIE로 확인을 해보았다.더이상의 압축은 없었다. 키 값은 BEDA-2F56-BC4F4368-8A71-870B를 입력하고이름으로는 아무 값인 a를 입력했더니다음과 같이 출력되었다. Immunity Debugger로 다음 문구를 찾아볼 예정이다.  문구를 찾아 CMP와 JGE부분에 브레이크를 건다.CMP에서는 EAX와 3이 같아야 하는데EAX값으로 1이 나온다. 그렇다면 CMP를 1로 바꾼 뒤 어셈블을 시켜주고 파일을 저장한다.  45B850은 name값을 이용해서 시리얼번호를 만들기 때문에브레이크를 걸어 주었다. EDX에는  45B850에서 생성된 시리얼..

카테고리 없음 2024.05.12

[Code Engn Challenge] Basic 16

이름이 CodeEngn일 때 시리얼을 구하는 문제이다.앞서 풀어본 15번 문제와 동일하다.  7-zip으로 압축을 풀어준 뒤 DIE로 확인해보았다.더 이상의 다른 압축은 없었다. exe파일을 실행시켜 이름은 CodeEngn, 비밀번호는 1234로 입력해보았다."Wrong password !"가 출력되었다.  Immunity Debugger를 켜서 이 문구를 찾아보고성공 문구 또한 찾아볼 예정이다.  성공 문구인 "Good Job!"을 찾았다.아까와 같이 CMP에서 EAX와 EBP-3C의 값이 틀리면JNZ 값을 점프하게 되는 형식이다. 여기서 EBP-3C는 70feec이다.Hex창에서 이 주소로 이동해본다.  EAX는 8자리이기 때문에 여기서도 8자리인 E4 C6 0D 97만 읽는다.(리틀엔디안이라 거꾸로..

카테고리 없음 2024.05.12

[Code Engn Challenge] Basic 15

이름이 CodeEngn일 때 시리얼을 구하는 문제이다.제대로 된 이름과 시리얼을 입력하면 성공 문구가 뜰 것이라 예상한다.   7-zip으로 압축을 풀어주고, DIE로 다시 한번 확인한다.따로 압축을 풀 건 없었다. 압축을 풀어준 exe파일을 실행시키면 다음과 같은 화면이 뜬다.이름으로는 CodeEngn, 시리얼으로는 1234를 쳤다. 결과 값으로 'Try Again !'이 출력되었다.Immunity Debugger로 이동해서 이 문구가 출력되는 부분을 찾으면근처에 성공 문구 또한 있을 것이라 예상한다. 이 성공 문구를 찾을 예정이다.   예상대로 성공 문구를 찾을 수 있었다.이 함수가 시작되는 부분인 00458800에 break를 걸었다.   실행을 시킨 뒤 이름은 CodeEngn, 시리얼은 1234를..

카테고리 없음 2024.05.12

[Code Engn Challenge] Basic 14

이름을 codeengn으로 입력한 후 시리얼을 구해야하는 문제이다.   7zip으로 압축을 풀어준다.   DIE로 분석을 해 본 결과 UPX로 묶여있는 것을 알 수 있다.풀어줘야한다.  upx -d -o 14_unpacked.exe 14.exe로 upx를 풀어준다.  exe파일을 실행시킨 뒤 이름으로 CodeEngn을 넣어주었다.나머지 한 칸을 채우라는 창이 뜬다.  정답이라고 출력되는 부분을 찾아 브레이크를 걸었다.   이름으로 CodeEngn을 입력하고, 숫자로는 111을 입력했다.이후 실행을 시키면 정답이 뜨기 전에 cmp로 비교문이 나온다.여기서 eax와 esi를 비교하는데 esi를 확인하면 129A1이다. 이걸 10진수로 바꿔주면 76193이다.이 둘을 입력해주면 정답이라고 뜬다.

카테고리 없음 2024.04.07

[Code Engn Challenge] Basic 13

문제 자체에서 주는 힌트는 없다.우선 압축을 풀어봐야겠다.   7zip으로 압축을 풀어주었다.   압축을 푼 문제를 실행시켜 아무 숫자나 넣어보았다.여기서도 cmp로 비교하는 것이 있을 거라 예상.  DIE로 확인해본 결과 라이브러리가 .NET으로 되어있다..NET을 풀기위해 dnspy로 풀어주어야한다.  using System;// Token: 0x02000003 RID: 3public class RijndaelSimpleTest{ // Token: 0x06000004 RID: 4 RVA: 0x000021B4 File Offset: 0x000003B4 [STAThread] private static void Main(string[] args) { string text = ""; ..

카테고리 없음 2024.04.07

[Code Engn Challenge] Basic 12

첫 번째로 key 값을 구하고, messagebox가 출력되도록 하는영역을 찾아 입력을 하면 되는 문제이다.    문제를 다운 받은 뒤에 7zip으로 압축을 풀어준다.    혹시라도 더 압축이 되어있을까봐 DIE로 확인해보았다.더 이상 압축을 풀지 않아도 된다.  문제를 실행시켰을 때 뜨는 화면이다.아무 문자를 입력하고 check를 누르면 창이 뜨지 않는다.코드에 문자열을 비교하는 cmp가 따로 있을 것이라고 예상한다.   코드를 자세히 보기 위해 immunity debugger로 실행시켰다.   축하한다는 문자가 출력되기 직전cmp로 eax와 비교를 하는 부분이 있다.이 부분이 key 값이라고 예상한다. 7A2896BF는 16진수이기 때문에 10진수로 변환을 해준다.7A2896BF-> 204948038..

카테고리 없음 2024.04.07