1. 입력한 데이터를 연산해 한글자씩 비교해, 맞으면 Correct 를 출력하는 프로그램이다. 2.0804A020 주소에 scanf로 문자열 입력을 받는다.08048451 에서 한 글자씩 xor 연산을 하거나, 바로 비교해서 계산 값이 맞는지 비교하고 있다.0804848E 의 xor 연산의 경우에는 0FFFFFF88h -> 0x88 과 동일하다. (movzx -> 0x000000DD)http://www.asmcommunity.net/forums/topic/?id=4885 3. 굳이 계산할 필요 없이 Pseudocode를 봐도 된다. 답 : L1NUX
1. 특정한 키를 주면 그에 맞추어 file 이름의 파일을 해독하는 프로그램이다.키를 알아낼 필요 없이, 암호화된 파일만 복호화하면 된다.UPX로 패킹되어 있으니, 패킹을 풀고 분석한다. 2.004135E0 main 문에서 스택에 공간을 할당하고, 비휘발 레지스터 ebx, esi, edi를 스택에 저장한 후에 , "push, pop, pusha, popa" 명령어들이 계속 이어져 있는 것을 볼 수 있다. 순서대로 실행하면, 프로그램에 전혀 영향을 미치지 않는 쓰레기 코드들이다.0044A7AB 까지 이 코드들이 계속 이어져 있는데, 중간중간에 제대로 실행되어야할 코드들이 섞여 있다, 00425BB2 : 0044A990 함수를 프로시저로 스레드를 생성하고, (패치할 때 00425BC1 를 nop로 -> 이후..
1.폼에 그림을 그릴 수 있게 되어있고, "Check" 버튼을 누르면 "Wrong!" 이 출력된다.MessageBox 가 뜨는 시점에 프로그램을 suspend 시켜 caller address 를 찾아낸다. 2. MessageBox 를 호출한 부분에서 위로 올라가 보면 루프문을 돌면서 특정 데이터를 90000번동안 체크하는 구문을 볼 수 있다.더 위로 올라가 보면, 체크하는 데이터의 포인터가 담긴 ECX와 ECX+EAX 에 대략 직접 그린 그림과, 프로그램 내의 리소소를 가지고 있는 거라고 추측해 볼 수 있다.사진과 그린 그림이 일치하는지 90000번 확인해, 다르지 않다면 00401500 함수를 실행하고, 루린을 종료한다.바로 루틴을 실행해 보았으나 아무 일도 일어나지 않았고, exe 안에 들어있는 사진..