So https://github.com/ChromiumWebApps/c...ster/courgette
Courgette is an exe diff utility used for chrome browser updates.
In particular, it includes a disasm preprocessor.
http://nishi.dreamhosters.com/u/courgette2016.rar (exe only)
http://nishi.dreamhosters.com/u/courgette2016_v0.rar (exe+sources)
Code:
Must have exactly one of:
-supported -asm, -dis, -disadj, -gen or -apply, -genbsdiff or -applybsdiff.
Usage:
courgette -supported <executable_file>
courgette -dis <executable_file> <binary_assembly_file>
courgette -asm <binary_assembly_file> <executable_file>
courgette -disadj <executable_file> <reference> <binary_assembly_file>
courgette -gen <v1> <v2> <patch>
courgette -apply <v1> <patch> <v2>
It supports pe/elf x86/x64/arm which is kinda cool.
But results are a bit uncertain...
Code:
Effects of disasm filter on file compression:
1,606,656 7z_dll 1,642,623 7z_dll_dis // courgette.exe -dis 7z_dll 7z_dll_dis (x64)
537,691 1.plz 508,689 2.plz // plzma c
549,773 1.7z 521,212 2.7z // 7z a -mx=9 -m0=lzma
497,590 1a.7z 521,212 2a.7z // 7z a -mx=9 -myx=9 -m0=lzma
360,854 1.paq8p 384,534 1.paq8p // paq8p -7
As to actual diff performance, I guess it improved (see also http://encode.su/threads/582-Executa...ration-methods )
Code:
Performance comparison of actual diff methods (bsdiff/bsdiff_sh/courgette-with-disasm)
2,031,104 7z1.dll
2,046,976 7z2.dll
2,079,913 7z1_dis // courgette.exe -dis 7z1.dll 7z1_dis
2,096,071 7z2_dis // courgette.exe -dis 7z2.dll 7z2_dis
365,079 12_dll_bs // courgette.exe -genbsdiff 7z1.dll 7z2.dll 12_dll_bs
353,132 12_dll_bsh // bsdiff_sh2 7z1_dis 7z2_dis 12_dis_bsh
231,263 12_dis_bs // courgette.exe -genbsdiff 7z1_dis 7z2_dis 12_dis
231,239 12_dis_bsh // bsdiff_sh2 7z1.dll 7z2.dll 12_dll_bsh
116,738 12_dll // courgette.exe -gen 7z1_dis 7z2_dis 12 (implies -dis?)
159,811 12_dll_bs.7z // 7z a -mx=9 -myx=9 12_dll_bs 12_dll_bs
150,584 12_dll_bsh.7z // 7z a -mx=9 -myx=9 12_dis_bsh 12_dis_bsh
121,732 12_dis_bsh.7z // 7z a -mx=9 -myx=9 12_dll_bsh 12_dll_bsh
120,376 12_dis_bs.7z // 7z a -mx=9 -myx=9 12_dis_bs 12_dis_bs
75,730 12_dll.7z // 7z a -mx=9 -myx=9 12_dll 12_dll