2011-08-16 3 views
1

컴파일 된 exe가 있다고 가정하고 exe의 매개 변수 또는 명령 줄 인수를 찾고 싶습니다. 디버거를 사용하여 어떻게합니까? 나는이 주제가 리버스 엔지니어링의 범주에 들어간다고 생각하지만,이 트릭을 어떻게 달성 할 수 있는지에 대한 안내서를 찾을 수없는 것 같습니다.디버거 도구를 통해 알 수없는 exe의 명령 줄/매개 변수를 찾는 방법은 무엇입니까?

내가 얻을 수있는 가장 가까운 것은 exe에서 디버거를 사용하고 CreateProcess에 중단 점을 설정하는 것입니다. 그러나 디버거 내부에서 CreateProcess 함수를 찾는 방법은 무엇입니까?

답변

0

"target.exe -whateverabc"와 같은 일부 명령 줄 매개 변수로 exe를 실행하십시오. 그런 다음 디버거가 exe를로드하면 -whateverabc에 대한 메모리를 검색하고 해당 메모리 위치 및 가능한 중복에 대한 읽기 중단 점을 설정하십시오. 다행스럽게도 중단 점이 발생하면 해당 exe의 명령 줄 매개 변수를 확인하는 함수 안에 있기를 바랍니다.

CreateProcess에 중단 점을 설정하려면 일부 디버거에서 'bpx CreateProcess'를 입력하십시오 또는 kernel32.dll 또는 함수가 포함 된 w/e dll에서 LoadLibrary를 사용하는 작은 응용 프로그램을 작성한 다음 이름이있는 GetProcAddress 함수의 주소를 가져온 다음 해당 주소에서 실행시 중단 점을 설정합니다.

0

일부 디버거를 사용하면 debuggee 컨텍스트에서 임의의 함수를 호출 할 수 있으므로 지원하는 경우 GetCommandLine() 함수를 호출 할 수 있습니다.

또 다른 옵션은 세미 문서화 된 TEB 및 PEB 구조를 사용하는 것입니다. fs : 30h (PEB)로 이동 한 다음 ProcessParameters으로 이동하고 CommandLine 필드를 검사해야합니다.

관련 문제