리버싱/리버싱스러운것
-
리버싱 예제) CodeEngn Basic L16리버싱/리버싱스러운것 2024. 12. 26. 13:41
코드엔진 basic 16번을 풀어보도록 하겠다. Name과 Password를 입력하고 맞는지 체크하는 흔한 유형이다 보통 이런류는 입력한 Name에 따라 시리얼 값이 달라지는 경우가 대부분이다(사실 100%임) Name 값이 CodeEngn 일때의 Password 값을 구해야 하는데... 일단 정적 분석 도구인 기드라를 통해 한번 열어봤다 처음 로딩하면 메인함수로 갖다 주는데 뭐가 엄청많다. 아까 틀린 패스워드를 입력하면 Wrong Password 문구가 출력되던데 그 부분이 어딘지 찾는다. 핵심 분기는 저기다, local_44와 local_40의 값이 같은지의 여부에 따라 분기가 나뉘는데 한번 x32dbg로 돌려봄 아까본 Wrong password 문구가 출력되는 부분으로 ㄱㄱ 그 위로 가보면..
-
Basic RCE L14, KeyCrackmMe - #2리버싱/리버싱스러운것 2023. 6. 9. 03:54
뭔 잡놈이 반겨준다 입력값을 입력하면 시리얼 밑의 시리얼 값과 대조하는 그런 문제다 본 문제는 upx로 패킹되어있는데 패킹안하고 푸는 방법이 있을 것 같지만 OEP로 날아가서 봐도 원본에 쓰인 문자열들이 죄다 박살나있기 때문에 도저히 내 지식으로는 풀 수 없다 판단, 언패킹후 풀이하였다 문자열 모음을 보면 대조결과에 따라 다른 메세지들을 출력할때 쓰는 문자열들이 보인다 성공시 출력되는 메시지로 가본다 거기서 위로 좀 올리면 시리얼제조공장이 보인다. 소문자 a를 입력했을때의 생성과정인데 정확히 알려드리자면 abc를 입력했을 때 처음에 한 글자 a(61)을 불러오고 61x61 = 24C1 그 값을 ESI에 넣어주고 61 >> 1 = 30 을 EBX에 ADD ESI EBX = 24C1+30 = 24F1 거기서..
-
Basic RCE L10리버싱/리버싱스러운것 2023. 6. 6. 16:21
오늘의 문제 패킹된 프로그램의 OEP와 등록성공 분기점의 OPCODE를 구하라를 구하라 실행시켜서 아무거나 눌러봣는데 입력이 안된다 뭔가싶어서 검색해봤는데 원래 이런거랍디다 뭘로 패킹되어있나 봤더니 Aspack으로 패킹되었다함, 뭔진 나도 모름 궁금하면 검색해보시던가 그럼 이제 바로 디버거로 열어본다, 패킹종류가 달라도 대부분은 PUSHAD POPAD -> 어딘가에 원래코드 압축해제 -> 그거 실행 이 순서대로 진행된다. 이것도 다르지 않음 그냥 F8 F9좀 누르다 보니 이런 메시지박스를 얻게됬다. 대충 코드를 하나하나 실행하가면서 했는데 이렇게 뻘짓거리하다간 끝도없다. 그렇다면 우리는 똑똑한 방법으로 수동언패킹을 진행해야한다. 저번 시간에 배운 방법을 생각해보자 POPAD를 검색해서 찾아보는 방법을 써..
-
Notepad_upx.exe 분석리버싱/리버싱스러운것 2023. 6. 1. 17:34
원본 notepad.exe의 코드, 이것이 우리가 찾아야하는 OEP(오리지널 엔트리 포인트) 이다. upx로 패킹된 파일은 실행하면 내부에 압축되어있는 코드를 해제한 뒤에 원래 코드를 실행 시킨다 했다 고로 우리가 찾아야되는게 위에 코드. 패킹된 파일을 키면 이렇게 불라불라한다 ok를 누른다. 음~ 이게 뭔 소리들이야 책에써있는대로 첫줄부터 읽으면, PUSHAD = 레지스터의 값들을 스택에 저장하는 명령어 그밑에 mov, lea ESI와 EDI 레지스터를 각각 두 번째 섹션 시작 주소(01011000)와 첫 번째 섹션 시작주소(01001000)로 세팅 근데 여기서 든 생각 첫 번째와 두 번째 섹션 시작주소를 어떻게 알아야하나? PEVIEW를 켜보면 알 수 있다 notepad_upx의 Image Base가..
-
실행압축 - 194p리버싱/리버싱스러운것 2023. 5. 30. 17:29
실행 파일을 대상으로 파일 내부에 압축해제 코드를 가지고있다가 실행되는 순간에 메모리에서 압축을 해제 시킨후 실행시키는것 우리가 일반적으로 알고있는 압축이랑 다른점은 압축파일 실행 가능하다는것, 흔히 패킹이라 부르는듯 그리고 패킹을 해주는 프로그램은 패커 하는이유 : 당연히 리버싱 못하게할려고 그럼 이제 실제로 패킹을 해봅시다, 패커는 upx를 사용(이유: 공짜고 유명함) upx는 리버싱 공부한 분들 질리도록 보셧을듯 설치하고 작업폴더로 간뒤 upx 명령을 실행해주면 설명서쫙나옴 메모장(notepad.exe)를 한번 패킹해봄, 저렇게 upx -o 이름할거 패킹할파일명 이런식으로 쳐줌 하면 뙇 Packed 1 file 압축이니까 당연히 용량이 줄어듬, 하지만 우리가 알고있는 zip 파일 처럼 용량이 확줄진..
-
Abex Crack me #3리버싱/리버싱스러운것 2023. 5. 11. 21:54
OK NO 코드가 상당히 짧은게 좋은점 딱 키고나서 처음에 file notfound 라고 떳으니까 저기있는 abex.l2c가 있어야된 다는걸 느꼈다 고로 만든다 응 꺼져 CMP 가 보인다, 직전에 부른 함수의 리턴값과 12를 비교해서 같으면 넘어가고 아니면 위의 오류문을 띄운다 함수 이름이 GetFileSize인게 매우매우 직관적이다 12바이트로 만들어준 뒤 실행했는데 안된다 도대체 왜일까 알고보니 저 12가 그냥 12가아니라 hex로 12 = decimal 18 난 왜 이런걸 햇갈렷을까 ㅜㅜ 딱맞는 12가 된 모습이야 짱
-
Tut.ReverseMe1 분석리버싱/리버싱스러운것 2023. 5. 11. 18:42
처음 키면 나오는 메시지창 확인을 누르면 reg코드를 입력하는 창이있고 register now 라는 버튼과 Nag 버튼을 누르면 나오는 메시지창 난 저게 뭔소린지 몰랐는데 맞는 reg코드와 지금 보이는 Nag Screen 창이 나오지 않게 하라는 것이었다 호출된 함수 목록에서 MSVB 메시지박스 스러운 함수가 4개가 있는데 그 중 하나가 저 Nag Screen 박스를 띄우는 것 이었다 즉, 맨 처음 프로그램 실행시 나오는 Nag screen 과 Nag 버튼을 누르면 나오는 메시지박스는 같은 함수를 쓴 것 Nag 창을 띄우는 부분이 저기부터 시작인데 점프하기 전에 오리진으로 가보면 요기 이렇게 있다 밑에 402C17 있죠 저 때 ESP 값이 19FAB8 인데 호출 후에 4가 줄었다, 파라미터가 4개이기 때..