dll来源: https://www.irfanview.com/plugins.htm#UpdatedPlugins
我想调用WebP.dll来解析webp的图片提供给web页面展示,webp只是测试,目标格式为psd、jxl等浏览器不支持的格式
IDA:
Name Address Ordinal
GetPlugInInfo 00000001800012E0 1
ReadAnimatedWebP_W 0000000180001380 2
ReadWebP_W 0000000180001840 3
SaveWebP_W 0000000180002000 4
ScanWEBP_W 00000001800023E0 5
ShowPlugInSaveOptions_W 0000000180002580 6
DllEntryPoint 0000000180066DFC [main entry]
比如这个
ScanWEBP_W
; Exported entry 5. ScanWEBP_W
; __int64 __fastcall ScanWEBP_W(wchar_t *FileName)
public ScanWEBP_W
ScanWEBP_W proc near
var_128= qword ptr -128h
var_120= qword ptr -120h
var_118= byte ptr -118h
var_10C= dword ptr -10Ch
var_50= dword ptr -50h
var_28= qword ptr -28h
var_18= qword ptr -18h
arg_8= qword ptr 10h
arg_10= qword ptr 18h
; __unwind { // __GSHandlerCheck
push rbx
push rbp
sub rsp, 138h
mov rax, cs:__security_cookie
xor rax, rsp
mov [rsp+148h+var_28], rax
mov rbx, rcx
lea rcx, [rsp+148h+var_118]
mov edx, 209h
xor ebp, ebp
call sub_180003AD0
test eax, eax
jz loc_180002562
ReadWebP_W
; Exported entry 3. ReadWebP_W
; Attributes: bp-based frame fpd=0F0h
; __int64 __usercall ReadWebP_W@<rax>(wchar_t *FileName@<rcx>, __int64)
public ReadWebP_W
ReadWebP_W proc near
var_1D0= dword ptr -1D0h
var_1C0= byte ptr -1C0h
var_1BF= byte ptr -1BFh
var_1BE= byte ptr -1BEh
Block= qword ptr -1B8h
var_1B0= qword ptr -1B0h
var_1A8= qword ptr -1A8h
hMem= qword ptr -1A0h
var_198= qword ptr -198h
var_190= qword ptr -190h
var_180= byte ptr -180h
var_170= dword ptr -170h
var_16C= dword ptr -16Ch
var_158= qword ptr -158h
var_150= qword ptr -150h
var_148= dword ptr -148h
var_130= dword ptr -130h
var_12C= dword ptr -12Ch
var_128= dword ptr -128h
var_124= dword ptr -124h
var_120= dword ptr -120h
var_108= dword ptr -108h
var_104= dword ptr -104h
var_100= dword ptr -100h
Src= qword ptr -0F8h
var_F0= dword ptr -0F0h
var_74= dword ptr -74h
var_70= dword ptr -70h
var_6C= dword ptr -6Ch
var_68= dword ptr -68h
var_40= qword ptr -40h
var_30= qword ptr -30h
arg_8= qword ptr 18h
arg_20= qword ptr 30h
; __unwind { // __GSHandlerCheck
push rbp
push rbx
push rsi
push rdi
push r13
push r15
lea rbp, [rsp-0C8h]
sub rsp, 1C8h
mov rax, cs:__security_cookie
xor rax, rsp
mov [rbp+0F0h+var_40], rax
mov rsi, [rbp+0F0h+arg_20]
mov rdi, r8
xor r8d, r8d
mov r15, rcx
lea rcx, aUnknownWebpFil ; "Unknown WebP file"
mov rdx, rdi
mov r13, r9
mov [rsp+1F0h+var_1A8], r8
sub rdx, rcx
xchg ax, ax
但我尝试调用程序就崩溃了(我没有相关知识,代码来源网络)
handle, _ := syscall.LoadLibrary("d:/WebP.dll")
defer syscall.FreeLibrary(handle)
p, _ := syscall.GetProcAddress(handle, "ScanWEBP_W")
wcFileName, _ := syscall.UTF16PtrFromString("d:/0.webp")
ret, _, err := syscall.SyscallN(p, uintptr(unsafe.Pointer(wcFileName)))
// // 检查错误
// if err != nil {
// panic(err)
// }
// r1, r2, errorNo := syscall.SyscallN(p)
fmt.Println(int64(ret), err)
请问我该怎么调用呢?
谢谢
WebP.dll
不确定这个dll是否正确。
如果你要用go解析webp或者psd等格式的图片转为png,可以使用go的库完成。
package main
import (
"fmt"
"github.com/chai2010/webp"
"image"
"image/png"
"os"
)
func webpToPng(webpPath string, pngPath string) {
// 打开 webp 文件
file, err := os.Open(webpPath)
if err!= nil {
fmt.Println("Error opening webp file:", err)
return
}
defer file.Close()
// 解码 webp 图像
img, err := webp.Decode(file)
if err!= nil {
fmt.Println("Error decoding webp image:", err)
return
}
// 创建 png 文件
outFile, err := os.Create(pngPath)
if err!= nil {
fmt.Println("Error creating png file:", err)
return
}
defer outFile.Close()
// 编码为 png 格式
err = png.Encode(outFile, img)
if err!= nil {
fmt.Println("Error encoding to png:", err)
return
}
}
func main() {
webpFile := "your_webp_file.webp"
pngFile := "converted.png"
webpToPng(webpFile, pngFile)
}
package main
import (
"fmt"
"github.com/akavel/rsrc"
"image"
"image/png"
"os"
)
func parsePSDToPNG(psdPath string, pngPath string) {
// 打开 PSD 文件
file, err := os.Open(psdPath)
if err!= nil {
fmt.Println("Error opening PSD file:", err)
return
}
defer file.Close()
img, _, err := image.Decode(file)
if err!= nil {
fmt.Println("Error decoding PSD image:", err)
return
}
// 创建 PNG 文件
outFile, err := os.Create(pngPath)
if err!= nil {
fmt.Println("Error creating PNG file:", err)
return
}
defer outFile.Close()
// 编码为 PNG 格式
err = png.Encode(outFile, img)
if err!= nil {
fmt.Println("Error encoding to PNG:", err)
return
}
}
func main() {
psdFile := "your_psd_file.psd"
pngFile := "converted.png"
parsePSDToPNG(psdFile, pngFile)
}
问题内容: 我正在编写一个调用Windows DLL的Go应用程序。该DLL是用MSVC编写的,并且使用__declspec(dllexport)具有外部“ C”导出。 我的Go应用程序的顶部如下: 我从这样的模块中调用函数: 问题是,当我尝试运行此应用程序时,出现以下错误: 我用DUMPBIN查看了DLL导出的符号,它确切显示了“moduleImpl_len”作为导出的符号。这也是MyModul
我提供了一个第三方sdk。dll和tlb。它可以与WPF一起工作,但当我将其添加到UWP项目时,一旦我到达使用它抛出的sdk的屏幕 使用CoCreateInstanceFromApp的具有CLSID{DBA84AA0-3342-4AF0-96ED-3D8D08D544F3}的COM组件实例由于以下错误而失败:80040154类未注册(HRESULT的例外:0x80040154(REGDB_E_CL
在本章中,我们将查看 Android 应用程序或.apk文件,并了解其不同的组件。 我们还将使用工具(如 Apktool,dex2jar 和 jd-gui)来逆向应用程序。 我们将进一步学习如何通过逆向和分析源代码来寻找 Android 应用程序中的各种漏洞。 我们还将使用一些静态分析工具和脚本来查找漏洞并利用它们。 3.1 Android 应用程序拆解 Android 应用程序是在开发应用程序时
我是保险丝骆驼的新手,cxf。 我想调用第三方web服务。我不想使用wsld2java或serviceclass。我有一个wsdl。 下面是进行通用 Web 服务调用的要求 json请求数据- 1.如何将json转换为soaprequest(xml),反之亦然(Marshall格式soapjxab需要jaxb注释类)2.如何在有效负载模式下调用soap。。 任何帮助(链接/示例)将不胜感激。 谢谢
参数是前台传过来的,路径自带引号,考虑到空格问题,不能去 我知道可以不经过cmd调用,但出于个人理由此处不使用 输出结果为: 2024/03/19 17:38:41 exit status 1: �ļ�����Ŀ¼�������������ȷ�� 乱码我已经放弃了,谷歌了很久没有能解决的,大家有好办法欢迎回答。 改为 很神奇,不报错了,但乱码还是不变的——虽然不知道什么内容 还有一个尝试: 修改
在Xamarin中以发布模式运行我的应用程序时,我在仅链接SDK程序集上遇到以下错误: /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets:错误:执行任务时出错:错误XA2006:引用元数据项'System.IO.端口。SerialPort(在EftPay