под Windows PE не запускается программа

Тема в разделе "WASM.BEGINNERS", создана пользователем ant, 18 мар 2009.

  1. ant

    ant Member

    Публикаций:
    0
    Регистрация:
    19 мар 2008
    Сообщения:
    118
    Есть программа, писаная на асме (masm32). Есть также ее начальный вариант на паскале (Delphi).
    Есть простейший гуй в виде окошка с эдитом, кнопкой и чекбоксом. Программа умеет "сбрасывать" реквизиты
    файлов (испльзуется рекурсивный обход).
    Самое обидное, что асмовская прога не запускается в урезаной винде (нечто вроде WinPE).
    Паскальная работает, другие программы паскальные тож работают. Я хотел бы постепенно
    переписать их на ассемблере, по мере изучения последнего.
    Сборку PE делал при помощи "мастера", выложенного этим добрым человеком: klass@bk.ru
    Винда сообщает о ненормальном завершении процесса. Дельфийская нормально работает.
    Depends Walker показал, что обе проги зависят от одних и тех же библиотек.
    Теперь вот несколько вопросов.
    1) Что делать в таких случаях? (куда и чем копать)
    На случай,если телепаты в отпуске:
    Код (Text):
    1. include \masm32\include\windows.inc
    2. include \masm32\include\user32.inc
    3. include \masm32\include\kernel32.inc
    4. includelib \masm32\lib\user32.lib
    5. includelib \masm32\lib\kernel32.lib
    6. include \masm32\include\shlwapi.inc
    7. includelib  \masm32\lib\shlwapi.lib
    8. include \masm32\include\shell32.inc
    9. includelib  \masm32\lib\shell32
    10. include \masm32\include\ole32.inc
    11. includelib  \masm32\lib\ole32
    2) Имеет ли смысл линковать библиотеки статически? В этом случае в исполняемый файл попадает вся либа, или необходимая часть?
    ЗЫ: Раз уж я здесь, заодно такой вопросик: Пытаюсь сделать "минимальную ОС", способную стартовать с раздела NTFS, в которой запускались бы программы с GUI, и можно было бы работать с реестром Windows. Пока получается только на базе той же Windows. И размер на диске почти 90 Mb. Может, кто-то уже делал нечто подобное, и с лучшим результатом? Буду благодарен за ссылочку.
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    это ты для импортов линкуешь, так что на размер не влияет
    а вообще, пока не покажешь весь код, что и где падает, тебе придется ждать собрания экстрасенсов, а они на васме проходят крайне редко
     
  3. ant

    ant Member

    Публикаций:
    0
    Регистрация:
    19 мар 2008
    Сообщения:
    118
    То есть, я понимаю.

    Во-первых, спасибо, что ответили.
    Во-вторых, я просил удочку, а не рыбу (хотя и от рыбы не откажусь)
    В-третьих, выкладываю код и make.bat . Хотя и сомневаюсь, что дело в самом коде (он работает под норамальной системой).
    Код получен методом копипаста с доработкой под свои нужды, не пинайте сильно :)
    В-четвертых, еще раз спасибо.
     
  4. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Глянь Windows XP USB Flash Edition, правда самому её попробовать всё ход не доходит :)
     
  5. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    ant даю удочку :)
    Берёшь OllyDBG или любой другой отладчик, запускаешь под ним программу и смотришь на чём падает.
    Потом думаешь почему.
     
  6. ant

    ant Member

    Публикаций:
    0
    Регистрация:
    19 мар 2008
    Сообщения:
    118
    Слышал про такое. Насколько понял, тот же PE. Вчера скачал очередную KolibriOS. Был бы идеальный вариант, если бы не проблема с ntfs. Только чтение, запись не предвидится. Зато грузится мгновенно. Теперь вот усиленно изучаю ntfs, буду пытаться работать как-то напрямую с диском. Пока не могу оценить даже сложность задачи.
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Экстрасенсы в студии, но нужно знать хотябы что в хареррор боксе написано.
     
  8. ant

    ant Member

    Публикаций:
    0
    Регистрация:
    19 мар 2008
    Сообщения:
    118
    Докладаю:
    1) в PE на мгновение появляется окошко, ничего не успеваю увидеть.
    2) в Erd Commander 2005 следующее сообщение об ошибке: "The launched process appear the have exited abnormally when can occur if too many applications are run simultaneously. Try closingg some applications..."
    Причем, дельфийски аналог спокойно запускается.
    ЗЫ: Не логичней ли была бы подпись" Требуются услуги гадалки, ICQ XXXXXXXXX"?
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    ant
    Имхо это дельфи гуан, не системное сообщение. Ничего не могу сказать, еслиб на асме есчо подумал бы..
    Нет не логичней, на каждом третим топике тут нужно гадать. Мне услуги не нужны, подобную как у тебя задачу на своём компе решить мне как два пальца абасцать .D
    Кстати оля у тебя установлена, так в чём проблема не понятно, там дебажить секунд 10.
    PS: Ненавижу дельфи. Удалить его и убить себя апсену.)
     
  10. ant

    ant Member

    Публикаций:
    0
    Регистрация:
    19 мар 2008
    Сообщения:
    118
    Уважаемый. Судя по всему, одно упоминание о паскале уже выводит Вас из равновесия, и лишает способности читать внимательно посты. :)))
    Я и пытаюсь слезть с дельфи. Не работает как раз прога, писаная на асме. В моем втором посте приаттачены исходники на асме , а также make.bat
    Прога, написанная в гуане как раз работает.
    Буду честен, дебажить не горазд. Но! Оля в PE точно не установлена, а баг проявляется как раз в PE.
    Радикальненько. Если удалить, то можно и не убивать, ИМХО. Яфшоке от логики.
    Код (Text):
    1. подобную как у тебя задачу на своём компе решить
    Приятно, что столь квалифицированный специалист удостоил меня вниманием.
    Дело в том, что я-дядька сорокалетний, занимающийся ремонтом компов. Если есть время, пытаюсь глубжее понять систему, писать программы. Я не большой любитель задавать вопросы на форумах, сперва стараюсь разобраться сам, загуглить в конце концов. Ну, извините, что отвлек от важных дел.
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    ant
    Ладно понятно, а я 23-х летний, дебажу сутками и мне вобщемто абсолютно пофиг на тех, кто даже чучуть не пытаеца понять чтото. Удачи короче.)
     
  12. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    ant
    Думаю твои проблемы в shell, откажись от него - делай полностью свои диалоги или используй стандартные api диалоги http://msdn.microsoft.com/en-us/library/ms646960(VS.85).aspx
     
  13. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
  14. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Попробуй с помощью дизассемблера поглядеть различия.
     
  15. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    ant
    Ошибка появляется при запуске или при нажатии Go?

    Вобще исходник по хорошему надо весь переделать...

    Код (Text):
    1. WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
    2.     LOCAL wc:WNDCLASSEX
    3.     LOCAL msg:MSG
    4.     LOCAL hDlg:HWND
    5.     mov   wc.cbSize,SIZEOF WNDCLASSEX
    6.     mov   wc.style, CS_HREDRAW or CS_VREDRAW
    7.     mov   wc.lpfnWndProc, OFFSET WndProc
    8.     mov   wc.cbClsExtra,NULL
    9.     mov   wc.cbWndExtra,DLGWINDOWEXTRA
    10.     push  hInst
    11.     pop   wc.hInstance
    12.     mov   wc.hbrBackground,COLOR_BTNFACE+1
    13.     ;mov   wc.lpszMenuName,OFFSET MenuName
    14.     mov   wc.lpszClassName,OFFSET ClassName
    15.     invoke LoadIcon,NULL,IDI_APPLICATION
    16.     mov   wc.hIcon,eax
    17.     mov   wc.hIconSm,eax
    18.     invoke LoadCursor,NULL,IDC_ARROW
    19.     mov   wc.hCursor,eax
    20.     invoke RegisterClassEx, addr wc
    21.     invoke CreateDialogParam,hInstance,ADDR DlgName,NULL,NULL,NULL
    22.     mov   hDlg,eax
    Не понятно, зачем тут регистрируется оконный класс...
     
  16. ant

    ant Member

    Публикаций:
    0
    Регистрация:
    19 мар 2008
    Сообщения:
    118
    Непременно попытаюсь запустить под PE Ольку. В успех верю мало. Я пока пишу очень простые проги на ассемблере. До сих пор надобности в отладчике не возникало. Меня можно легко обвинить в нежелании вникать. Что ж... У меня свой план освоения асма, не буду утверждать, что он единственно правильный. Тем не менее, план таков: на примере относительно простых утилит изучить команды языка, понять как меняются регистры. Без понимания элементарных команд невозможно понять вывод отладчика. Тем более, что он выдает вовсе не "макро" код.
    Здесь же возникла странная ситуация, запредельная для моего уровня. Потому и обратился за помощью. Не ожидал нарваться на членомерство (это не про Вас).

    Y_mur
    Стал бы я заморачиваться с Shell, если бы OpenDialog позволял выбирать каталог, а не файл. Можно, конечно, выбирать файл в каталоге (если он есть), и потом получить каталог. Я раньше так и делал. Ну это ж не правильно? Или есть прямой способ? Кстати, идея! Завтра попробую с фалом "." Он же в каждом каталоге есть?

    n0name Учитывая вышесказанное, можно понять, что я не дорос до диза. Встретимя тут же, ровно через пару лет :derisive:

    K10
    При запуске.
    Изелион научил. По поводу "Все переделать", я не сомневаюсь. Что именно переделать, чтобы работало под PE. И, главное, почему не работает. В первом посте я указал, что требуемые системные либы все на месте. Подозревал, что неправильная линковка или инклуды. Недавно еще возникла тупая мысль (вы будете смеяться) про видеорежим. Впрочем, я столько глюков навидался в винде, что ничему не удивлюсь.
    Всем спасибо, особенно Клерку. Повеселил :)
    ЗЫ: Про гадалку - это старый прикол. Смысл в том, что не указываешь свой контакт. Если гадалка реальная, найдет. (Это я для особо одаренных уточнил)
     
  17. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    это как раз в отладчике очень хорошо видно.
    исполняешь одну инстуркцию, и видишь как поменялось состояние регистров.
     
  18. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    скорее всего там в WinSxS что-нибудь пропущенно, вернее даже и если всё на месте, то сама система side by side весьма мутная штука, поэтому и косяки относительно PE
    кстати, если вдруг не в теме, то там обычно используют нечто вроде RAMDRIVE раздела, как в DOS :)
    распаковываешь прогу на виртуальный раздел и оттуда запускаешь, если readonly критично?
    я было дело, даже инсталировал "налету" сам пакет masm32 из SFX перед каждым кликом :)
     
  19. c4m310t

    c4m310t New Member

    Публикаций:
    0
    Регистрация:
    19 дек 2008
    Сообщения:
    237
    2 ant
    Поддержу мнение большинства... OllyDbg Вам поможет. Причем не только в конкретной ситуации, но и в лучшем понимании самой работы ПК.
    Думаю, начать можно со статей на wasm'e... ;)
     
  20. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    793
    c4m310t как в ольке сдампить изменённый файл, если это возможно вообще?
    я имею ввиду, что нибудь занопить в файле и сохранить уже как новый файл???
    вилы перечитывать статьи...