Ищу софтину которая цеплялась бы к программе и позволяла вызывать функции (программные) этой программы. Очень желательно подобие скриптоязыка, чтобы в случае креша не вводить по-новой последнюю функцию.
http://www.google.ru/search?complete=1&hl=ru&newwindow=1&q=%D0%B8%D0%BD%D1%84%D0%B8%D1%86%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD+win32.&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=&aq=f&oq=
... софтину которая позволяла бы в красивом окошечке вбить адрес функции, (а лучше заранее заданное символьное имя), запихнуть в стек\регистры ее параметры и вызвать ее.
какие надо, такие и будут передаваться впринципе я и так могу прицепить к проге еще один поток (thread) с кодом @@: 0x200 dup 0x90 / jmp @r и в ольке вставлять туда код вызова нужной функции, только это долго и неудобно, хочу софтину или хотябы удобный плагин к ольке
GoldFinch Но для этого по меньшей мере нужно знать количество аргументов и их тип, т.е. нужно передавать "правильные" с точки зрения функции аргументы, что предполагает предварительное достаточно полное изучение программы.
Я написал что ищу программу чтобы вызывать функции, а не узнавать какие у них параметры. У меня есть большая программа написанная не мной, в ней есть много функций, их можно отреверсить, а можно еще и запустить и посмотреть как они работают вживую. Пока что я писал патч к программе который цеплялся к какому-то событию (типа нажатия кнопки) и выполнял нужный мне код, но при любом изменении его надо переделывать и перезапускать программу а она запускается с минуту. Можно переделывать патч в ольке, но это никак не документируется и при вылете не сохраняется. Вобщем все еще ищу сабжевую софтину. ЗЫ: в моем случае узнать число аргументов, их типы (и назначение) помогает деманглинг их имен в экспорте. Для неэкспортируемых - реверсирование.
помоему все кто хотел патчить юзая фасм уже написали свои макросы http://www.wasm.ru/forum/viewtopic.php?id=28723 только я уже писал что патч тут не катит, все нужно делать во время выполнения целевой проги, т.к. ее перезапуск слишком долгий для нормальной работы.
GoldFinch Совершенно ничего не понял, но кроме ольки есть опенсорцовый опенватком дебуггер. Цепляться лучше к экспортируемым функам или к загадочным комбинациям вроде c3 или c2 ?? ?? { ... (не менее 5ти одинаковых байт но и не более 15. или e8 ?? ?? ?? ?? тоже очень даже подходит) 55 (точка входа) 8b ec или 89 e5 } (что в скобках - правим) ... (сюда вернемся сделав что надо + push ebp; mov ebp,esp) имхо, имхо, имхо. кто не понял с трех раз - имхо в четвертый
там можно к E9 xx xx xx xx (в начале функции) или кое-где к С3 СС СС ... (align 16), а кое-где и указатель в таблице методов подменять, только как это к теме относится?
GoldFinch пишу ж не понимаю задачи. Вы хотите тулзу передающую управление на некий адрес в некой другой проге с неким стеком и начальными регистрами и никакой дебугер вам не подходит. Почему? Каких результатов вы видеть хотите? Просто запустить и все? Чуть подробнее сами требования рапишите