ABOUT ME

Today
Yesterday
Total
  • Basic RCE L10
    리버싱/리버싱스러운것 2023. 6. 6. 16:21

     

    오늘의 문제 패킹된 프로그램의 OEP와 등록성공 분기점의 OPCODE를 구하라를 구하라

     

     

     

     

    실행시켜서 아무거나 눌러봣는데 입력이 안된다 뭔가싶어서 검색해봤는데 원래 이런거랍디다

     

     

     

    뭘로 패킹되어있나 봤더니 Aspack으로 패킹되었다함, 뭔진 나도 모름 궁금하면 검색해보시던가

     

     

     

     

    그럼 이제 바로 디버거로 열어본다, 패킹종류가 달라도 대부분은 PUSHAD POPAD -> 어딘가에 원래코드 압축해제

    -> 그거 실행  이 순서대로 진행된다. 이것도 다르지 않음

     

     

     

    그냥 F8 F9좀 누르다 보니 이런 메시지박스를 얻게됬다. 

     

    대충 코드를 하나하나 실행하가면서 했는데 이렇게 뻘짓거리하다간 끝도없다. 

     

    그렇다면 우리는 똑똑한 방법으로 수동언패킹을 진행해야한다. 저번 시간에 배운 방법을 생각해보자

     

     

     

    POPAD를 검색해서 찾아보는 방법을 써봤는데 너무 오래걸려서 하드웨어 BP를 거는 방법을 사용했다

     

    방법은 저번이랑 똑같다 PUSHAD가 실행된 이후 ESP의 DUMP창을 따라간다 

     

     

     

    그리고 그 곳에 하드웨어 BP를 걸어준다 그 뒤 F9을 눌러 실행하면

     

     

     

     

    짠 POPAD바로 밑으로 텔포된다 밑에는 OEP로 가는 명령문들이있다

     

     

     

    원래 코드로 온 모습, 맨 첫줄이 00445834니까 OEP가 이것임을 알 수 있다. 

     

    그럼 이제 등록성공 문자가 뜨는 분기점을 찾아야한다

     

     

    변형된 코드는 컨트롤 A 로 다시 바꿔서 볼 수 있다. 문제는 이렇게 봐도 뭔 소린지 하나도 모르겟다

     

    고로 한줄한줄 실행해본다

     

     

    한줄한줄 실행했더니 이 밑으로는 예외뭐시기가 뜨면서 프로그램이 멈춘다. 그냥 눈으로 읽어서 풀어야한다

     

    밑에 아까 본 5글자 이상 문자열이 보인다. 위에 5와 비교하는 명령문이 있는걸 보니 입력값이 5이상인지 검사하는거갑다

     

     

     

    그 밑에는 등록성공 문자열이 보인다 이 곳으로 오는 분기점을 찾으면 되는데

     

     

    가장 가까운 점프문을 찾았는데 이게 맞는건가 싶어서 검색해봤는데 이게 맞답디다.

     

    참고로 OPCODE는 저기 동그라미친 부분에 있는 숫자들을 뜻합니다

     

    정확한 정의는 위키에서 찾아보십쇼

    https://ko.wikipedia.org/wiki/%EB%AA%85%EB%A0%B9_%EC%BD%94%EB%93%9C

     

    명령 코드 - 위키백과, 우리 모두의 백과사전

    위키백과, 우리 모두의 백과사전. 컴퓨터 과학에서 명령 코드(opcode←operation code, instruction syllable, instruction parcel, opstring[1][2][3][4][5][6][7])는 기계어의 일부이며 수행할 명령어를 나타내는 부호를

    ko.wikipedia.org

     

    '리버싱 > 리버싱스러운것' 카테고리의 다른 글

    함수호출규약  (0) 2023.06.18
    Basic RCE L14, KeyCrackmMe - #2  (0) 2023.06.09
    Notepad_upx.exe 분석  (1) 2023.06.01
    실행압축 - 194p  (0) 2023.05.30
    Abex Crack me #3  (0) 2023.05.11
Designed by Tistory.