Сейчас на форуме: rtsgreg1989, zds, _MBK_ (+5 невидимых)

 eXeL@B —› Основной форум —› Как бы мне внутри программы на FoxPro узнать точки входа на функции/процедуры?
Посл.ответ Сообщение

Ранг: 4.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 12 августа 2007 11:17
· Личное сообщение · #1

Проблема если кто не знает в том - что в FoxPro нет такого понятия как указатель на функцию...

А мне бы вот очень-очень хотелость бы внутри программы каким-нить извращённым способом но всё таки найти так называемый Handle на нужную функцию находищуюся внутри запущенной программы...и запустить ту функцию отдельным потоком...

Мысли пока сводятся к варианту - посмотреть в дебагере как происходит вызов функции - какие используются регистры что в них записано и что в стеке... потом обойти вызов этой функции гоу-то...и сразу зафигачить ассэмблерный кусок кода который возвращает нужный мне handle выдрав значения с регистров... Но может кто подскажет как попроще и понадёжней можно это сделать? По средствам API шных функции можно получить дескриптор процесса но по названиям функций поиск не даёт результат...




Ранг: 120.9 (ветеран), 5thx
Активность: 0.080
Статус: Участник
Programmer and reverser

Создано: 12 августа 2007 12:11
· Личное сообщение · #2

Asmodey2 пишет:
в FoxPro нет такого понятия как указатель на функцию

Как это? А как же AddressOf? Вроде там есть такое ключевое слово. Насколько я помню, чтоб получить указатель на функцию надо сделать как в VB:
sub MyProc()
....
end sub

Function GetPtr(byval Proc as long) as long
GetPtr = Proc
End Function

sub Main
Addr = GetPtr(AddressOf MyProc)
End Sub

Могу ошибаться, но вроде Фокс это держит.

-----
Уважайте других и пишите грамотно.




Ранг: 4.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 12 августа 2007 12:29
· Личное сообщение · #3

к сожалению VB намного лучше в этом плане... нет, в фоксе AddressOf нету... можно использовать указатели на переменные как параметры функций - а вот указатель на функцию - такого понятия нет.



Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 12 августа 2007 13:52
· Личное сообщение · #4

Лис вроде вообще не ЕХЕшку компилит, а как QBasic свой интерпретатор + исходный код проги. Сомнительно что у тебя так что-то выйдет.
Но если там не стоит какой-то сверепый уровень защиты, то прогу можно декомпилировать.
Причём даже сохраняться названия всех переменных. Поменять что нужно, и без проблем скомпилить назад.
Я над одной прогой на фоксе целый месяц возился, если что надо могу подсказать.



Ранг: 4.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 12 августа 2007 14:11 · Поправил: Asmodey2
· Личное сообщение · #5

ну проблема то в том что фокса ещё и DLLки не может полноценные делать... только библиотеки классов... В общем нужно мне процедуру написанную на VFP запустить отдельным потоком...а для этого нужен handle на эту процедуру...

В общем чуйствую я что вопрос это в принципе не решаемый... проще сделать отдельный .exe и запускать отдельным процессом...



Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 12 августа 2007 14:38
· Личное сообщение · #6

Да вроде фокс ДЛЛ вообще никакие не может делать, хотя могу и ошибаться. Но ДЛЛ на фоксе себе вообще не представляю.
Объясни что тебе вообще надо сделать.

P.S. Может тебе на форум лисоводов лучше заглянуть...




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 13 августа 2007 06:25
· Личное сообщение · #7

Asmodey2
Refox тебе в руки и можно хоть exe перекампилить, а можно просто нужный функционал вытащить.

-----
StarForce и Themida ацтой!




Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 13 августа 2007 10:54
· Личное сообщение · #8

Maximus пишет:
Refox тебе в руки и можно хоть exe перекампилить, а можно просто нужный функционал вытащить.

Это смотря какой там уровень защиты стоит. ReFox далеко не все может...
Да и сам ReFox может не только снимать, но и ставить защиту на ЕХЕ.
Есть прога Corso6, она вроде защиту лучше снимает...




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 13 августа 2007 10:56
· Личное сообщение · #9

SergX дык топегстартер не написал что файл защищен, значет рефокс рулед не по деццки

-----
StarForce и Themida ацтой!





Ранг: 199.9 (ветеран), 4thx
Активность: 0.120.02
Статус: Участник

Создано: 13 августа 2007 11:09
· Личное сообщение · #10

Asmodey2 пишет:
А мне бы вот очень-очень хотелость бы внутри программы каким-нить извращённым способом но всё таки найти так называемый Handle на нужную функцию находищуюся внутри запущенной программы...и запустить ту функцию отдельным потоком...

Правкой exe вручную это практически невозможно.
Декомпилируй exe ReFox-ом или RefoxAll-ом, проправь чего тебе нужно (добавь вызов процедуры/функции) и скомпилируй проект назад.



Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 13 августа 2007 13:07
· Личное сообщение · #11

Asmodey2 пишет:
Как бы мне внутри программы на FoxPro узнать точки входа на функции/процедуры?


Он вроде о своей программе говорит...



Ранг: 4.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 13 августа 2007 17:49
· Личное сообщение · #12

ага... о своей... начальству надо чтоб всё было на фоксе... ну я нашёл способ как из фоксы запустить отдельным потоком какую-нить библиотечную функцию... Но надо чтоб эта функция была в нормальной DLL и имела адрес который можно APIшными функциями получить... а фокса какие то непонятные DLL делает - только под себя... короче ... ну что ещё можно ожидать от языка в котором функции и процедуры - есть одно и тоже, а типы данных разделяются на String и Integer и никаких структур... а если всё идёт через интерпретатор то вообще нихрена не сделать...




Ранг: 199.9 (ветеран), 4thx
Активность: 0.120.02
Статус: Участник

Создано: 13 августа 2007 18:44
· Личное сообщение · #13

Asmodey2
Ты не на том форуме ответ ищешь. Тебе нужно, например, сюда: forum.foxclub.ru/list.php?29



Ранг: 4.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 16 августа 2007 17:31
· Личное сообщение · #14

про ссылку эту я знаю. Надеялся найти здесь какой-нить способ... пока что подходящий по простосе вариант один - сделать отдельный exe...



Ранг: 226.0 (наставник), 67thx
Активность: 0.160
Статус: Участник

Создано: 16 августа 2007 22:04
· Личное сообщение · #15

Да, на воксе сильно не разгуляешься
Так ты можешь себе DLL сделать на чём угодно и запустить из фокса отдельным потоком.
Или тебе надо именно фоксовский код потоком запустить ?


 eXeL@B —› Основной форум —› Как бы мне внутри программы на FoxPro узнать точки входа на функции/процедуры?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати