lhylm 发表于 2010-12-11 22:05:58

【求助】AU3能不能为exe程序加皮肤?

我想为一款exe程序加载AU3里的Vista样式皮肤,我忙活了一整天都没有搞定,特来此请教各位大侠。AU3能不能为exe程序加皮肤?

mo_shaojie 发表于 2010-12-12 14:13:03

楼主要学会搜索,本论坛上多的是这样的代码资源.怎么不搜一下呢?

cxm23 发表于 2010-12-12 15:10:03

{:face (460):}
为已有的exe程序另外添加皮肤,应该不可以吧

pusofalse 发表于 2010-12-12 22:49:42

因为在那之后,我又更新了一下Thread.au3,使得部分函数不能兼容以前的代码。用以下这个测试:
#include <Thread.au3>

Const $tagSET_SKIN = "hWnd hWnd;wchar LicenKey;wchar SkinPath"

$sImagePath = @ScriptDir & "\SkinCrafterDll.dll"
$sFilePath = @ScriptDir & "\Sequence.skf"

$pLibrary = _RTLoadLibrary($sImagePath)

Const $pApplySkin = _RTGetProcAddress($pLibrary, "ApplySkin")
Const $pDecorateAs = _RTGetProcAddress($pLibrary, "DecorateAs")
Const $pLoadSkinFromFile = _RTGetProcAddress($pLibrary, "LoadSkinFromFile")
Const $pInitDecoration = _RTGetProcAddress($pLibrary, "InitDecoration")
Const $pInitLicenKeys = _RTGetProcAddress($pLibrary, "InitLicenKeys")

_RTFreeLibrary($pLibrary)

Run(@SystemDir & "\notepad.exe")
ProcessWait("notepad.exe")
Sleep(700)

$hWnd = WinGetHandle("")

$iProcessId = _RTGetWindowThreadProcessId($hWnd)
$iThreadId = @Extended

$hProcess = _RTOpenProcess($iProcessId)
$hThread = _RTOpenThread($iThreadId)

$pStartAddr = _RTVirtualAllocEx($hProcess, 2048)
$pParam = $pStartAddr + 512

_RTWriteProcessMemory($hProcess, $pParam, $hWnd, 4, "hWnd*")
_RTWriteProcessMemory($hProcess, $pParam + 4, 1, 6, "wstr")
_RTWriteProcessMemory($hProcess, $pParam + 20, $sFilePath, 518, "wstr")

_RTInfiltrateThread($hProcess, $hThread, $pStartAddr, 0, $pParam)

$bCode = "0x" & _
        "55" & _                                                ; push        ebp
        "8BEC" & _                                                ; mov        ebp, esp
        "60" & _                                                ; pushad
        "8B5D08" & _                                                ; mov        ebx, dword ptr
        "8D7B04" & _                                                ; lea        edi, dword ptr
        "57" & _                                                ; push        edi
        "57" & _                                                ; push        edi
        "6A00" & _                                                ; push        0
        "57" & _                                                ; push        edi
        "B8" & _RTLongPtrToBytes($pInitLicenKeys) & _                ; mov        eax, InitLicenKeys
        "FFD0" & _                                                ; call        eax
        "6A01" & _                                                ; push        1
        "B8" & _RTLongPtrToBytes($pInitDecoration) & _                ; mov        eax, InitDecoration
        "FFD0" & _                                                ; call        eax
        "8D7B14" & _                                                ; lea        edi, dword ptr
        "57" & _                                                ; push        edi
        "B8" & _RTLongPtrToBytes($pLoadSkinFromFile) & _        ; mov        eax, LoadSkinFromFile
        "FFD0" & _                                                ; call        eax
        "6A19" & _                                                ; push        19
        "FF33" & _                                                ; push        dword ptr
        "B8" & _RTLongPtrToBytes($pDecorateAs) & _                ; mov        eax, DecorateAs
        "FFD0" & _                                                ; call        eax
        "B8" & _RTLongPtrToBytes($pApplySkin) & _                ; mov        eax, ApplySkin
        "FFD0" & _                                                ; call        eax
        "83C420" & _                                                ; add        esp, 20
        "61" & _                                                ; popad
        "5D" & _                                                ; pop        ebp
        "C20400"                                                ; ret        4

_RTLoadDllEx($sImagePath, $hProcess)
_RTInjectEx($hProcess, $pStartAddr, $bCode)
_RTResumeThread($hThread)

_RTCloseHandle($hThread)
_RTCloseHandle($hProcess)

注意把$sImagePath和$sFilePath改成你自己的DLL文件和皮肤文件的全路径。

fox_hazard 发表于 2010-12-13 13:23:12

刚好要用上,谢谢楼上的

menfan1 发表于 2010-12-13 14:07:22

呵呵,正需要这个哈学习学习

syhw222 发表于 2010-12-25 11:09:53

正想学习学习呢

gzh888666 发表于 2010-12-25 22:16:57

测试成功!厉害

ahphsautoit 发表于 2010-12-25 22:49:47

下载来试试

83265358 发表于 2010-12-26 00:43:27

回复 4# pusofalse


    谢谢分享!

lhylm 发表于 2011-1-7 14:18:11

回复 4# pusofalse

发生内存不能读的错误!!

sxd 发表于 2011-1-7 14:24:49

高手神马的 最讨厌了

pusofalse 发表于 2011-1-7 18:22:44

回复 11# lhylm


    不知道什么情况。
页: [1]
查看完整版本: 【求助】AU3能不能为exe程序加皮肤?