• XSS.stack #1 – первый литературный журнал от юзеров форума

Golang! Как извлечь метод из dll файла

horyga

HDD-drive
Пользователь
Регистрация
11.04.2023
Сообщения
41
Реакции
-6
Не могу извлечь метод из dll файла, получаю ошибку "panic: Failed to find addOne procedure in file_x64.dll: The specified procedure could not be found."

Содержaние dll
Код:
package main

import "C"

func main() {}

// export addOne
func addOne(val float64) float64 {
    return val + 1.0
}

// export sayHello
func sayHello(val *C.char) *C.char {
    return C.CString("Hello " + C.GoString(val))
}

Сборка: go build -o file_x64.dll -buildmode=c-shared -ldflags "-s -w" main.go

Попытка загрузить и выполнить dll
Код:
package main

import (
    "fmt"

    "github.com/ying32/dylib"
)

var (
    lib    = dylib.NewLazyDLL("file_x64.dll")
    _Func1 = lib.NewProc("addOne")
)

func Func1(a2 float64) float64 {
    r, _, _ := _Func1.Call(uintptr(a2))
    return float64(r)
}

func main() {
    g := Func1(2.0)
    fmt.Println(g)
}
 
Выглядит так будто таблица импорта у либы кривая.

(я не го кодер)

Посмотри действительно ли тебе выдало длл, потом проверь таблицу импорта. Затем попробуй вызвать не своей тулзой, а скажем rundll вызвать метод.

как еще вариант(если функциив таблицу не попали) то //export
у тебя с пробелом

Вообще, команда для сбора вроде верна(маны пишут так собирать)

Возможно то чем ты вызываешь как то не корректно грузит либу...
 
Последнее редактирование:
Выглядит так будто таблица импорта у либы кривая.

(я не го кодер)

Посмотри действительно ли тебе выдало длл, потом проверь таблицу импорта. Затем попробуй вызвать не своей тулзой, а скажем rundll вызвать метод.

как еще вариант(если функциив таблицу не попали) то //export
у тебя с пробелом

Вообще, команда для сбора вроде верна(маны пишут так собирать)

Возможно то чем ты вызываешь как то не корректно грузит либу...
Спасибо, попробую через rundll и уберу пробел в экспорте (не подумал об этом)
 
use if err nil error checks
did you add the lib from github with 'go get' to work path?
also you should be able to use log.printf instead of fmt
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх