补丁应用工具
rdiff
bsdiff/bspatch
git diff/apply
首先git diff/apply --binary仅限git仓库使用
制作两个不同的二进制文件
$ as --32 -o hello.o hello.s
$ ld -melf_i386 -o hello hello.o
$ cp hello hello.nihao
$ echo “nihao world” > nihao.txt
$ objcopy --update-section .rodata=nihao.txt hello.nihao
$ ./hello ==> Hello world
$ ./hello.nihao ==>nihao world
rdiff的使用
制作差分patch
$ rdiff signature hello hello.sig
$ rdiff delta hello.sig hello.nihao hello.patch
打上差分patch
$ rdiff patch hello hello.patch hello.new
验证
$ chmod a+x hello.new
$ ./hello.new ==> nihao world
bsdiff/bspatch的使用
制作差分patch
$ bsdiff hello hello.nihao hello.patch
打上差分patch
$ bspatch hello hello.new hello.patch
验证
$ chmod a+x hello.new
$ ./hello.new ==> nihao world