Любой язык - Помогите написать скрипт Swiss File Knife (SFK)
-
Vovusja
Любой язык - Помогите написать скрипт Swiss File Knife (SFK)
Добрый день, помогите кто разбирается в Swiss File Knife.
Требуется найти файл с определенным именем (файлов будет несколько штук во вложенных папках)
Открыть его в Двоичном режиме и перейти к определенному смещению,
Сравнить пару байт от этого смещения с определенной маской, если совпадают - то Записать с этого смещения содержимое другого файла (с известным именем, например File.tmp)
Если содержимое не слвпадает с маской, то перейти к другому адресу и так же сравнить и если совпало - то Записать содержимое из файла File.tmp
И так далее, пока не перезапишет каждый файл
Требуется найти файл с определенным именем (файлов будет несколько штук во вложенных папках)
Открыть его в Двоичном режиме и перейти к определенному смещению,
Сравнить пару байт от этого смещения с определенной маской, если совпадают - то Записать с этого смещения содержимое другого файла (с известным именем, например File.tmp)
Если содержимое не слвпадает с маской, то перейти к другому адресу и так же сравнить и если совпало - то Записать содержимое из файла File.tmp
И так далее, пока не перезапишет каждый файл
-
Iska
Re: Любой язык - Помогите написать скрипт Swiss File Knife (SFK)
Vovusja, почему именно Swiss File Knife?
-
Vovusja
Re: Любой язык - Помогите написать скрипт Swiss File Knife (SFK)
Я так понимаю в этом варианте проверяются Четыре байта по смещению 0x100
у всех файлов Sample.exe, и записывается код из Patch.bin ?
у всех файлов Sample.exe, и записывается код из Patch.bin ?
-
Iska
Re: Любой язык - Помогите написать скрипт Swiss File Knife (SFK)
Был опыт написания Бат файлов в cmd,
Мне показалось что это похоже, и легче освоить.
На самом деле разницы нет, просто другое не знаю.
Мне показалось что это похоже, и легче освоить.
На самом деле разницы нет, просто другое не знаю.
-
Vovusja
Re: Любой язык - Помогите написать скрипт Swiss File Knife (SFK)
Цитата Vovusja:
На самом деле разницы нет, просто другое не знаю.
Vovusja, тогда куда проще будет использовать PowerShell. Что-то наподобие такого (без каких-либо проверок и т.п.):
Код:
На самом деле разницы нет, просто другое не знаю.
Любой язык - Помогите написать скрипт Swiss File Knife (SFK)
Vovusja, тогда куда проще будет использовать PowerShell. Что-то наподобие такого (без каких-либо проверок и т.п.):
Код:
Код: Выделить всё
$sSourceFolder = 'C:\Мои проекты\0036\Sample'
$sSourceFileMask = 'Sample.exe'
$sPatchFile = 'C:\Мои проекты\0036\Patch.bin'
$iPosition = 0x100
$aByteTemplate = [System.Byte[]](0x0B, 0x02, 0x09, 0x00)
$aBuffer = New-Object -TypeName System.Byte[] -ArgumentList $aByteTemplate.Length
Get-ChildItem -Path $sSourceFolder -Recurse -File -Include $sSourceFileMask -Force |`
ForEach-Object -Begin {
$aPatchContent = [System.Byte[]](Get-Content -Encoding Byte -Path $sPatchFile)
} -Process {
Write-Host $_.FullName -ForegroundColor Yellow -NoNewline
$oFileStream = $_.Open([System.IO.FileMode]::Open, [System.IO.FileAccess]::ReadWrite)
try {
$oFileStream.Seek($iPosition, [System.IO.SeekOrigin]::Begin) | Out-Null
$oFileStream.Read($aBuffer, 0, $aByteTemplate.Length) | Out-Null
if (([System.Collections.IStructuralEquatable]$aByteTemplate).Equals($aBuffer, [System.Collections.StructuralComparisons]::StructuralEqualityComparer)) {
$oFileStream.Seek($iPosition, [System.IO.SeekOrigin]::Begin) | Out-Null
$oFileStream.Write($aPatchContent, 0, $aPatchContent.Length) | Out-Null
Write-Host "`tOk" -ForegroundColor Green
} else {
Write-Host "`tCan't find bytes template in file content" -ForegroundColor Red
}
} finally {
$oFileStream.Close()
}
}-
Vovusja
Re: Любой язык - Помогите написать скрипт Swiss File Knife (SFK)
Спасибо, если если заработает - отблагодарю.
-
Vovusja
Re: Любой язык - Помогите написать скрипт Swiss File Knife (SFK)
Спасибо, если если заработает - отблагодарю.
-
Vovusja
Re: Любой язык - Помогите написать скрипт Swiss File Knife (SFK)
Цитата Vovusja:
Iska у вас превышен Лимит сообщений, хотел написать вам в Л.С.
Ага. Пишите здесь.
Iska у вас превышен Лимит сообщений, хотел написать вам в Л.С.
Любой язык - Помогите написать скрипт Swiss File Knife (SFK)
Ага. Пишите здесь.
-
Vovusja
Re: Любой язык - Помогите написать скрипт Swiss File Knife (SFK)
Подскажите пожалуйста подробнее, что к чему в этом скрипте?
Если просто Поиск значеиния без Указания Адреса - так можно?
Если просто Поиск значеиния без Указания Адреса - так можно?
-
Vovusja
Re: Любой язык - Помогите написать скрипт Swiss File Knife (SFK)
Цитата Vovusja:
Если просто Поиск значеиния без Указания Адреса - так можно?
Можно. Но для этого потребуется другой код. В этом же — строго по ТЗ:
Цитата Vovusja:
перейти к определенному смещению,
Сравнить пару байт от этого смещения с определенной маской, если совпадают - то…
Опишите саму Вашу задачу.
Если просто Поиск значеиния без Указания Адреса - так можно?
Любой язык - Помогите написать скрипт Swiss File Knife (SFK)
Можно. Но для этого потребуется другой код. В этом же — строго по ТЗ:
Цитата Vovusja:
перейти к определенному смещению,
Сравнить пару байт от этого смещения с определенной маской, если совпадают - то…
Любой язык - Помогите написать скрипт Swiss File Knife (SFK)
Опишите саму Вашу задачу.