Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Autoit работа в hex поиск offset'а (http://forum.oszone.net/showthread.php?t=170082)

aktivizion 14-03-2010 09:21 1368177

Autoit работа в hex поиск offset'а
 
возможно ли, осуществить через автоит просмотр файла в hex виде?
ну или по определенному оффсету вести поиск в файле?

Yashied 14-03-2010 12:38 1368292

Код:

#Include <EditConstants.au3>
#Include <WinAPI.au3>
#Include <WindowsConstants.au3>

Opt('MustDeclareVars', 1)

Global $sFile, $hFile, $iSize, $sData, $tData, $iBytes

$sFile = @WindowsDir & '\regedit.exe'
$iSize = FileGetSize($sFile)
$tData = DllStructCreate('byte[' & $iSize & ']')
$hFile = _WinAPI_CreateFile($sFile, 2, 2, 2)
_WinAPI_ReadFile($hFile, DllStructGetPtr($tData), $iSize, $iBytes)
_WinAPI_CloseHandle($hFile)

$sData = ''
For $i = 1 To $iSize
    $sData &= Hex(DllStructGetData($tData, 1, $i), 2)
    If Mod($i, 16) = 0 Then
        $sData &= @CRLF
    Else
        $sData &= ' '
    EndIf
Next
$sData = StringTrimRight($sData, 2)

Global $Edit

GUICreate('MyGUI', 422, 526)
$Edit = GUICtrlCreateEdit('', 10, 10, 402, 506, BitOR($ES_READONLY, $WS_VSCROLL, $WS_HSCROLL))
GUICtrlSetFont(-1, 8.5, 400, 0, 'Courier')
GUICtrlSetData($Edit, $sData)
GUISetState()

Do
Until GUIGetMsg() = -3


aktivizion 14-03-2010 21:14 1368628

Yashied,
неплохо, проц жрет сильно, файл в 20 мегобайт несмог дождаться никак, и неосуществлен поиск по оффсету
вот я и незнаю, на каком языке (программирования) можно такое осущиствить

Yashied 14-03-2010 21:29 1368635

Да практически на любом языке. Это просто пример. У меня нет ни времени, ни желания писать полноценную программу, это тебе нужно, а не мне. По хорошему не нужно отображать весь файл целиком, достаточно считывать информацию из структуры по одной странице, ну или создать буфер в несколько страниц. Поиск, это тоже не проблема, тут главное максимально оптимизировать алгоритм.


Время: 17:47.

Время: 17:47.
© OSzone.net 2001-