2010-04-30 3 views
0

약 10 년 전 Visual Basic 6에서 프로그램을 작성했는데 기본적으로 Breakout/Arkanoid와 비슷한 전체 화면 게임 이었지만 'demoscene '- 스타일 배경. 프로그램을 찾았지만 소스 코드는 찾지 못했습니다. 당시에는 디스플레이 모드를 800x600x24로 하드 코딩했기 때문에 결과적으로 프로그램을 실행하려고 할 때마다 프로그램이 중단됩니다. 호스트 디스플레이 모드가 16/32 비트 일 때 가상 머신이 24 비트 디스플레이를 지원하는 것으로 보이지 않습니다. 그것은 DirectX 7을 사용하므로 DOSBox는 아무 쓸모가 없습니다.소스가없는 하드 코딩 된 디스플레이 설정 수정 (24 비트, 32 비트 필요)

나는 모든 종류의 디 컴파일러를 시험해 보았다. 그리고 그들은 기껏해야 나에게 형식 이름과 어셈블리 호출을 내게 줄 뿐이었다. 디스플레이 모드 설정은 DirectX 7 호출 이었지만 디 컴파일시 명확한 참조는 없습니다.

  • 핀 포인트 기능 800x600x24 디스플레이 모드를 설정하는 프로그램 호출 (? ResHacker 어쩌면) 및 값을 변경

    이 상황에서

    내가 수있는 방법이 임의의 포인터 인 이 다이렉트가 가능하지 경우, l로는

를 실행하는 동안에 만들어 지거나되고 호출을 가로채는/800X600X32

  • 뷰를 설정 있도록 전달되는 동쪽

    • 는 24 비트 디스플레이를 에뮬레이트하는 환경에서 프로그램을 실행

    내가 할 (그것이 될 것 같은 좋은대로) 소스 코드를 복구 할 수 없습니다 필요 너무 많이처럼 그것을 실행하고 싶습니다.

  • 답변

    1

    역 어셈블러에서 시도 할 수있는 기술 중 하나는 기억하는 상수를 검색하는 것이지만 실행 파일 내에 포함될 실제 바이트로 검색하는 것입니다. COM 개체이므로 DirectDraw SetDisplayMode 호출을 사용 했으므로 DLL의 진입 점을 쉽게 추적 할 수 없습니다. 폭, 높이 및 픽셀 당 비트 수에 대한 매개 변수가 있으며 DWORD (32 비트)이므로 "58 02 00 00", "20 03 00 00"및 "18 00 00 00"을 검색하십시오. 바라기를 바꿔서 바꿀 필요가있는 부분으로 좁힐 것입니다.

    어떤 분해 도구를 사용하고 계십니까?

    이 접근법은 유용한 어셈블러 지침보다는 프로그램을 나타내는 거대한 데이터 조각을 얻으므로 VB6 프로그램이 네이티브 코드보다는 p 코드로 컴파일되는 경우 다소 복잡 할 수 있습니다.

    +0

    저는 사용하고 있습니다. http://www.vb-decompiler.org 오늘 밤 당신의 제안을 시험해 봅니다. – nathanchere

    +0

    높이/너비/등의 원시 값을 전달한다고 생각하지 않습니다. 열거 된 값이므로 변경해야하는 부분을 찾을 수 없습니다. – nathanchere