Описание прототипа функции
{
*(double *)a1 = (double)bEnable;
return *(double *)a1;
}
public static extern double IS_CONNECTED(int a1);
также делал dll injection, думая что получится эту проблему решить - всё таже проблема... Помогите пожалуйста, описать прототип и использование функции
но я же запускаю приложение, и тогда инжектюсь к проге, и подключаюсь к функции. То есть переменные инициализированы
{
*(double *)a1 = (double)bEnable;
return *(double *)a1;
}
{
*a1 = (double)bEnable;
return *a1;
}
2) Вообще вроде эта ошибка говорит что с прототипом чтото не то. Я б для начала не мешал managed/unmanaged, а сделал бы работоспособный пример на плюсах
3) Если ничего не поможет - попробуй через CreateRemoteThread
{
*(double *)a1 = (double)bEnable;
return *(double *)a1;
}
{
*a1 = (double)bEnable;
return *a1;
}
2) Вообще вроде эта ошибка говорит что с прототипом чтото не то. Я б для начала не мешал managed/unmanaged, а сделал бы работоспособный пример на плюсах
3) Если ничего не поможет - попробуй через CreateRemoteThread
тогда на c++ прототип будет такой?
double x =0;
double s = func(&x);
как тогда нужно объявить прототип?
если так, то указатель на функцию не NULL, но таким образом ошибка с памятью
По какому адресу? Эм... а вообще неплохо было бы посмотреть на всё это в живую, а то пишем код по фотографии.
если так, то указатель на функцию не NULL, но таким образом ошибка с памятью
По какому адресу? Эм... а вообще неплохо было бы посмотреть на всё это в живую, а то пишем код по фотографии.
Исключение по адресу 0x00C5E6B6
"нарушение прав доступа при чтении по адресу 0х007CD40C"
Нужно выложить исходники + программу, к которой я хочу получить доступ?
Исключение по адресу 0x00C5E6B6
"нарушение прав доступа при чтении по адресу 0х007CD40C"
Нужно выложить исходники + программу, к которой я хочу получить доступ?
1) Адрес исключения (0x00C5E6B6) назодится в функции IS_CONNECTED?
2) Адрес 0х007CD40C указывает на что? (a1/a1* или bEnable или в никуда?)
3) Хотелось бы,... можно еще с ida базу сохраненную
0x00C5E6B6 - да в функции
скину, только позже. там овер 300 мб, а нет слабенький.
вот сама программа ССИЛКА
то есть переменная не инициализирована? Само приложение запущено... Не понимаю... Эта функция имеет такое же название, как и функция в скриптовом языке, какой используется в этой программе... Я ставил бряк на этой функции, вызывал ее через скриптовый язык... Всё было нормально.. Функция возвращала без проблем значение (я привожу пример на этой функции, потому что она самая простая среди других экспортируемых).. Можно как то синтетически вызвать эту функцию?
может нужно особое внедрение?
псевдокод:
{
if ( *(double *)a2 < 0.0 )
{
*(double *)a1 = -1.0 * *(double *)a2;
}
else
{
*(_DWORD *)a1 = *(_DWORD *)a2;
*(_DWORD *)(a1 + 4) = *(_DWORD *)(a2 + 4);
}
return *(double *)a1;
}
{
if ( *a2 < 0.0 )
{
*a1 = -1.0 * *a2;
}
else
{
*a1 = *a2;
*(a1 + 4) = *(a2 + 4);
}
return *a1;
}
Превосходно! У меня Ваш пример тоже работает! Спасибо большое.
ПС: может проблема в том, что у меня 64б винда была? Сейчас на 32 всё нормально!
Может быть, но врядли... может параметры какиенить не те для функций указывал, может собрал x64 инжектор а не 32... может просто звёзды так сошлись :D