У меня есть собственная C dll, которая экспортирует одну функцию, кроме DllEntryPoint, FuncX. Я пытаюсь выяснить, как FuncX общается с его вызывающим, потому что он имеет тип возврата void и никаких параметров. Когда я вызываю его из жгута C#, я получаю AccessViolationException - Попытка читать или записывать защищенную память.Попытка прочитать или записать защищенную память при вызове собственной C DLL
У меня есть подозрение, что его клиентское приложение может выделять буфер для отправки или получения значений из dll. Действительно ли это догадка?
Я не могу отлаживать клиентское приложение, потому что по какой-то причине он не запускается, поэтому я не могу запустить его и подключиться к процессу. Однако я могу разобрать его в IDA Pro, но не знаю, как, если можно, попробовать и отладить его там.
Я только на странице 20 или около 300 страниц учебного пособия по IDA Pro и заказал книгу на 600 страниц, но пока, как загрузить DLL в IDA Pro и все еще вызывать ее из C#? Спасибо, я заглянул в плагин Decompiler. – ProfK
Ой, мои глаза видели цену декомпилятора. При текущих обменных курсах, это в три раза мой дом оплаты! Вероятно, это достойная инвестиция, если я получу более обратную инженерную работу. – ProfK
Не знаю, я никогда больше не был IDA. Только видел, как он использовался на моей старой работе. Но когда вы получаете сообщение об ошибке, посмотрите в AccessViolationException и посмотрите, можете ли вы найти адрес памяти. Я знаю, что вы можете перейти прямо к адресу памяти и посмотреть, что там. Может быть, это поможет вам начать. – zildjohn01