开发者

converting a binary file to HEX representation using batch file

开发者 https://www.devze.com 2023-02-03 05:43 出处:网络
I need to convert a DLL file to HEX representation to use it as a part of string to create a sql server assembly like this

I need to convert a DLL file to HEX representation to use it as a part of string to create a sql server assembly like this

CREATE ASSEMBLY [AssemblyNameHere]

FROM 0x4D5A90000300000004000000FFFF000......continue binary data

WITH PERMISSION_SET = EXTERNAL_ACCESS

开发者_Python百科

I need this to be in a batch file for many reasons, but it seems that FOR statement only suitable for text files.


the easiest way is with CERTUTIL command:

certutil -encodehex c:\myfile.dll myfile.hex


It is not a very good idea to create a hex output with pure batch.

But you could use vbscript or for simple tasks FC.exe could work.

@echo off
SETLOCAL EnableDelayedExpansion
set filesize=%~z1
set "hexVal=41"
set "x10=AAAAAAAAAA"

set /a chunks=1+filesize / 10

del dummy.txt 2>nul > nul
for /L %%n in (0,1,%chunks%) DO (
  <nul >> dummy.txt set /p ".=%x10%"
)

set /a expectedNum=0
for /F "eol=F usebackq tokens=1,2 skip=1 delims=:[] " %%A in (`fc /b "%~dpf1" dummy.txt`) DO (
    set /a num=0x%%A && (
            set /a numDec=num-1
        set "hex=%%B"

        for /L %%n in (!expectedNum!=,=1 !numDec!) DO (
            echo %hexVal%
        )
        set /a expectedNum=num+1
        echo !hex!
    )
)

First I create a file with (nearly) the same length, and then I compare them with FC in binary mode (/B), the output is scanned and if a line missings are detected, they are filled with the hexVal of the x10 string (in this case 0x41='A').

0

精彩评论

暂无评论...
验证码 换一张
取 消