• ⚡️ Последний шанс: Вебинар по пентесту стартует через 30 минут!

    Друзья, ровно через 30 минут (8 июля в 19:00) начинается наш практический вебинар по пентесту и поиску уязвимостей!

    Если вы хотите:
    🕵️‍♀️ Узнать, как находить и эксплуатировать уязвимости в веб-приложениях.
    💡 Получить ценные инсайты от настоящего эксперта.
    🚀 Сделать решительный шаг в мир кибербезопасности.
    То этот вебинар для вас!

    Ведущий вебинара – Александр Медведев – эксперт с более чем 10-летним опытом в сфере информационной безопасности, пятикратный победитель Standoff и обладатель престижных сертификаций: OSWE, OSCP, PNPT, CEH, CWAPT.

    Успейте присоединиться! Зарегистрироваться сейчас

    Возникли сложности с регистрацией? Пишите нам: @Codeby_Academy
    Будем вас ждать!

Smartdeviceapplication

  • Автор темы Автор темы _DeMiUrG_
  • Дата начала Дата начала
D

_DeMiUrG_

работаю с Microsoft Visual C# .NET

есть библиотека скомпилированная для Windows
в ней функции которые воспринимают в качестве входящих параметров
указатель на структуру данных

в основном теле программы я обьявляю структуру данных, обьявляю DLL

начинаю создавать переменную указатель на структуру в самом теле программы

Структура кода примерно такова:

Код:
using System;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;

public struct DLLDATA
{
public int X1;
public int X2;
public int X3;
};

public class Win32
{
[DllImport("TEST.dll", CharSet=CharSet.Auto)]
public static extern long CheckDllDataRange(ref DLLDATA data);
};

namespace SmartDeviceApplication2
{
public class Form1 : System.Windows.Forms.Form
{
...

DLLDATA DllData;

protected override void Dispose( bool disposing )
{ base.Dispose( disposing ); }
#region Windows Form Designer generated code

private void InitializeComponent()
{ ... }
#endregion

static void Main()
{
Application.Run(new Form1());
}

private void btnCalc_Click(object sender, System.EventArgs e)
{
// DLLDATA DllData = new DLLDATA();
DllData.X1 = 1;
DllData.X2 = 2;
DllData.X3 = 3;

long range = Win32.CheckDllDataRange(ref DllData);

y=DllData.spn;
x = DllData.speedk;
}//Calc


билд прошел , А в эмуляторе для Pocket PC
загружается форма , работают события
элементов на форме

а после обращения к фунции содержащейся в DLL
на private void btnCalc_Click
идет опять ошибка :

выдает такую надпись

"A managed NotSupportedException
occurred at Application::Run+0x1a

Application::Run+0x1a
Form1::Main+0xa
OK to terminate"

DLL с другими приложениями работет.

то сделать тобы DLL заработало в SmartDeviceApplication?
 
Пробую писать вот так
int size = Marshal.SizeOf(DllData);
IntPtr buffer= Marshal.AllocHGlobal(size);
Marshal.StructureToPtr(DllData, buffer, false);

Win32.CheckDllDataRange(buffer);

Вот на эту строку ругань:
IntPtr buffer= Marshal.AllocHGlobal(size);
'System.Runtime.InteropServices.Marshal' does not contain a definition for 'AllocHGlobal'



Пишу так:
IntPtr buffer;

...
int size = Marshal.SizeOf(DllData);
Marshal.StructureToPtr(DllData, buffer, false);
Win32.CheckDllDataRange(buffer);

Компилируется но опять ругань на вызов DLL((.
 
Для: _DeMiUrG_
Эта dll откомпилирована под smart device? Или ты пытаешься win32 dll под windows mobile загрузить?
 
:) не так просто ее переделать
а еще доп работа появилась
вообщем как что то будет отпишусь
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab