Искал по форуму и в гугле - реализации на вб ненашёл =\
что ещё можно из неё достать?
Хакер писал(а):Искал по форуму и в гугле - реализации на вб ненашёл =\
Ничего не стоит написать её.
Хакер писал(а):что ещё можно из неё достать?
А что ещё тебе нужно?
Debugger писал(а):Спроси у Dependency walker'а.
ну без понимания как это делается
особенно на вб
[/quote]Ну если обьявлены константы, перечисления и прочий подручный материал, тоже не плохо было бы получить
Нужно.И ещё хотелось бы узнать.... для .NET тоже нужно парсить?
Не совсем тебя понял. Написать нетовскую библу с таблицей экспорта как у нативной библы? Скорее всего нет. У нетовской dll таблица экспорта пуста(если смотреть w32dasm). Насчёт вручную - не знаю.не бывает же дотнет-длл-библиотек, экспортирующих функции обычным способом?
Если речь идет о .Net dll, то есть рефлексия, если речь идет о том, чтобы средствами .Net получить инфу о нативной библиотеке - это парсить.И ещё хотелось бы узнать.... для .NET тоже нужно парсить? или есть встроенные решения?
Nord777 писал(а):Написать нетовскую библу с таблицей экспорта как у нативной библы? Скорее всего нет. У нетовской dll таблица экспорта пуста(если смотреть w32dasm). Насчёт вручную - не знаю.
А что тебя сподвигло на такой вопрос? Внедрение нативного кода?
for(i = 0; i < sizeof(Header); i++)
{
*(((char*)Header) + i) = fgetc(exe_file);
if(feof(exe_file)) break;
}
FireFenix писал(а):
- Код: Выделить всё
for(i = 0; i < sizeof(Header); i++)
{
*(((char*)Header) + i) = fgetc(exe_file);
if(feof(exe_file)) break;
}
for(char* pBuf = (char*)Header; (pBuf < (char*)Header + sizeof(Header)) && !feof(exe_file); pBuf++) pBuf = fgetc(exe_file);
а как это будет выглядеть на VB
Dim header as T_HEADER
...
Get #xxx, offset, header
Structure Dos_Header
Dim Signature As UInt16
Dim Count_Byte As UInt16
...
End Structure
FileOpen(1, "D:\D3dx9d_41.dll", OpenMode.Random)
FileGet(1, Dos_Header, 1)
FireFenix писал(а):p.s. т.к. решил делать на NET, не могли бы вы перенести топик в соответствующий раздел?
Хакер писал(а):FireFenix писал(а):p.s. т.к. решил делать на NET, не могли бы вы перенести топик в соответствующий раздел?
Жаль. Перенёс.
bcopy(lpFile, (LPVOID)pHeader, sizeof (IMAGE_DOS_HEADER));
Хакер писал(а):Я испытываю отвращение к .net, не использую и не изучаю эту технологию. Поэтому я не могу отвечать тебе дальше.
Imports System.Runtime.InteropServices
Dim Struct as MyStruct
Dim FS As System.IO.FileStream
Dim BR As System.IO.BinaryReader
FS = New System.IO.FileStream(File, IO.FileMode.Open)
BR = New System.IO.BinaryReader(FS)
BR.BaseStream.Seek(0, IO.SeekOrigin.Begin)
Struct = ToStructure(BR.ReadBytes(Marshal.SizeOf(Struct), Struct.GetType)
Private Function ToStructure(ByVal Value() As Byte, ByVal Type As System.Type)
Dim MyGC As GCHandle = GCHandle.Alloc(Value, GCHandleType.Pinned)
Dim Obj As Object = Marshal.PtrToStructure(MyGC.AddrOfPinnedObject, Type)
MyGC.Free()
Return Obj
End Function
Это какие же?Debugger писал(а):Судя по смыслу, это на VB занимает 3 строчки...
MIT писал(а):Это какие же?Debugger писал(а):Судя по смыслу, это на VB занимает 3 строчки...
MIT писал(а):Способ FireFenix`а (который, по всей видимости, он нашел) является наиболее оптимальным при обработке Структура > Массив > Структура.
iGrok писал(а):LSet при заранее известных размерах и объявленных UDT'ах для структуры и массива.
CopyMemory для любой.
А файл>структура так вообще Get, без всяких лишних преобразований...
FireFenix писал(а):iGrok писал(а):LSet при заранее известных размерах и объявленных UDT'ах для структуры и массива.
CopyMemory для любой.
А файл>структура так вообще Get, без всяких лишних преобразований...
Как я писал выше и приводил код FileOpen + FileGet, неработает для структур, в которых обьявлены элементы UInt16 типа. Поэтому сделал через маршала
Если есть другое решение, пожалуйста выложи, буду рад =)
Хакер писал(а):Так что либо грузить, либо делать правильную трансформацию адреса.
Как тогда правильно странсформировать?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 76