리버싱(14)
-
ImagePrc(reversing.kr) write up
이번문제를 통해 리버싱을 더 깊이있게 공부해야겠다는 생각이 들었습니다. 이 파일을 실행시키면 다음같은 화면이 나오는데 여기에다가 저는 HELLO라는 문자열을 그려봤습니다. 그리고 CHECK버튼을 누르면 WRONG라는 문자열이 나옵니다. 이제 OLLYDBG에 파일을 집어넣고 STRING문자열을 검색해봤습니다. 다음에서 WRONG문자열이 보이네요. . GOGO 여기서 WRONG문자열을 출력하는데 어떤 조건에 의해서 WRONG문자열이 출력될테니까 위에 주소로 가보면 4013AA라는 주소를 발견할 수 있습니다. 여기서 위에 CALL한 함수 이후 XOR EDI, EDI를 해주면서 EDI값을 0으로 초기화 시켰고 ECX레지스터의 주소값에 들어있는 하위 8비트 값 AL에 옮김니다. 여기서 EDI값이 0x15F90이 ..
2023.12.04 -
codeengn.com (advance 06)
프로그램을 실행시키면 다음과 같은 화면이 뜹니다. 저 확인 버튼을 누를 때마다 숫자가 증가하는 것을 확인할 수 있습니다. 아 맞다 UPX패킹풀어주세요. 이 프로그램은 안티디버깅이 되어있기때문에 ollyExt라는 플러그인을 사용해서 IsDebuggerPresent를 체크줬습니다. 처음 call목록에 들어가면 messagebox함수가 확인안됩니다. 따라서 messagebox가 호출되는 지점을 찾아줘야 됩니다. 저는 이벤트가 걸리는 지점에다가 브레이크 포인트를 걸고 스탭인투를 반복했습니다. 계속 진행을 하다가 다시 call목록을 확인해주면 messagebox를 확인하실 수 있습니다. 저는 이후 다음과 같이 브레이크포인트를 걸었습니다. 이후 F9를 누르면 messagebox에서 이벤트가 걸립니다. 확인을 누르기..
2023.12.04 -
CodeEngn basic 17(write up)
안녕하세요. 오랜만 입니다. 요즘 이것 저것 준비하면서 바쁘게 지내서 포스팅을 많이 못했네요.. 최근에 CodeEngn문제 다시 풀어보고 있는데 리버싱을 처음접하는 사람이 조금 hard하다라는 문제 위주로 포스팅 진행하고 있습니다. 이 문제를 보면 KEY값 주어지고 NAME이 한자리이라고 하네요.. 그리고 NAME값의 MD5 해쉬값을 구하라고 하네요.. 음 처음 봤을 때 A-Z,a-z,0~9이런식으로 무작위 대입하면 답이 나올꺼라고 생각하고 답을 구했는데 이 방법은 리버싱 실력향상에 도움이 되지 못합니다. 따라서 내부적인 코드를 분석해보겠습니다. KEY값은 BEDA-2F56-BC4F4368-8A71-870B입니다. 올리 디버거를 이용해 내부 STRING을 서치 합니다. 다음 코드에서 0045BB24에 C..
2023.11.19 -
Position(reversing.kr) write-up
정말 빡센 문제입니다... 이렇게 입력을 받는데 체크하는 버튼은 없습니다. 따라서 input값들이 다 맞아 떨어질때 correct를 출력할 것 입니다. 저는 처음에 감을 못잡아서 ollydbg로 전체 브레이크 포인트를 걸어서 디버깅작업을 해봤습니다. (노가다...) 결과적으로 저기 함수(Position)에서 연산이 일어납니다. 하여튼 이 뒤로 개노가다여서 노가다한 내용을 정리해보았습니다. ABCDEF COUNT = 7 (제가 입력한 값) 총 NAME COUNT = 4 (프로그램에서 원하는 값) 입력 첫 문자 0x61 '' >0x7A 되면 점프됨 따라서 2) & 1) + 5; v46 = ((i >> 3) & 1) + 5; v34 = (j & 1) + 1; v40 = ((j >> 4) & 1) + 1; v3..
2023.11.19 -
reversing.kr CSHOP풀이
프로그램을 실행시키면 다음과 같습니다. 아무 정보가 없어요,,, PEID로 확인해보면 C#으로 컴파일된 것을 아실 수 있습니다. 저는 DOTPEEK를 이용해서 디컴파일을 진행하였습니다. 근데 처음 디컴파일 하면 \u0083\u0083\u0083\u0083이런식의 변수 이름이 보일 것 입니다. 이 부분은 VISUAL STUDIO로 열어서 CTRL+H를 이용해서 REPLACE해주면 저렇게 깔끔하게 됩니다. 그리고 저 텍스트 값들 나열하면 답일 것이라고 생각하실텐데 저도 처음에는 그랬는데 저건 답이 아닙니다. 이 코드를 보면 그 이유를 아실 수 있습니다. LOCATION(위치)이 다르기 때문에 저 TEXT를 일렬로 나열한 것은 의미가 없습니다. 근데 처음 BTN.SIZE가 처음에 0,0인데 이를 100,100..
2023.11.13 -
Reversing.kr ransomeware
일단 디크립트된 파일의 확장자가 exe라는 정보가 있습니다. 이 파일이 UPX패킹이 되어 있어서 UPX 언패킹을 해주면 다음과 같은 어셈블리 코드가 보입니다. 근데 이 코드 너무 난잡하니 SEARCH STRING기능을 이용하겠습니다. KEY STRING을 더블 클릭 합니다. 브레이크 포인트를 걸고 스탭오버합니다. 저는 KEY를 예시로 12345로 했습니다. 분석 결과 KEY값은 파일을 복호화할때 CHAR형으로 인식되어 1에 CHAR형에 해당하는 ASCII넘버 31, 32, 33, 34, 35형태로 복호화가 진행됩니다. 그리고 FOPEN를 통해 파일을 불러주는 것을 아실 수 있습니다. 여기서 계속 진행하다보면 파일의 1바이트씩 값을 불러와서 다음과 같은 규칙으로 복호화가 진행됩니다. file's 1byte..
2023.11.13