2012-02-24 3 views
0

다른 CLI 프로그램을 호출하는 프로그램이 있는데 프로그램 중 하나의 소스 코드가 없습니다. 첫 번째 프로그램이 명령 줄 프로그램을 호출하는 매개 변수가 궁금합니다.Windows 프로세스 생성 호출을 디스 어셈블 된 코드로 찾는 방법은 무엇입니까?

Sysinternals Process Explorer를 사용하여 매개 변수를 찾을 수있었습니다. 그들 중 하나는 이상한 찾고 문자열이었다. 호기심이 생겨서 나는 그것이 어디서 발생했는지, 그것이 어떤 종류의 변수에 의존하는지 또는 그것이 하드 코딩되어 있는지를 알고 싶었다.

문자열이 ASCII 형식으로 표시되지 않았습니다. 그래서 실제로 CLI 응용 프로그램이 호출 된 곳을 찾고 싶었습니다. 그래서 더 깊이 파고들 수있었습니다. 불행히도, 이것은 내가 붙어있는 곳이었습니다. Windows API 및 프로세스 생성 방법에 대해서는 잘 모릅니다. CLI 응용 프로그램 프로세스가 생성되는 부분을 찾을 수 없습니다. StraceNT라는 도구를 사용하여 시도했지만 어디서나 전화를 찾을 수 없었습니다 (CreateProcess() 기능을 사용한다고 가정 함).

죄송합니다. 바보 같은 질문 인 경우 미안하지만 재미있을 것 같습니다. 나 자신을 교육하기 위해 제안 된 독서는 환영합니다.

+0

디버거를 사용합니다. NtCreateProcess에 중단 점을 설정하십시오. –

+1

계속 진행할 필요는 없지만 체크 아웃 할 수있는 여러 가지 CreateProcess 변형이 있습니다. OllyDbg에 태그를 붙 였으니, 모듈리스트는 Alt + E이고, 커널 모듈은'kernel32'이고, 이름은 Ctrl + N이다. 'CreateProcessA','CreateProcessW' (유니 코드),'CreateProcessAsUserW' 및 다른 CreateProcess * 내보내기에 대한 F2 (중단 점). * something *을 호출하기 위해 이들 중 하나를 사용하지 않으면'ntdll'과'ZwCreateProcess' * 함수를 사용하십시오. 프로세스를 생성하는 다른 방법이 있으며, 디버깅하는 데는 모두 더 재미 있습니다. 이걸 어떻게 시작하는지 알려주세요. – Leigh

+0

@Leigh : OllyDbg를 사용하는 경우 Ctrl + G를 눌러도됩니다. –

답변

0

Process Monitor을 사용할 수 있습니다. 프로세스 생성/종료 작업 만보고 싶다면 Operationbegins withProcess 필터를 추가하십시오. 그런 다음 생성 된 내용을 포함하여 프로세스가 생성 될 때 기록됩니다.

"프로세스 작성"이벤트를 두 번 클릭하고 "스택"탭을 볼 수 있습니다. Voilà, 프로세스 생성이 시작된 방법을 보여주는 호출 스택을 얻습니다!

여기에 내가 탐색기에서 메모장을 시작 :

enter image description here