2017/03/09(Thu)バイナリーファイル内の特定アドレス範囲にパッチする方法
2017/03/09 1:58
ddを使うとワンラインでできそうだったので試してみる。
解答
Windowsだとddがないので、ここらあたりから拝借。バッチファイルとして保存して、複数ファイルをD&Dで処理。
@echo off cd /d %~dp0 for %%f in (%*) do ( dd.exe if=/dev/zero of=%%f bs=1 count=100 seek=200 ) pauseこれで、ofに指定されたファイルの200バイト目(0xC8)~100バイト分を0x00で埋めることが出来る。
bs(blocksize)を1バイトにして、countの繰り返し数をバイト数しつつ、seekで位置をずらすのがミソ。
埋める値が0x00でなければ、ファイルをinputにしてもよい。入力側のoffsetをずらすには、skip=で指定する。
このときconv=notruncも指定しないとifのファイルサイズにofが引きずられるので注意。
*nix系のddでも勿論できるはず。