-
CodeEngn(basic) crackme7 풀이Reversing/CodeEngn(Basic) crackme 2019. 3. 31. 23:17
이제 이거 하고 집가야지 히히
일단 처음 화면.. 어디서 봤다 했더니 여기에서 봤죠? abex 크랙미네요ㅋㅋㅋ 뭔가 반갑다
차이라면, GetVolumeInformationA 함수가 따로 추가되었다는 게 되겠네요.
또 그 위에 GetDlgItemTextA 함수가 있는 것으로 보아 입력값에 정해진 시리얼값이 포함됐는지 검색할 것 같습니다.
아, 저 GetVolumeInformation 함수를 살펴볼게요
파일 시스템(볼륨)의 정보를 가져오는 역할을 합니다. 코드엔진의 문제가 C 드라이브 어쩌고 했으니 이 문제에 적합한 함수 같네요. 그럼 일단 C 드라이브의 이름을 CodeEngn으로 바꾸고 가겠습니다.
아래는 전과 같은 성공/실패 창이구요
그렇다면 드라이브 정보를 가져오는 함수에서 BP를 걸고 그때까지의 시리얼값 변화를 관찰하겠습니다.
BP까지 실행한 뒤에 좀 더 실행시켜본 결과, 지금 4010AF 에서 4010CD 까지의 반복문이 이번 문제의 열쇠가 될 것 같습니다.
지금 저 반복문은 40225C, D, E, F 에 저장된 문자들을 하나하나 1씩 더하고 있는데, 이는 각 주소에 저장된 문자의 아스키코드 + 1 의 역할을 합니다.
그런데 4010CD 에서 다시 위로 올라가니까, +2가 되는 거죠?
이렇게 되면 아스키코드표에서 C의 아스키코드 + 2, o의 아스키코드 + 2... 하는 방식으로 또다른 문자열을 만드는 건데요, 그렇게 만들어진 문자열은 앞뒤에 다른 지정된 문자열을 붙인 채로 저장됩니다. 말로 하니까 존나 어렵네요.
제가 말한 앞뒤에 다른 지정된 문자열을 붙인 채로 저장된 문자열입니다. 하하 0개국어인가요
저 값 복붙하면 성공화면 나옵니다.
문제의 답은 그냥 (아스키코드 +2된 문자열) + Engn 이겠네요 그럼.
여기서 저 시리얼값 그대로 복붙하면 안됩니다.
히히 집간당
2019.3.31
'Reversing > CodeEngn(Basic) crackme' 카테고리의 다른 글
CodeEngn(Basic) crackme9 풀이 (0) 2019.04.08 CodeEngn(basic) crackme8 풀이 (0) 2019.04.01 CodeEngn(basic) crackme6 풀이 (0) 2019.03.31 CodeEngn(basic) crackme5 풀이 (1) 2019.03.31 CodeEngn(basic) crackme4 풀이 (0) 2019.03.31