CallWindowProc и Windows98

Тема в разделе "WASM.WIN32", создана пользователем GPcH, 3 окт 2005.

  1. GPcH

    GPcH Member

    Публикаций:
    0
    Регистрация:
    2 авг 2004
    Сообщения:
    136
    Ребят, нужна Ваша помощь. Обидно, что вопрос не по ассемблеру, но что поделать. Есть такая API функция CallWindowProc. C ее помощью можно выполнять ассемлерные инструкции и это один из способов делать ассемблерные вставки в VB программах. Но в Windows 98 VB почему то отказывается работать с этой функцией (пишет, что неверный вызов Dll), а откомпиленные проги падают в Access Violation. Если юзаю эту функцию из асма - все нормально работает под 98. Может кто натыкался на те же траблы? Помогите советом. Бросит нах VB не предлагать... нужно в декомпиле асм вставки юзать для его быстрой работы (потому он щас и не идет под 98)
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    GPcH



    Вапщета VB это виртуальная машина, а exe-шник представляет иссебя байт-код. Какие там нах могут быть ассемблерные вставки?
     
  3. GPcH

    GPcH Member

    Публикаций:
    0
    Регистрация:
    2 авг 2004
    Сообщения:
    136
    _DEN_

    Вобщета о виртуальной машине забыли еще с приходом VB 5.0 еще в конце 90х годов. С тех пор VB позволяет компилять код в native code. насчет асм вставок в VB - почитай мои статьи на www.dotfix.net это реально. Но давай не будем оффтопить и отходить от вопроса. Всеж вопрос в том что косяк в 98... в других версиях винды все ok
     
  4. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    GPcH

    Помнится на одном VB'шном сайте лежит ассемблер,

    написан на VB, в нем имеется возможность компилировать

    и исполнять код налету, распространяется с исходниками,

    вот интересно у него тоже траблы в win98, т.к. использует

    ту же функцию для запуска кода? :derisive:
     
  5. GPcH

    GPcH Member

    Публикаций:
    0
    Регистрация:
    2 авг 2004
    Сообщения:
    136
    Asterix

    Знаю я о таком AddIn'е. Называется ThunderVB. Но! Он не работает если запускать программу из под IDE. Программу надо каждый раз компилировать. Если в Delphi или C++ это норма, то в VB есть только пикодовый отладчик и следовательно отлаживать прогу после компиляции можно будет только вручную (Олей к примеру или сайсом), а это ахтунг, особенно если идет речь о декомпиле, а не о какой нибудь мелкой проге, которую можно скомпилять и забить. Потому я и не юзаю это чудо техники. А CallWindowProc работает как в пикоде, так и в нативе - это API. Потому и хочу решить с ней проблемую. Может кто нибудь знает, как эту трублу решить :)
     
  6. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Есть идея, как можно замутить вызов асм кода подругому.

    Попробуй создать пустую функцию (содержащую немного нафиг не нужного кода), потом получи указатель на нее и с помощью VirtualProtect измени атрибуты страницы на PAGE_READWRITE, после чего вместно ненужного кода можно записать код который будет использоваться потом для авзова асм вставок. После этого асм функции можно будет вызывать посредством этого кода не сложнее, чем обычные VB функции. И в Windows 9х должно работать.



    В VB я не шарю, поэтому не уверен в осуществимости этого метода, но если это можно сделать, то я думаю получиться неплохая альтернатива CallWindowProc.
     
  7. GPcH

    GPcH Member

    Публикаций:
    0
    Регистрация:
    2 авг 2004
    Сообщения:
    136
    Ms Rem

    Ты мои мысли читаешь, брат :) Так вчера и сделал... но... это нифига не работает из IDE... опять приходится компилять перед проверкой работотоспособности... но это работает конечно, не спорю. Но хотелось бы оставить возможность отладки из под IDE. Жду еще предложения.
     
  8. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Ну, тогда можно еще таскать с программой DLL экспортирующую функции для вызова асм кода. Я думаю, сильно накладно это не будет.
     
  9. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
  10. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    GPcH



    Извините, о гуру VisualBasic-а, за мое невежество :derisive: Вижу мне до Вас еще рости и рости :))))))
     
  11. SDragon

    SDragon New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2005
    Сообщения:
    133
    Адрес:
    Siberia


    Тогда уже проще саму DLL написать на асме, и в VB вызывать из нее функции :).
     
  12. GPcH

    GPcH Member

    Публикаций:
    0
    Регистрация:
    2 авг 2004
    Сообщения:
    136


    Есть такая мысль, но на асме реализована еще и криптовка и декриптовка баз (почему писал на асме, чтобы скорость декриптовки не влияла на скорость работы декомпиля) и ее легко будет взломать/декриптовать/реверснуть 'ckb весь асм код будет выполнять Dll... этого я тоже не хочу. То есть тут настолько много всяческих нюансов, что хотелось бы всеже понять почему под ME/2000/XP CallWindowProc работает, а под 98 работает только если ее вызвать из проги на асме, в VB прогах почему-то не работает. Может кто поглядит... просто бывает такое, что свежий взгляд на одни и теже вещи часто решает вопрос





    Цитирую с сайта:

    LASM - это 32-битный ассемблер, написанный на VB.

    Компилированный код запускается с помощью API CallWindowProc.



    То есть проблема под 98 таже самая
     
  13. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    GPcH





    Ты проверил или ты думаешь что у этого ассемблера та же проблема?

    Я надеялся что автор проблему решил, поэтому и привел

    ссылку, сам проверить не могу, потому что сейчас не

    использую win98, да и в отъезде я, в смысле не дома,

    и под рукой только ноут со скудным программным обеспечением %)
     
  14. GPcH

    GPcH Member

    Публикаций:
    0
    Регистрация:
    2 авг 2004
    Сообщения:
    136
    Asterix

    Блин... а я и не поглядел ту прогу, думал что с ней таже хрень... запустил под виртуал PC в 98 - работает. Поглядел код... короче там все параметры объявлены как DWORD и передаются по значению... а адрес в значение автор асма сам записывает. Короч ясно... хоть и извратный способ, но работает... пасиб... разобрался...



    Вопрос исчерпан

    Всем cпасибо