Reverse Engineering(12)
-
checkflag 풀이 (PW = FLAG)
보호되어 있는 글입니다.
2024.11.12 -
Permpkin 풀이 (PW = FLAG 앞 11글자)
보호되어 있는 글입니다.
2024.08.10 -
Enc-JPG 풀이 (PW = FLAG 앞 10글자)
보호되어 있는 글입니다.
2024.07.02 -
patch 풀이
exe 파일을 실행해보니 DH{~~~~~~}이라고 쓰여있는 이미지 파일이 화면에 떴습니다. 중괄호 안에 들어있는 문자열이 FLAG 같은데 위에 검은색으로 칠해져 있습니다. 프로그램에서 검은 선을 칠해주는 부분을 지우면 FLAG가 보일 것 같습니다. 코드를 봤을 때 생소한 이름의 함수가 많이 보였습니다. 구글링을 해보니 모두 WinAPI에서 쓰이는 함수였습니다. 저 코드를 하나하나 분석하기엔 시간낭비를 너무 많이 할 것 같으니 전체적인 흐름부터 파악해보겠습니다. 위 사진에 있는 함수들을 가볍게 훑어봤는데, 이상한 함수를 하나 발견했습니다. sub_140002B80() 함수를 아주 많이 호출하고 있습니다. sub_140002B80() 함수를 확인해보겠습니다. 아무래도 이 함수가 검은색 선을 그리는 함수인 것..
2022.05.30 -
rev-basic-7 풀이
이번 문제는 주어진 배열의 길이도 짧고 다 좋은데, __ROL1__이라는 것이 코드에 있습니다. 아무래도 맥락상 알고리즘이나 암호화 같은데.... 구글링을 한 번 해보겠습니다. https://namu.wiki/w/LEA [LEA - 나무 위키] 한 줄 요약 -> ROL은 왼쪽 방향 쉬프트 연산이다 [if문 조건식] i^__ROL1__(flag[i], i&7) != arr[i] ROL이 무엇인지도 알았으니 이제 역연산 코드를 짤 수 있을 것 같습니다. 이번에도 브루트 포스 방식으로 if문 조건식을 구현하면 될 듯합니다. #include #include using namespace std; int w; int arr[32]={0x52,0xDF,0xB3,0x60,0xF1,0x8B,0x1C,0xB5,0x57,0..
2021.11.10 -
rev-basic-6 풀이
sub_140001000()에 있는 조건식을 보기 편하게 정리해서 써보겠습니다. byte_140003000을 arr, byte_140003020을 brr, 사용자가 입력한 배열을 flag라고 정의하겠습니다. [if문 조건식] brr[flag[i]]!=arr[i] 저 if문을 다 통과하면 Correct가 출력되므로, 저 조건식을 피해 가는 경우를 계산하면 되겠습니다. brr의 인자 수가 너무 많으니 브루트포싱으로 돌려가며 푸는 게 좋을 듯합니다. (+ 변수 하나를 생성해서 인덱스를 세어주도록 하면 될 것 같기도....) #include #include using namespace std; int arr[]={0x00, 0x4D, 0x51, 0x50, 0xEF, 0xFB, 0xC3, 0xCF, 0x92, 0..
2021.11.03