리버싱

드림핵 - Patch

ReIzEi 2023. 5. 6. 01:20

 

대충 실행하면 이런 화면을 보여줍니다 플래그를 마스킹 해놓은상황

 

 

바로 메인함수로 가서 코드를 구경.

 

일단 있는 함수 1400032F0을 눌러본다

 

 

그래픽과 관련된 뭐시기들이 있다

 

 

 

 

 

함수안의 또 하나의 함수 7FF6735F2C40을 눌러본다

 

 

매우매우 수상한 함수 더미들 발견 

 

윗쪽에 도배되어있는 7FF6735F2B80을 눌러본다

 

 

Createpen과 DrawLine으로 좌표?와 길이 두께 같은걸 입력하면 선을 그려주는...

 

뭐 비슷한거 보신 분들은 뭔지 아실듯 아마 그런 함수인듯함

 

물론 이것들만 보면 저게 정확히 뭘하는지 모릅니다

 

 

 

 

그래서 우리는 알기 쉽고 보기 쉬운 동적분석을 합니다

 

맨위 부터 한개씩 실행하면서 경과를 관찰

 

한줄한줄 실행할때마다 선하나찍

 

요까지 7FF6735F2B80 함수들 다 실행하면 검은색 네모(플래그를 가린거)이 딱 완성됩니다

 

 

 

그리고 저기서 한단계 다음에 있는 함수들을 실행하면

 

플래그값들이 그려지기시작.

 

즉 우리가 할일은 위의 플래그값을 가린 검은 네모를 그리는함수를 그리는 부분을 수정하는 것

 

당장 생각나는 방법은 위 함수자체가 실행되지않게 하는 것이다

 

 

140002B80 함수의 내부. 솔직히 어셈블리어는 나에게 전혀 익숙하지않기에

 

이것이 선을 그리는 함수인 것만 이해했다

 

 

Patch -> Assemble 메뉴로 가면 함수 내용을 수정할 수 있는데 맨 첫번째줄에 ret을 넣는다

 

그러면 140002B80함수가 실행되자마자 리턴되니 밑에들 있는 선을 그리는 함수가

 

실행되지않는다

 

그리고 변경점들을 적용한 뒤 실행한 모습, 플래그값만 딱나온다