From 1f49265f29459295bc1b66c53da3de9e99a9370e Mon Sep 17 00:00:00 2001 From: longpanda Date: Sat, 8 Jan 2022 23:07:04 +0800 Subject: [PATCH] 1.0.64 release --- BUSYBOX/chmod/build.sh | 16 +- BUSYBOX/chmod/vtchmod.c | 23 +- BUSYBOX/chmod/vtchmod32 | Bin 6224 -> 6384 bytes BUSYBOX/chmod/vtchmod64 | Bin 6800 -> 7024 bytes BUSYBOX/chmod/vtchmod64_musl | Bin 5320 -> 9416 bytes BUSYBOX/chmod/vtchmodaa64 | Bin 92016 -> 96112 bytes BUSYBOX/chmod/vtchmodm64e | Bin 9064 -> 12800 bytes DMPATCH/Makefile | 7 + DMPATCH/dmpatch.c | 179 ++++++ DMPATCH/readme.txt | 35 ++ .../Application/VDiskChain/VDiskChain.c | 6 + .../MdeModulePkg/Application/Ventoy/Ventoy.c | 79 +++ .../Application/Ventoy/Ventoy.inf | 1 + .../grub-2.04/grub-core/ventoy/ventoy_cmd.c | 8 + GRUB2/MOD_SRC/grub-2.04/include/grub/ventoy.h | 1 + IMG/cpio/sbin/init | 7 + IMG/cpio/ventoy/hook/ventoy-hook-lib.sh | 197 ++++++- IMG/cpio_arm64/ventoy/busybox/vtchmodaa64 | Bin 92016 -> 96112 bytes IMG/cpio_mips64/ventoy/busybox/vtchmodm64e | Bin 9064 -> 12800 bytes IMG/cpio_x86/ventoy/busybox/vtchmod32 | Bin 6224 -> 6384 bytes IMG/cpio_x86/ventoy/busybox/vtchmod64 | Bin 6800 -> 7024 bytes IMG/cpio_x86/ventoy/busybox/vtchmod64_musl | Bin 5320 -> 9416 bytes IMG/cpio_x86/ventoy/tool/dm_patch_64.ko | Bin 0 -> 7080 bytes INSTALL/grub/grub.cfg | 2 +- Plugson/src/Web/ventoy_http.c | 8 + Plugson/src/Web/ventoy_http.h | 1 + .../VentoyPlugson/Release/VentoyPlugson.exe | Bin 320000 -> 320000 bytes Plugson/www/buildtime | 2 +- Plugson/www/index.html | 2 +- Plugson/www/plugson_control.html | 54 ++ README.md | 4 +- VtoyTool/vtoykmod.c | 546 ++++++++++++++++++ VtoyTool/vtoyksym.c | 113 ++++ VtoyTool/vtoytool.c | 4 + VtoyTool/vtoytool/00/vtoytool_32 | Bin 65772 -> 70392 bytes VtoyTool/vtoytool/00/vtoytool_64 | Bin 65456 -> 74320 bytes VtoyTool/vtoytool/00/vtoytool_aa64 | Bin 153824 -> 157920 bytes VtoyTool/vtoytool/00/vtoytool_m64e | Bin 155808 -> 164000 bytes 38 files changed, 1277 insertions(+), 18 deletions(-) create mode 100644 DMPATCH/Makefile create mode 100644 DMPATCH/dmpatch.c create mode 100644 DMPATCH/readme.txt create mode 100644 IMG/cpio_x86/ventoy/tool/dm_patch_64.ko create mode 100644 VtoyTool/vtoykmod.c create mode 100644 VtoyTool/vtoyksym.c diff --git a/BUSYBOX/chmod/build.sh b/BUSYBOX/chmod/build.sh index 5db2ae74..e72bc10a 100644 --- a/BUSYBOX/chmod/build.sh +++ b/BUSYBOX/chmod/build.sh @@ -1,9 +1,11 @@ #!/bin/sh -DSTDIR=../../IMG/cpio/ventoy/busybox +DSTDIR1=../../IMG/cpio_x86/ventoy/busybox +DSTDIR2=../../IMG/cpio_arm64/ventoy/busybox +DSTDIR3=../../IMG/cpio_mips64/ventoy/busybox rm -f vtchmod32 vtchmod64 vtchmod64_musl vtchmodaa64 -rm -f $DSTDIR/vtchmod32 $DSTDIR/vtchmod64 $DSTDIR/vtchmodaa64 $DSTDIR/vtchmodm64e +rm -f $DSTDIR1/vtchmod32 $DSTDIR1/vtchmod64 $DSTDIR2/vtchmodaa64 $DSTDIR3/vtchmodm64e /opt/diet32/bin/diet gcc -Os -m32 vtchmod.c -o vtchmod32 /opt/diet64/bin/diet gcc -Os vtchmod.c -o vtchmod64 @@ -23,9 +25,9 @@ chmod 777 vtchmodaa64 chmod 777 vtchmod64_musl chmod 777 vtchmodm64e -cp -a vtchmod32 $DSTDIR/ -cp -a vtchmod64 $DSTDIR/ -cp -a vtchmodaa64 $DSTDIR/ -cp -a vtchmod64_musl $DSTDIR/ -cp -a vtchmodm64e $DSTDIR/ +cp -a vtchmod32 $DSTDIR1/ +cp -a vtchmod64 $DSTDIR1/ +cp -a vtchmod64_musl $DSTDIR1/ +cp -a vtchmodaa64 $DSTDIR2/ +cp -a vtchmodm64e $DSTDIR3/ diff --git a/BUSYBOX/chmod/vtchmod.c b/BUSYBOX/chmod/vtchmod.c index 5a9d833f..ad10d0e8 100644 --- a/BUSYBOX/chmod/vtchmod.c +++ b/BUSYBOX/chmod/vtchmod.c @@ -1,5 +1,8 @@ +#include +#include #include #include +#include int main(int argc, char **argv) { @@ -7,7 +10,25 @@ int main(int argc, char **argv) { return 1; } - + + if (argv[1][0] == '-' && argv[1][1] == '6') + { + struct utsname buf; + if (0 == uname(&buf)) + { + if (strstr(buf.machine, "amd64")) + { + return 0; + } + + if (strstr(buf.machine, "x86_64")) + { + return 0; + } + } + return 1; + } + return chmod(argv[1], 0777); } diff --git a/BUSYBOX/chmod/vtchmod32 b/BUSYBOX/chmod/vtchmod32 index 4b66db3ca7cf7876f82e3849c523ac8d768f1325..2647afb687d06c065e062763cadf2b4498f7cadb 100644 GIT binary patch delta 1795 zcmZ8iT}&KR6uvVI%eE}TK)3wF6|rtC*j0fdfzrf|kgByYK*LJIzXbwGu@-j~32_$| zXvfV)>u6#~AEXb)2hvbUO&c{u7YZ>n1$>ZL6^u366^yiK@c|vbGwhU!7w$dtopZi( z&i&oFytVvyGYW?L1ZyEOS^4u`Byl&qD@fAyC45yMl)VfAQnq z8hW<79>g4ysE17z>mDH-Lb`AL|B4@V(D&bJ;pUUF#+J<`dF>W81q`EmdBOS(f zSYSpA-|&aWlA~WB&sb0Nvib?v!*l$&lkewzw>C9R5uB0He>4q2uABm?wxO{;TphTf zy_7%UR-(rOtB#<@Ss1Ky<|!L@FDgsQH%j#G#f=4J@yNz}s6+DDZA_r{~S^C4Ga z$%^N}w=KnSUc1ukv??B_pg5cn2jUJ+coNE1mhvZ7cx5p#=|CP|eRym=T7cwkBvXD4 zp0)+wl!DLOf7!XY{;?-Mb0RRqH8zBsJ6nnhS$A>57-3ZEY_nK zI?7|ioGy?S+Mljwgy7dtq5azAu;pbJ2^Nk$3AX}I_6t^;b1LH*9iT(8Oyu7OOpW+yxN~P9?I!+vz&7w9*dE6F*a$wH zCWlXfb4>Uu@B#=;*l|kuH84$$5~A`Cm+uwn`95-`0#1r!H%8Mpvj*bYqo&zbmp zd{ERtk!MQqy4eBte&7)V$chC}fVtQbQos@5LKA-!*w}mt1z!RF+b>w@j*$PCz~7?4 z1He8~+=RlI5%z>F{SQZhw*w}yHQ@5tj48oiz*#7W?h)}Vc*M-{a)FI4%7#5{+x~)1 za6lm=09`ODC?`gM(D4)am_@~SsdZcqTx^r_j#r&)a_&8>cr_H^s?*6l(HEU!M&@5a_Q?Im5q zYdBTLYe6pLNBv+-Qo*zEn}wg<2m&1)Mrw!El=QvaQMCkPwc3oaR#h-Ish84AbLUV& jBD_-2i9zqt4s=stOu}n;Qr(^LNJcN7s18_-W~BQM#i(;7 delta 1281 zcmZ8gT}V@57=F*Uv$=F_XEt@FgqE<0Qd6WKi_)}+P;+G=K>n_4Q|>Afp%5xi0tulUi@>(v-Zb6e%V-u2kAJ zu>BN>L?_<+Cx&eEqcTTa5`#*3Ky)klb<5Fck6JJnhV5(pJ$w$)Cz_g1O$;s0KLSVc zt(xs~gUy9%V79|jwMC&C%_usl%4X=iY-$3od{bpnRpNe!paY0q&#@5ZPC|p=;=4f( z;11|5Z~<7VvU-His&ecN=rVXK^F*msjPW7#kGx`Zg=dZK)bN6_K@pF-q*ZH6j|8xd z5CguLgyeN?Q;{Wov;3h|N{?OhZDTGTr{KH}0OkVYfXGfMR1ce{ z!@MkSw`%68rjwvH*ot^Q$6o|y;rvXDS79Bx{2t&CZVC)-CgG!d_$kl@JOOs=@DOk_ z8n)onx#0*fFN_=Hqu~T>YrG))r+|4vu?2_}`ULzKe%=E1e}-M1fKSj%5c-0%z{QCI zXt1bD-~uj8B(c+WGSO{dzWb$I2mVsv)dqt01ABD!cp*u@4+&>M+|jMz8gQ8|p&vML zlo}@V0Qj$8HS^8n359^$kzXFi&w-N-;2&Ru-vKA;`82Fx21GR)A|ESAp)bHsQIM}Q z&WPsM6tIZZEzg7h-x@zZ&}roJHRlPY#p7XO*p8nT_>Dw4F~S96r*6gjfL{ls$x$LJ z9IvDyqfRzvl!pg1oQfRDY>-;k9x*LsUDn2YuF20Kf|n4%e?s{9S@z0jSuUkoe#KZT y6{kx%CJQk(O0RQwp&wbPh_XRBgCFBMDCne&Z6G=#UpTioZFtM4lROcY8I%8Euh+x? diff --git a/BUSYBOX/chmod/vtchmod64 b/BUSYBOX/chmod/vtchmod64 index 9c799581559cf7b18771e594822e632584618ebf..4d27c578cb82b28e448d9d89403dbb65d9ff566f 100644 GIT binary patch delta 2237 zcmZ`)4{Q@v7=OLCTgSF*2X4E8ux^<+V8j;2{(!LSPr^GN~a}SaL}AuDX&ja)xG-Gj=_d2pm4U;mPL7 z^Y(lE`Qs)^i)LQkytTh+*)bD*Xy30dV-Bi94RL=Pdr`yed!q4iNrHIJ;8Yb+u|_0P zqO|Wg=Tk;jw?x-a<>yCfczMD`mHaHxNn(51ep6Xt0X$bKHX1ykMh8}1KBKDYK;7jp z*;$iIh~+X-n36q{(j zI}$e|$EwvWo@P%=bl|nivr$I_4gO>6o<>8NG$hh+z(&K**r@#kwV$N5Lp1!zb>BJr zOA-6-28fyCJs2l}&q%}f z5Hf*Wgdyh^125aeqXp-1LN4^k0AVUNH z2e=8ie1hSCp+u0OrQ{o^B_NQ}68#9=fsQ8%GPIQZ0yR%ab!@EMC~!{f5oBn(@c#MH zzEfvb6vhLnAj2ai{BtP*L3%;iy1y*Q@JI=7kQZv)-24!7sRJJ1d-k|RP6EmA58474 z?o`kU;C!i_P``R68C23OPw^Q~mA{OXKNzHaqt*Zb delta 1657 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 DNho14 diff --git a/BUSYBOX/chmod/vtchmodaa64 b/BUSYBOX/chmod/vtchmodaa64 index 593c021f65ee5415f644e0ae1acf04a6e575b315..6c3811a16bb0c9144d35bef7991d8719846e1547 100644 GIT binary patch delta 9117 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 Itvv1j04&_Fp8x;= diff --git a/BUSYBOX/chmod/vtchmodm64e b/BUSYBOX/chmod/vtchmodm64e index 47e84be6fe0e055052c9691988f17af299fc230e..dc623d5259e4d35baf38735c4aab5e80a89309c7 100644 GIT binary patch delta 5342 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 delta 2002 zcmZWqU1%It6uvXFf3ut2%qD5Gvtu^fxY_QeX|jR3#!$=H)HakNiXQgUD57l%ZYn5h}n9n|^GK|&aZe?5qKq0j4*ZSCL^r;*(B zy>Xe&!l0C7FexR&be2=4lzWeS!!al{O40AZoL3Y`~ zYaG!0e+SmVO_zOO)NNBmY_H%>y8<)rHucfv%GT{G?<>7<+uc7SMP@wOIK5mcuF%<9 zgnVP&mBKDUKC~X<{ug^q2-DpW>s4IuS8PsACQ3phXPa2EtJduzAzxWCd1B}Gm06`1 zeYR`!WDNN}vS-LY~#17iNo@~943f7|W>qiqA;mZWrB|9{Ml@^Tq#ndd6C8{VA3~i zDn*l=@lnAsVXmF3l)T^xbhwAm^fWvbXjNq_TRTn^g_i?c(vnfgX zJIi#kM#*(7YX3Tsu3=*^D)=;D=<}$_({im>*N(DvH*qBh$*tdj2Z6@m0v>yTd5_O4 zUxHNkj%?~MQ+KOn;Oz=F<)%f*f|Ws16~}9A z$ArIw&701kJc5=Q>e@?`w9|QV7t*0lDFBB;yEAJS|MgtOR2bk;2GXbQar z>=`2j#)5Hp7)rrdy((RV*Xr9mYp8xng1-9LVzoXlK`Ep?M=oGESX3V#%K~ku6gxDv zenbwtR>r0ZQDV9*OGzkrLYQhmE%EiU~fPiAOedEJrxO*1RihTyaj=# zNUT@*k2iAt6!#k=JLFH` zk{nmyx9weir`35EM7y32I}LZEGkjJX;e(zS&@RpI%*JX2=DM=sUY!>T(S9QEpsU-T z6VjXx(eA9@`LDy78^rCX=ptT@bGW5qOLe&4oeev~RTdu0uqD&&k2@VRU@(*QI}?+_ sixIb`GcN|*&+L*>8tvKT-)Zoesxl1sWaaf1nCsc4*2TE=3Z~Th4+sDfKL7v# diff --git a/DMPATCH/Makefile b/DMPATCH/Makefile new file mode 100644 index 00000000..9a4243f1 --- /dev/null +++ b/DMPATCH/Makefile @@ -0,0 +1,7 @@ + +obj-m += dm_patch.o + +EXTRA_CFLAGS := -Wall + +dm_patch-objs := dmpatch.o + diff --git a/DMPATCH/dmpatch.c b/DMPATCH/dmpatch.c new file mode 100644 index 00000000..1106d79e --- /dev/null +++ b/DMPATCH/dmpatch.c @@ -0,0 +1,179 @@ +/****************************************************************************** + * dmpatch.c ---- patch for device-mapper + * + * Copyright (c) 2021, longpanda + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#define MAX_PATCH 4 + +#define magic_sig 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF + +typedef int (*kprobe_reg_pf)(void *); +typedef void (*kprobe_unreg_pf)(void *); +typedef int (*printk_pf)(const char *fmt, ...); +typedef int (*set_memory_attr_pf)(unsigned long addr, int numpages); + +#pragma pack(1) +typedef struct ko_param +{ + unsigned char magic[16]; + unsigned long struct_size; + unsigned long pgsize; + unsigned long printk_addr; + unsigned long ro_addr; + unsigned long rw_addr; + unsigned long reg_kprobe_addr; + unsigned long unreg_kprobe_addr; + unsigned long sym_get_addr; + unsigned long sym_get_size; + unsigned long sym_put_addr; + unsigned long sym_put_size; + unsigned long padding[3]; +}ko_param; + +#pragma pack() + +static printk_pf kprintf = NULL; +static set_memory_attr_pf set_mem_ro = NULL; +static set_memory_attr_pf set_mem_rw = NULL; +static kprobe_reg_pf reg_kprobe = NULL; +static kprobe_unreg_pf unreg_kprobe = NULL; + +static volatile ko_param g_ko_param = +{ + { magic_sig }, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + + +#define CODE_MATCH(code, i) \ + (code[i] == 0x40 && code[i + 1] == 0x80 && code[i + 2] == 0xce && code[i + 3] == 0x80) + +#define vdebug(fmt, args...) if(kprintf) kprintf(KERN_ERR fmt, ##args) + +static int notrace dmpatch_replace_code(unsigned long addr, unsigned long size, int expect, const char *desc) +{ + int i = 0; + int cnt = 0; + unsigned long align; + unsigned char *patch[MAX_PATCH]; + unsigned char *opCode = (unsigned char *)addr; + + vdebug("patch for %s 0x%lx %d\n", desc, addr, (int)size); + + for (i = 0; i < (int)size - 4; i++) + { + if (CODE_MATCH(opCode, i) && cnt < MAX_PATCH) + { + patch[cnt] = opCode + i + 3; + cnt++; + } + } + + if (cnt != expect || cnt >= MAX_PATCH) + { + vdebug("patch error: cnt=%d expect=%d\n", cnt, expect); + return 1; + } + + + for (i = 0; i < cnt; i++) + { + opCode = patch[i]; + align = (unsigned long)opCode / g_ko_param.pgsize * g_ko_param.pgsize; + + set_mem_rw(align, 1); + *opCode = 0; + set_mem_ro(align, 1); + } + + return 0; +} + +static int notrace dmpatch_init(void) +{ + int r = 0; + int rc = 0; + + kprintf = (printk_pf)(g_ko_param.printk_addr); + + vdebug("dmpatch_init start pagesize=%lu ...\n", g_ko_param.pgsize); + + if (g_ko_param.struct_size != sizeof(ko_param)) + { + vdebug("Invalid struct size %d %d\n", (int)g_ko_param.struct_size, (int)sizeof(ko_param)); + return -EINVAL; + } + + if (g_ko_param.sym_get_addr == 0 || g_ko_param.sym_put_addr == 0 || + g_ko_param.ro_addr == 0 || g_ko_param.rw_addr == 0) + { + return -EINVAL; + } + + set_mem_ro = (set_memory_attr_pf)(g_ko_param.ro_addr); + set_mem_rw = (set_memory_attr_pf)(g_ko_param.rw_addr); + reg_kprobe = (kprobe_reg_pf)g_ko_param.reg_kprobe_addr; + unreg_kprobe = (kprobe_unreg_pf)g_ko_param.unreg_kprobe_addr; + + r = dmpatch_replace_code(g_ko_param.sym_get_addr, g_ko_param.sym_get_size, 2, "dm_get_table_device"); + if (r) + { + rc = -EINVAL; + goto out; + } + vdebug("patch dm_get_table_device success\n"); + + r = dmpatch_replace_code(g_ko_param.sym_put_addr, g_ko_param.sym_put_size, 1, "dm_put_table_device"); + if (r) + { + rc = -EINVAL; + goto out; + } + vdebug("patch dm_put_table_device success\n"); + + vdebug("#####################################\n"); + vdebug("######## dm patch success ###########\n"); + vdebug("#####################################\n"); + +out: + + return rc; +} + +static void notrace dmpatch_exit(void) +{ + +} + +module_init(dmpatch_init); +module_exit(dmpatch_exit); + + +MODULE_DESCRIPTION("dmpatch driver"); +MODULE_AUTHOR("longpanda "); +MODULE_LICENSE("GPL"); + diff --git a/DMPATCH/readme.txt b/DMPATCH/readme.txt new file mode 100644 index 00000000..866dc906 --- /dev/null +++ b/DMPATCH/readme.txt @@ -0,0 +1,35 @@ +1. install ubuntu 21.10 +2. apt-get install build-essential flex ncurse linux-headers-generic linux-source ...... and so on +3. cp /lib/modules/5.13.0-23-generic/build/Module.symvers ./ +4. /boot/config-5.13.0-23-generic as .config make oldconfig +5. make menuconfig + 1. close CONFIG_STACKPROTECTOR + 2. close CONFIG_RETPOLINE + +6. modify ./scripts/mod/modpost.c + 1. skip add_srcversion (just return) + 2. force add_retpoline (#ifdef --> #ifndef) + +7. make modules_prepare LOCALVERSION=-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + +8. Append padding at the end of struct module +struct module { + enum module_state state; + + /* Member of list of modules */ + struct list_head list; + + /* Unique handle for this module */ + char name[MODULE_NAME_LEN]; + + .... + + char padding[1024]; +}; + +This is because struct module size is different in different kernel versions or with different CONFIG item. + + +9. make modules M=/home/dmpatch +10. strip --strip-debug /home/dmpatch/dm_patch.ko + diff --git a/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/VDiskChain/VDiskChain.c b/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/VDiskChain/VDiskChain.c index f3d8d458..cc978a1b 100644 --- a/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/VDiskChain/VDiskChain.c +++ b/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/VDiskChain/VDiskChain.c @@ -249,6 +249,12 @@ EFI_STATUS EFIAPI vdisk_exit_boot_service_wrapper IN UINTN MapKey ) { + if (g_org_get_variable) + { + gRT->GetVariable = g_org_get_variable; + g_org_get_variable = NULL; + } + return g_org_exit_boot_service(ImageHandle, MapKey); } diff --git a/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/Ventoy.c b/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/Ventoy.c index cfcf4105..5d997225 100644 --- a/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/Ventoy.c +++ b/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/Ventoy.c @@ -71,6 +71,9 @@ STATIC BOOLEAN g_hook_keyboard = FALSE; CHAR16 gFirstTryBootFile[256] = {0}; +STATIC EFI_GET_VARIABLE g_org_get_variable = NULL; +STATIC EFI_EXIT_BOOT_SERVICES g_org_exit_boot_service = NULL; + /* Boot filename */ UINTN gBootFileStartIndex = 1; CONST CHAR16 *gEfiBootFileName[] = @@ -739,6 +742,77 @@ STATIC EFI_STATUS ventoy_proc_img_replace_name(ventoy_grub_param_file_replace *r return EFI_SUCCESS; } +EFI_STATUS EFIAPI ventoy_get_variable_wrapper +( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + OUT UINT32 *Attributes, OPTIONAL + IN OUT UINTN *DataSize, + OUT VOID *Data OPTIONAL +) +{ + EFI_STATUS Status = EFI_SUCCESS; + + Status = g_org_get_variable(VariableName, VendorGuid, Attributes, DataSize, Data); + if (StrCmp(VariableName, L"SecureBoot") == 0) + { + if ((*DataSize == 1) && Data) + { + *(UINT8 *)Data = 0; + } + } + + return Status; +} + +EFI_STATUS EFIAPI ventoy_exit_boot_service_wrapper +( + IN EFI_HANDLE ImageHandle, + IN UINTN MapKey +) +{ + if (g_org_get_variable) + { + gRT->GetVariable = g_org_get_variable; + g_org_get_variable = NULL; + } + + return g_org_exit_boot_service(ImageHandle, MapKey); +} + +STATIC EFI_STATUS EFIAPI ventoy_disable_secure_boot(IN EFI_HANDLE ImageHandle) +{ + UINT8 Value = 0; + UINTN DataSize = 1; + EFI_STATUS Status = EFI_SUCCESS; + + Status = gRT->GetVariable(L"SecureBoot", &gEfiGlobalVariableGuid, NULL, &DataSize, &Value); + if (!EFI_ERROR(Status)) + { + if (DataSize == 1 && Value == 0) + { + debug("Current secure boot is off, no need to disable"); + return EFI_SUCCESS; + } + } + + debug("ventoy_disable_secure_boot"); + + /* step1: wrapper security protocol. */ + /* Do we still need it since we have been loaded ? */ + + + /* step2: fake SecureBoot variable */ + g_org_exit_boot_service = gBS->ExitBootServices; + gBS->ExitBootServices = ventoy_exit_boot_service_wrapper; + + g_org_get_variable = gRT->GetVariable; + gRT->GetVariable = ventoy_get_variable_wrapper; + + return EFI_SUCCESS; +} + + STATIC EFI_STATUS EFIAPI ventoy_parse_cmdline(IN EFI_HANDLE ImageHandle) { UINT32 i = 0; @@ -909,6 +983,11 @@ STATIC EFI_STATUS EFIAPI ventoy_parse_cmdline(IN EFI_HANDLE ImageHandle) { g_hook_keyboard = TRUE; } + + if (g_os_param_reserved[5] == 1 && g_os_param_reserved[2] == ventoy_chain_linux) + { + ventoy_disable_secure_boot(ImageHandle); + } debug("internal param: secover:%u keyboard:%u", g_fixup_iso9660_secover_enable, g_hook_keyboard); diff --git a/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/Ventoy.inf b/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/Ventoy.inf index 892d8c77..374efdd7 100644 --- a/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/Ventoy.inf +++ b/EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/Ventoy.inf @@ -42,6 +42,7 @@ DebugLib [Guids] + gEfiGlobalVariableGuid gShellVariableGuid gEfiVirtualCdGuid gEfiFileInfoGuid diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c index 5adcdc65..b5233cce 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c @@ -2748,6 +2748,7 @@ void ventoy_fill_os_param(grub_file_t file, ventoy_os_param *param) { char *pos; const char *fs = NULL; + const char *val = NULL; const char *cdprompt = NULL; grub_uint32_t i; grub_uint8_t chksum = 0; @@ -2794,6 +2795,13 @@ void ventoy_fill_os_param(grub_file_t file, ventoy_os_param *param) param->vtoy_reserved[3] = 1; } + param->vtoy_reserved[5] = 0; + val = ventoy_get_env("VTOY_LINUX_REMOUNT"); + if (val && val[0] == '1' && val[1] == 0) + { + param->vtoy_reserved[5] = 1; + } + /* calculate checksum */ for (i = 0; i < sizeof(ventoy_os_param); i++) { diff --git a/GRUB2/MOD_SRC/grub-2.04/include/grub/ventoy.h b/GRUB2/MOD_SRC/grub-2.04/include/grub/ventoy.h index 5cb04d8b..0102ef59 100644 --- a/GRUB2/MOD_SRC/grub-2.04/include/grub/ventoy.h +++ b/GRUB2/MOD_SRC/grub-2.04/include/grub/ventoy.h @@ -121,6 +121,7 @@ typedef struct ventoy_os_param * vtoy_reserved[2]: vtoy_chain_type 0:Linux 1:Windows 2:wimfile * vtoy_reserved[3]: vtoy_iso_format 0:iso9660 1:udf * vtoy_reserved[4]: vtoy_windows_cd_prompt + * vtoy_reserved[5]: vtoy_linux_remount * */ grub_uint8_t vtoy_reserved[32]; // Internal use by ventoy diff --git a/IMG/cpio/sbin/init b/IMG/cpio/sbin/init index 17be33fb..3fd3cc5e 100644 --- a/IMG/cpio/sbin/init +++ b/IMG/cpio/sbin/init @@ -48,6 +48,12 @@ else fi fi +if [ "$VTOY_ARCH" = "i386" ]; then + if $BUSYBOX_PATH/vtchmod32 -6; then + export VTOY_ARCH=x86_64 + fi +fi + echo $VTOY_ARCH > $VTOY_PATH/ventoy_arch @@ -81,6 +87,7 @@ export PATH=$BUSYBOX_PATH/:$VTOY_PATH/tool export VTOY_BREAK_LEVEL=$(hexdump -n 1 -s 449 -e '1/1 "%02x"' $VTOY_PATH/ventoy_os_param) export VTOY_DEBUG_LEVEL=$(hexdump -n 1 -s 450 -e '1/1 "%02x"' $VTOY_PATH/ventoy_os_param) +export VTOY_LINUX_REMOUNT=$(hexdump -n 1 -s 454 -e '1/1 "%02x"' $VTOY_PATH/ventoy_os_param) #Fixme: busybox shell output redirect seems to have some bug in rhel5 if uname -a | grep -q el5; then diff --git a/IMG/cpio/ventoy/hook/ventoy-hook-lib.sh b/IMG/cpio/ventoy/hook/ventoy-hook-lib.sh index 881daef5..a22314fc 100644 --- a/IMG/cpio/ventoy/hook/ventoy-hook-lib.sh +++ b/IMG/cpio/ventoy/hook/ventoy-hook-lib.sh @@ -30,6 +30,7 @@ SLEEP=$BUSYBOX_PATH/sleep HEAD=$BUSYBOX_PATH/head VTOY_DM_PATH=/dev/mapper/ventoy VTOY_DEBUG_LEVEL=$($BUSYBOX_PATH/hexdump -n 1 -s 450 -e '1/1 "%02x"' $VTOY_PATH/ventoy_os_param) +VTOY_LINUX_REMOUNT=$($BUSYBOX_PATH/hexdump -n 1 -s 454 -e '1/1 "%02x"' $VTOY_PATH/ventoy_os_param) if [ "$VTOY_DEBUG_LEVEL" = "01" ]; then if [ -e /dev/console ]; then @@ -220,6 +221,125 @@ ventoy_check_dm_module() { fi } +ventoy_need_dm_patch() { + if [ "$VTOY_LINUX_REMOUNT" != "01" ]; then + $BUSYBOX_PATH/false; return + fi + + if $GREP -q 'device-mapper' /proc/devices; then + : + else + $BUSYBOX_PATH/false; return + fi + + if $GREP -q 'dm_patch' /proc/modules; then + $BUSYBOX_PATH/false; return + fi + + vtMajorVer=$($BUSYBOX_PATH/uname -r | $AWK -F. '{print $1}') + vtMinorVer=$($BUSYBOX_PATH/uname -r | $AWK -F. '{print $2}') + + if [ $vtMajorVer -lt 3 ]; then + $BUSYBOX_PATH/false; return + elif [ $vtMajorVer -eq 3 -a $vtMinorVer -lt 10 ]; then + $BUSYBOX_PATH/false; return + fi + + + $BUSYBOX_PATH/true +} + +ventoy_dm_patch() { + vtMType=$($BUSYBOX_PATH/uname -m) + + vtlog "######### ventoy_dm_patch ############" + + if echo $vtMType | $EGREP -i -q "x86.64|amd64"; then + vtKoName=dm_patch_64.ko + else + vtlog "unsupported machine type $vtMType" + return + fi + + if [ -f $VTOY_PATH/tool/$vtKoName ]; then + vtlog "/ventoy/tool/$vtKoName exist OK" + else + vtlog "/ventoy/tool/$vtKoName NOT exist" + return + fi + + $CAT /proc/kallsyms | $BUSYBOX_PATH/sort > $VTOY_PATH/kallsyms + + vtLine=$($VTOY_PATH/tool/vtoyksym dm_get_table_device $VTOY_PATH/kallsyms) + get_addr=$(echo $vtLine | $AWK '{print $1}') + get_size=$(echo $vtLine | $AWK '{print $2}') + + vtLine=$($VTOY_PATH/tool/vtoyksym dm_put_table_device $VTOY_PATH/kallsyms) + put_addr=$(echo $vtLine | $AWK '{print $1}') + put_size=$(echo $vtLine | $AWK '{print $2}') + + ro_addr=$($GREP ' set_memory_ro$' /proc/kallsyms | $AWK '{print $1}') + rw_addr=$($GREP ' set_memory_rw$' /proc/kallsyms | $AWK '{print $1}') + kprobe_reg_addr=$($GREP ' register_kprobe$' /proc/kallsyms | $AWK '{print $1}') + kprobe_unreg_addr=$($GREP ' unregister_kprobe$' /proc/kallsyms | $AWK '{print $1}') + + if [ "$VTOY_DEBUG_LEVEL" = "01" ]; then + printk_addr=$($GREP ' printk$' /proc/kallsyms | $AWK '{print $1}') + vtDebug="-v" + else + printk_addr=0 + fi + + #printk_addr=$($GREP ' printk$' /proc/kallsyms | $AWK '{print $1}') + #vtDebug="-v" + + vtlog get_addr=$get_addr get_size=$get_size + vtlog put_addr=$put_addr put_size=$put_size + vtlog kprobe_reg_addr=$kprobe_reg_addr kprobe_unreg_addr=$kprobe_unreg_addr + vtlog ro_addr=$ro_addr rw_addr=$rw_addr printk_addr=$printk_addr + + if [ "$get_addr" = "0" -o "$put_addr" = "0" ]; then + vtlog "Invalid symbol address" + return + fi + if [ "$ro_addr" = "0" -o "$rw_addr" = "0" ]; then + vtlog "Invalid symbol address" + return + fi + + + vtKv=$($BUSYBOX_PATH/uname -r) + vtModPath=$($FIND /lib/modules/$vtKv/kernel/fs/ -name "*.ko*" | $HEAD -n1) + vtModName=$($BUSYBOX_PATH/basename $vtModPath) + + vtlog "template module is $vtModPath $vtModName" + + if echo $vtModPath | $GREP -q "[.]ko$"; then + $BUSYBOX_PATH/cp -a $vtModPath $VTOY_PATH/$vtModName + elif echo $vtModPath | $GREP -q "[.]ko[.]xz$"; then + $BUSYBOX_PATH/xzcat $vtModPath > $VTOY_PATH/$vtModName + elif echo $vtModPath | $GREP -q "[.]ko[.]gz$"; then + $BUSYBOX_PATH/zcat $vtModPath > $VTOY_PATH/$vtModName + else + vtlog "unsupport module type" + return + fi + + #step1: modify vermagic/mod crc/relocation + $VTOY_PATH/tool/vtoykmod -u $VTOY_PATH/tool/$vtKoName $VTOY_PATH/$vtModName $vtDebug + + #step2: fill parameters + vtPgsize=$($VTOY_PATH/tool/vtoyksym -p) + $VTOY_PATH/tool/vtoykmod -f $VTOY_PATH/tool/$vtKoName $vtPgsize 0x$printk_addr 0x$ro_addr 0x$rw_addr $get_addr $get_size $put_addr $put_size 0x$kprobe_reg_addr 0x$kprobe_unreg_addr $vtDebug + + $BUSYBOX_PATH/insmod $VTOY_PATH/tool/$vtKoName + + if $GREP -q 'dm_patch' /proc/modules; then + echo "done" > $VTOY_PATH/dm_patch_done + fi + +} + create_ventoy_device_mapper() { vtlog "create_ventoy_device_mapper $*" @@ -230,19 +350,36 @@ create_ventoy_device_mapper() { fi vtlog "dmsetup avaliable in system $VT_DM_BIN" - + if ventoy_check_dm_module "$1"; then vtlog "device-mapper module check success" else vterr "Error: no dm module avaliable" fi - $VTOY_PATH/tool/vtoydm -p -f $VTOY_PATH/ventoy_image_map -d $1 > $VTOY_PATH/ventoy_dm_table + $VTOY_PATH/tool/vtoydm -p -f $VTOY_PATH/ventoy_image_map -d $1 > $VTOY_PATH/ventoy_dm_table + + + vtLevel1=$($CAT /proc/sys/kernel/printk | $AWK '{print $1}') + vtLevel2=$($CAT /proc/sys/kernel/printk | $AWK '{print $2}') + vtLevel3=$($CAT /proc/sys/kernel/printk | $AWK '{print $3}') + vtLevel4=$($CAT /proc/sys/kernel/printk | $AWK '{print $4}') + if ventoy_need_dm_patch; then + ventoy_dm_patch + #suppress printk message + echo 0 $vtLevel2 0 $vtLevel4 > /proc/sys/kernel/printk + fi + if [ -z "$2" ]; then $VT_DM_BIN create ventoy $VTOY_PATH/ventoy_dm_table >>$VTLOG 2>&1 else $VT_DM_BIN "$2" create ventoy $VTOY_PATH/ventoy_dm_table >>$VTLOG 2>&1 - fi + fi + + if ventoy_need_dm_patch; then + #recover printk level + echo $vtLevel1 $vtLevel2 $vtLevel3 $vtLevel4 > /proc/sys/kernel/printk + fi } create_persistent_device_mapper() { @@ -262,8 +399,24 @@ create_persistent_device_mapper() { vterr "Error: no dm module avaliable" fi - $VTOY_PATH/tool/vtoydm -p -f $VTOY_PATH/ventoy_persistent_map -d $1 > $VTOY_PATH/persistent_dm_table + $VTOY_PATH/tool/vtoydm -p -f $VTOY_PATH/ventoy_persistent_map -d $1 > $VTOY_PATH/persistent_dm_table + + + vtLevel1=$($CAT /proc/sys/kernel/printk | $AWK '{print $1}') + vtLevel2=$($CAT /proc/sys/kernel/printk | $AWK '{print $2}') + vtLevel3=$($CAT /proc/sys/kernel/printk | $AWK '{print $3}') + vtLevel4=$($CAT /proc/sys/kernel/printk | $AWK '{print $4}') + if [ -f $VTOY_PATH/dm_patch_done ]; then + #suppress printk message + echo 0 $vtLevel2 0 $vtLevel4 > /proc/sys/kernel/printk + fi + $VT_DM_BIN create vtoy_persistent $VTOY_PATH/persistent_dm_table >>$VTLOG 2>&1 + + if [ -f $VTOY_PATH/dm_patch_done ]; then + #recover printk level + echo $vtLevel1 $vtLevel2 $vtLevel3 $vtLevel4 > /proc/sys/kernel/printk + fi } @@ -493,6 +646,22 @@ ventoy_create_persistent_link() { fi } +ventoy_partname_to_diskname() { + if echo $1 | $EGREP -q "nvme.*p[0-9]$|mmc.*p[0-9]$|nbd.*p[0-9]$"; then + echo -n "${1:0:-2}" + else + echo -n "${1:0:-1}" + fi +} + +ventoy_diskname_to_partname() { + if echo $1 | $EGREP -q "nvme.*p[0-9]$|mmc.*p[0-9]$|nbd.*p[0-9]$"; then + echo -n "${1}p$2" + else + echo -n "${1}$2" + fi +} + ventoy_udev_disk_common_hook() { if echo $1 | $EGREP -q "nvme.*p[0-9]$|mmc.*p[0-9]$|nbd.*p[0-9]$"; then VTDISK="${1:0:-2}" @@ -541,6 +710,10 @@ ventoy_udev_disk_common_hook() { create_persistent_device_mapper "/dev/$VTDISK" ventoy_create_persistent_link fi + + if $GREP -q 'dm_patch' /proc/modules; then + $BUSYBOX_PATH/rmmod dm_patch + fi } ventoy_create_dev_ventoy_part() { @@ -550,6 +723,15 @@ ventoy_create_dev_ventoy_part() { if [ -e /vtoy_dm_table ]; then vtPartid=1 + vtLevel1=$($CAT /proc/sys/kernel/printk | $AWK '{print $1}') + vtLevel2=$($CAT /proc/sys/kernel/printk | $AWK '{print $2}') + vtLevel3=$($CAT /proc/sys/kernel/printk | $AWK '{print $3}') + vtLevel4=$($CAT /proc/sys/kernel/printk | $AWK '{print $4}') + if [ -f $VTOY_PATH/dm_patch_done ]; then + #suppress printk message + echo 0 $vtLevel2 0 $vtLevel4 > /proc/sys/kernel/printk + fi + $CAT /vtoy_dm_table | while read vtline; do echo $vtline > /ventoy/dm_table_part${vtPartid} $VTOY_PATH/tool/dmsetup create ventoy${vtPartid} /ventoy/dm_table_part${vtPartid} @@ -558,7 +740,12 @@ ventoy_create_dev_ventoy_part() { $BUSYBOX_PATH/mknod -m 0666 /dev/ventoy${vtPartid} b $blkdev_num vtPartid=$(expr $vtPartid + 1) - done + done + + if [ -f $VTOY_PATH/dm_patch_done ]; then + #recover printk level + echo $vtLevel1 $vtLevel2 $vtLevel3 $vtLevel4 > /proc/sys/kernel/printk + fi fi } diff --git a/IMG/cpio_arm64/ventoy/busybox/vtchmodaa64 b/IMG/cpio_arm64/ventoy/busybox/vtchmodaa64 index 593c021f65ee5415f644e0ae1acf04a6e575b315..6c3811a16bb0c9144d35bef7991d8719846e1547 100644 GIT binary patch delta 9117 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 Itvv1j04&_Fp8x;= diff --git a/IMG/cpio_mips64/ventoy/busybox/vtchmodm64e b/IMG/cpio_mips64/ventoy/busybox/vtchmodm64e index 47e84be6fe0e055052c9691988f17af299fc230e..dc623d5259e4d35baf38735c4aab5e80a89309c7 100644 GIT binary patch delta 5342 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 delta 2002 zcmZWqU1%It6uvXFf3ut2%qD5Gvtu^fxY_QeX|jR3#!$=H)HakNiXQgUD57l%ZYn5h}n9n|^GK|&aZe?5qKq0j4*ZSCL^r;*(B zy>Xe&!l0C7FexR&be2=4lzWeS!!al{O40AZoL3Y`~ zYaG!0e+SmVO_zOO)NNBmY_H%>y8<)rHucfv%GT{G?<>7<+uc7SMP@wOIK5mcuF%<9 zgnVP&mBKDUKC~X<{ug^q2-DpW>s4IuS8PsACQ3phXPa2EtJduzAzxWCd1B}Gm06`1 zeYR`!WDNN}vS-LY~#17iNo@~943f7|W>qiqA;mZWrB|9{Ml@^Tq#ndd6C8{VA3~i zDn*l=@lnAsVXmF3l)T^xbhwAm^fWvbXjNq_TRTn^g_i?c(vnfgX zJIi#kM#*(7YX3Tsu3=*^D)=;D=<}$_({im>*N(DvH*qBh$*tdj2Z6@m0v>yTd5_O4 zUxHNkj%?~MQ+KOn;Oz=F<)%f*f|Ws16~}9A z$ArIw&701kJc5=Q>e@?`w9|QV7t*0lDFBB;yEAJS|MgtOR2bk;2GXbQar z>=`2j#)5Hp7)rrdy((RV*Xr9mYp8xng1-9LVzoXlK`Ep?M=oGESX3V#%K~ku6gxDv zenbwtR>r0ZQDV9*OGzkrLYQhmE%EiU~fPiAOedEJrxO*1RihTyaj=# zNUT@*k2iAt6!#k=JLFH` zk{nmyx9weir`35EM7y32I}LZEGkjJX;e(zS&@RpI%*JX2=DM=sUY!>T(S9QEpsU-T z6VjXx(eA9@`LDy78^rCX=ptT@bGW5qOLe&4oeev~RTdu0uqD&&k2@VRU@(*QI}?+_ sixIb`GcN|*&+L*>8tvKT-)Zoesxl1sWaaf1nCsc4*2TE=3Z~Th4+sDfKL7v# diff --git a/IMG/cpio_x86/ventoy/busybox/vtchmod32 b/IMG/cpio_x86/ventoy/busybox/vtchmod32 index 4b66db3ca7cf7876f82e3849c523ac8d768f1325..2647afb687d06c065e062763cadf2b4498f7cadb 100644 GIT binary patch delta 1795 zcmZ8iT}&KR6uvVI%eE}TK)3wF6|rtC*j0fdfzrf|kgByYK*LJIzXbwGu@-j~32_$| zXvfV)>u6#~AEXb)2hvbUO&c{u7YZ>n1$>ZL6^u366^yiK@c|vbGwhU!7w$dtopZi( z&i&oFytVvyGYW?L1ZyEOS^4u`Byl&qD@fAyC45yMl)VfAQnq z8hW<79>g4ysE17z>mDH-Lb`AL|B4@V(D&bJ;pUUF#+J<`dF>W81q`EmdBOS(f zSYSpA-|&aWlA~WB&sb0Nvib?v!*l$&lkewzw>C9R5uB0He>4q2uABm?wxO{;TphTf zy_7%UR-(rOtB#<@Ss1Ky<|!L@FDgsQH%j#G#f=4J@yNz}s6+DDZA_r{~S^C4Ga z$%^N}w=KnSUc1ukv??B_pg5cn2jUJ+coNE1mhvZ7cx5p#=|CP|eRym=T7cwkBvXD4 zp0)+wl!DLOf7!XY{;?-Mb0RRqH8zBsJ6nnhS$A>57-3ZEY_nK zI?7|ioGy?S+Mljwgy7dtq5azAu;pbJ2^Nk$3AX}I_6t^;b1LH*9iT(8Oyu7OOpW+yxN~P9?I!+vz&7w9*dE6F*a$wH zCWlXfb4>Uu@B#=;*l|kuH84$$5~A`Cm+uwn`95-`0#1r!H%8Mpvj*bYqo&zbmp zd{ERtk!MQqy4eBte&7)V$chC}fVtQbQos@5LKA-!*w}mt1z!RF+b>w@j*$PCz~7?4 z1He8~+=RlI5%z>F{SQZhw*w}yHQ@5tj48oiz*#7W?h)}Vc*M-{a)FI4%7#5{+x~)1 za6lm=09`ODC?`gM(D4)am_@~SsdZcqTx^r_j#r&)a_&8>cr_H^s?*6l(HEU!M&@5a_Q?Im5q zYdBTLYe6pLNBv+-Qo*zEn}wg<2m&1)Mrw!El=QvaQMCkPwc3oaR#h-Ish84AbLUV& jBD_-2i9zqt4s=stOu}n;Qr(^LNJcN7s18_-W~BQM#i(;7 delta 1281 zcmZ8gT}V@57=F*Uv$=F_XEt@FgqE<0Qd6WKi_)}+P;+G=K>n_4Q|>Afp%5xi0tulUi@>(v-Zb6e%V-u2kAJ zu>BN>L?_<+Cx&eEqcTTa5`#*3Ky)klb<5Fck6JJnhV5(pJ$w$)Cz_g1O$;s0KLSVc zt(xs~gUy9%V79|jwMC&C%_usl%4X=iY-$3od{bpnRpNe!paY0q&#@5ZPC|p=;=4f( z;11|5Z~<7VvU-His&ecN=rVXK^F*msjPW7#kGx`Zg=dZK)bN6_K@pF-q*ZH6j|8xd z5CguLgyeN?Q;{Wov;3h|N{?OhZDTGTr{KH}0OkVYfXGfMR1ce{ z!@MkSw`%68rjwvH*ot^Q$6o|y;rvXDS79Bx{2t&CZVC)-CgG!d_$kl@JOOs=@DOk_ z8n)onx#0*fFN_=Hqu~T>YrG))r+|4vu?2_}`ULzKe%=E1e}-M1fKSj%5c-0%z{QCI zXt1bD-~uj8B(c+WGSO{dzWb$I2mVsv)dqt01ABD!cp*u@4+&>M+|jMz8gQ8|p&vML zlo}@V0Qj$8HS^8n359^$kzXFi&w-N-;2&Ru-vKA;`82Fx21GR)A|ESAp)bHsQIM}Q z&WPsM6tIZZEzg7h-x@zZ&}roJHRlPY#p7XO*p8nT_>Dw4F~S96r*6gjfL{ls$x$LJ z9IvDyqfRzvl!pg1oQfRDY>-;k9x*LsUDn2YuF20Kf|n4%e?s{9S@z0jSuUkoe#KZT y6{kx%CJQk(O0RQwp&wbPh_XRBgCFBMDCne&Z6G=#UpTioZFtM4lROcY8I%8Euh+x? diff --git a/IMG/cpio_x86/ventoy/busybox/vtchmod64 b/IMG/cpio_x86/ventoy/busybox/vtchmod64 index 9c799581559cf7b18771e594822e632584618ebf..4d27c578cb82b28e448d9d89403dbb65d9ff566f 100644 GIT binary patch delta 2237 zcmZ`)4{Q@v7=OLCTgSF*2X4E8ux^<+V8j;2{(!LSPr^GN~a}SaL}AuDX&ja)xG-Gj=_d2pm4U;mPL7 z^Y(lE`Qs)^i)LQkytTh+*)bD*Xy30dV-Bi94RL=Pdr`yed!q4iNrHIJ;8Yb+u|_0P zqO|Wg=Tk;jw?x-a<>yCfczMD`mHaHxNn(51ep6Xt0X$bKHX1ykMh8}1KBKDYK;7jp z*;$iIh~+X-n36q{(j zI}$e|$EwvWo@P%=bl|nivr$I_4gO>6o<>8NG$hh+z(&K**r@#kwV$N5Lp1!zb>BJr zOA-6-28fyCJs2l}&q%}f z5Hf*Wgdyh^125aeqXp-1LN4^k0AVUNH z2e=8ie1hSCp+u0OrQ{o^B_NQ}68#9=fsQ8%GPIQZ0yR%ab!@EMC~!{f5oBn(@c#MH zzEfvb6vhLnAj2ai{BtP*L3%;iy1y*Q@JI=7kQZv)-24!7sRJJ1d-k|RP6EmA58474 z?o`kU;C!i_P``R68C23OPw^Q~mA{OXKNzHaqt*Zb delta 1657 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 DNho14 diff --git a/IMG/cpio_x86/ventoy/tool/dm_patch_64.ko b/IMG/cpio_x86/ventoy/tool/dm_patch_64.ko new file mode 100644 index 0000000000000000000000000000000000000000..789e3599b6a4b5879ba7b83843938fbf9fc5782b GIT binary patch literal 7080 zcmeHLYit}>6}}snxOsq+hysO*jv$s2sTpP0achTc*j3iem@aLgF#?fvJDHi-gLh|E zvoq@yAzx|c-t(RBJnp%(v-i${q2ldJQYpbLCANyT#HbMK-r64Lt(`c5istG3RAKF9 zP=EFZAfoWvu_Z8i4l^A}|6ZHg*_B%VOD+8Q`d`g0( z@a%zShSI;)CXOqG@Z3l9yYjp9_w1g<{G$TokD?bSgMX$FUMhrtXw4t^Xx6fsx*ejRn~~Anqdhl^5iVpH)f1|{Qx>&|MU7H!xnyp(0Wo_H6(ps-4!0!an-cQMgnSt@ zr*%B>T@b`Hu8>BlkY>I_ASE`LMXL)xyV7jJ+zx#et%(5@Sr$uN)?SPF(~yVIqKFs1 z0Jiz?_@SAg8Z*^mraVEvuM_yrPGCDStU__p`p1j2>^!R7!Q*lnUTHR)bH88}q*cOTNCRY?VxFpKVwIuxgONz)R%b@;ukutQd};1s7JmY8g0ME|Y*; zs?V%QX32JJh~?{^uT=F>3!`Rx%YmY*DzMpKhXj;bU>H`dCVj?u$)pmzcVA13<;ir# ztU!WTI*O~X2Kwcq3?*@DR(AW2qR<0>%=NNm*BPzqj;SkKbhBbRxqX)7yZcqg^0x}p zsu`YL^=;S5QYjSEv-epZsH&D@*0RF0{Hj~F9V`10;pi0$h$WeV09r*KwT*1Qn(kB6 zgB$AqO;hfE{|=?%nx()gySj-(a9o3wY6>mX=liFg#385xSo*TQ-wk}yT}$`mQ(t@f z>(6}So6ml0`rAjpbL_cmv3WgkT9tl1B(s>qVg(i}uvme`3M^LO|E&Vsw{6?3tQ*-A zIDVj{(`rWDxZ$=yikbBUz|ruUSpT6mT|#cf7qGhINpb-UXVPU0K|s31$^|$c2~wh4 z+(8<)e4E6tZ}D?9>Xmr6*hw;b+)DVpgujXU4-)Q>Y*7C(iQ};+Y8Vfj2Ukig5iE0m zKj2H`X&YHW?8d~QJpfk<=Cw*nLU6{PlQ_>thz9AuByrBV&3}w=w&(s?z%lN<6z?n4 zKTr57JXS*^SiB_1-4eqaNBSM%EUzU-lkklszk~X>gTvLLwVf9Ya=8xhHIPp-?rnr8 z^Ax4h$eqI<7#S)J7vKOSH|XiitpJxwyl0-rY3<$9nf`eS+{mXho91D>olj@_M9Fb| zt29Xc035TTbCPFO%erBe4A->8c-6BVf3FxVjk|Cp@brqP!TGFWRZ8A{?V;PU##2^H zu<9VhCq##rOg~PjJUrLpbJx zI&Nl+kNMn0it!j8pI0M>$MgSG!v8w*b2!20`g}Qo7l{9K0_XS1Yyw|P{2wLoTL}M6 z0%!g!g!8)GO8mdY_&8s@uw9AaIA8XE9Tk!5%c&UM}u^Mg}=AMxE7KOXnvF+L9K#6Nfy{^11w zA>u!H75*a${%PVreigp_Vg?+p1N;AejE{BTy1g93RDx7^{u)u zRL?baUq=^dH9cP(5GuUFY-g_vZ?x7MT}3_+(FI0;k1^w}V_0hZou}@p)r4xel?r^{ zq1f;(djovbGREa>{`VWcH}S8F%Gq+5qtV(H5)E)|;!Opilf6kK{@-Mqr2TtAfop=_ z+~e&b5?0f?v2GO)sNW1d`pl8c-NrT1=z0p+10uTOeFHxmLx5rY3|#T{6ve$K4#F6@ z*to~vYbX0v6!)K!-M(>rwl~N=S^s6UrTk&rRF2q=;qq1N&yjtOiPS3z`96@*XQIqP zp#^Cq_)0?lB*>lYXV|{I)smLEg#9N#?zDabZ;6Qf{NVcGZj0;3>-R;%lKJOogUh_g zTic%Hhhc#Ea~#Imp8p3JM=mz*kHp4OLATHF20IRR;G&=8+M~%~vi~qC@wvy6Bfilter_vhd != data2->filter_vhd || data1->filter_vtoy != data2->filter_vtoy || data1->win11_bypass_check != data2->win11_bypass_check || + data1->linux_remount != data2->linux_remount || data1->menu_timeout != data2->menu_timeout) { return 1; @@ -549,6 +550,7 @@ int ventoy_data_save_control(data_control *data, const char *title, char *buf, i VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_FILE_FLT_VHD", filter_vhd); VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_FILE_FLT_VTOY", filter_vtoy); VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_WIN11_BYPASS_CHECK", win11_bypass_check); + VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_LINUX_REMOUNT", linux_remount); VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_MENU_TIMEOUT", menu_timeout); VTOY_JSON_FMT_CTRL_STRN(L2, "VTOY_DEFAULT_KBD_LAYOUT", default_kbd_layout); @@ -593,6 +595,7 @@ int ventoy_data_json_control(data_control *ctrl, char *buf, int buflen) VTOY_JSON_FMT_SINT("filter_vhd", ctrl->filter_vhd); VTOY_JSON_FMT_SINT("filter_vtoy", ctrl->filter_vtoy); VTOY_JSON_FMT_SINT("win11_bypass_check", ctrl->win11_bypass_check); + VTOY_JSON_FMT_SINT("linux_remount", ctrl->linux_remount); VTOY_JSON_FMT_SINT("menu_timeout", ctrl->menu_timeout); VTOY_JSON_FMT_STRN("default_kbd_layout", ctrl->default_kbd_layout); VTOY_JSON_FMT_STRN("help_text_language", ctrl->help_text_language); @@ -658,6 +661,7 @@ static int ventoy_api_save_control(struct mg_connection *conn, VTOY_JSON *json) VTOY_JSON_INT("filter_vhd", ctrl->filter_vhd); VTOY_JSON_INT("filter_vtoy", ctrl->filter_vtoy); VTOY_JSON_INT("win11_bypass_check", ctrl->win11_bypass_check); + VTOY_JSON_INT("linux_remount", ctrl->linux_remount); VTOY_JSON_INT("menu_timeout", ctrl->menu_timeout); VTOY_JSON_STR("default_image", ctrl->default_image); @@ -3790,6 +3794,10 @@ static int ventoy_parse_control(VTOY_JSON *json, void *p) { CONTROL_PARSE_INT(child, data->win11_bypass_check); } + else if (strcmp(child->pcName, "VTOY_LINUX_REMOUNT") == 0) + { + CONTROL_PARSE_INT(child, data->linux_remount); + } else if (strcmp(child->pcName, "VTOY_TREE_VIEW_MENU_STYLE") == 0) { CONTROL_PARSE_INT(child, data->treeview_style); diff --git a/Plugson/src/Web/ventoy_http.h b/Plugson/src/Web/ventoy_http.h index d5607df1..17b21bf0 100644 --- a/Plugson/src/Web/ventoy_http.h +++ b/Plugson/src/Web/ventoy_http.h @@ -58,6 +58,7 @@ typedef struct data_control int filter_vtoy; int win11_bypass_check; int menu_timeout; + int linux_remount; char default_search_root[MAX_PATH]; char default_image[MAX_PATH]; char default_kbd_layout[32]; diff --git a/Plugson/vs/VentoyPlugson/Release/VentoyPlugson.exe b/Plugson/vs/VentoyPlugson/Release/VentoyPlugson.exe index 79fbbbefa29ebcef28eaa4335b52ab85c3e9af7d..8efd516bf621c5e6703bff95d994bfed8873cdc0 100644 GIT binary patch delta 56342 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 pB1Tx|S+-d&S{_*nkr=CQ~ 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 K#{51X@V@|i3I2Nk diff --git a/Plugson/www/buildtime b/Plugson/www/buildtime index 483a8bfc..bbcb4d7c 100644 --- a/Plugson/www/buildtime +++ b/Plugson/www/buildtime @@ -1 +1 @@ -20211203 17:44:10 \ No newline at end of file +20220108 22:41:02 \ No newline at end of file diff --git a/Plugson/www/index.html b/Plugson/www/index.html index ed601cda..45731a0c 100644 --- a/Plugson/www/index.html +++ b/Plugson/www/index.html @@ -723,7 +723,7 @@

diff --git a/Plugson/www/plugson_control.html b/Plugson/www/plugson_control.html index 6c39190a..60c8fc75 100644 --- a/Plugson/www/plugson_control.html +++ b/Plugson/www/plugson_control.html @@ -337,6 +337,57 @@ + +
+
+

VTOY_LINUX_REMOUNT + —— Linux 启动后继续访问ISO文件所在分区

+
+ +
+
+
+ + + + + + + + + + + + + +
选项设置 +      + +
选项说明 + 0 Linux启动后不需要继续访问ISO文件所在的分区。
+ 1 Linux启动后需要继续访问ISO文件所在的分区。

+ 该选项只对 Linux 系统镜像有效。
+ 默认情况下,受Linux内核相关功能的限制,对于Linux系统,在启动后无法继续访问ISO文件所在的分区。在mount的时候会提示 device busy。
+ 如果这里选择 1,则 Ventoy 会尝试通过一些特殊的手段绕过内核的这个限制,但是这个功能是实验性质的,没有经过大规模和长时间的验证。 +
Option Description + 0 I don't need to access the image partition after boot.
+ 1 I need to access the image partition after boot.

+ This option is only avaliable for Linux distro image files.
+ + By default, the image partition where the ISO files locate can not be accessed after boot. When you try to mount it you will get device busy error. + This is due to linux kernel restriction (device-mapper module).
+ If you select 1 here, Ventoy will try to bypass the restriction with some special mechanism.
+ But it should be noted that, this is an experimental feature and is not fully tested. + +
+
+
+ +
@@ -881,6 +932,7 @@ var level; data.win11_bypass_check = parseInt($('input:radio[name=id_ctrl_bypass_win11_radio]:checked').val()); + data.linux_remount = parseInt($('input:radio[name=id_ctrl_linux_remount_radio]:checked').val()); data.default_search_root = $('input:text[id=id_ctrl_text_search_root]').val(); data.menu_timeout = parseInt($('input:text[id=id_ctrl_text_timeout]').val()); data.default_image = $('input:text[id=id_ctrl_text_default_img]').val(); @@ -913,6 +965,7 @@ function VtoyFillCurrentPageItem(data) { //VTOY_WIN11_BYPASS_CHECK $('input:radio[name=id_ctrl_bypass_win11_radio]')[data.win11_bypass_check].checked = true; + $('input:radio[name=id_ctrl_linux_remount_radio]')[data.linux_remount].checked = true; //VTOY_DEFAULT_SEARCH_ROOT $('input:text[id=id_ctrl_text_search_root]').val(data.default_search_root); @@ -1014,6 +1067,7 @@ method : 'save_control', index: current_tab_index, win11_bypass_check: data.win11_bypass_check, + linux_remount:data.linux_remount, default_search_root: data.default_search_root, menu_timeout: data.menu_timeout, default_image: data.default_image, diff --git a/README.md b/README.md index 6d30a1cd..863da1d0 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ You can copy many image files at a time and ventoy will give you a boot menu to x86 Legacy BIOS, IA32 UEFI, x86_64 UEFI, ARM64 UEFI and MIPS64EL UEFI are supported in the same way.
Both MBR and GPT partition style are supported in the same way.
Most type of OS supported(Windows/WinPE/Linux/Unix/ChromeOS/Vmware/Xen...)
- 770+ ISO files are tested (List). 90%+ distros in distrowatch.com supported (Details).
+ 780+ ISO files are tested (List). 90%+ distros in distrowatch.com supported (Details).

Official Website: https://www.ventoy.net @@ -58,7 +58,7 @@ A GUI Ventoy plugin configurator. [VentoyPlugson](https://www.ventoy.net/en/plug * FAT32/exFAT/NTFS/UDF/XFS/Ext2(3)(4) supported for main partition * ISO files larger than 4GB supported * Native boot menu style for Legacy & UEFI -* Most type of OS supported, 770+ iso files tested +* Most type of OS supported, 780+ iso files tested * Linux vDisk boot supported * Not only boot but also complete installation process * Menu dynamically switchable between List/TreeView mode diff --git a/VtoyTool/vtoykmod.c b/VtoyTool/vtoykmod.c new file mode 100644 index 00000000..b3519f38 --- /dev/null +++ b/VtoyTool/vtoykmod.c @@ -0,0 +1,546 @@ +/****************************************************************************** + * vtoykmod.c ---- ventoy kmod + * + * Copyright (c) 2021, longpanda + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + */ + +#include +#include +#include +#include +#include +#include + +#define _ull unsigned long long + +#define magic_sig 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF + +#define EI_NIDENT (16) + +#define EI_MAG0 0 /* e_ident[] indexes */ +#define EI_MAG1 1 +#define EI_MAG2 2 +#define EI_MAG3 3 +#define EI_CLASS 4 +#define EI_DATA 5 +#define EI_VERSION 6 +#define EI_OSABI 7 +#define EI_PAD 8 + +#define ELFMAG0 0x7f /* EI_MAG */ +#define ELFMAG1 'E' +#define ELFMAG2 'L' +#define ELFMAG3 'F' +#define ELFMAG "\177ELF" +#define SELFMAG 4 + +#define ELFCLASSNONE 0 /* EI_CLASS */ +#define ELFCLASS32 1 +#define ELFCLASS64 2 +#define ELFCLASSNUM 3 + +#define ELFDATANONE 0 /* e_ident[EI_DATA] */ +#define ELFDATA2LSB 1 +#define ELFDATA2MSB 2 + +#define EV_NONE 0 /* e_version, EI_VERSION */ +#define EV_CURRENT 1 +#define EV_NUM 2 + +#define ELFOSABI_NONE 0 +#define ELFOSABI_LINUX 3 + +#define SHT_STRTAB 3 + +#pragma pack(1) + + +typedef struct +{ + unsigned char e_ident[EI_NIDENT]; /* Magic number and other info */ + uint16_t e_type; /* Object file type */ + uint16_t e_machine; /* Architecture */ + uint32_t e_version; /* Object file version */ + uint32_t e_entry; /* Entry point virtual address */ + uint32_t e_phoff; /* Program header table file offset */ + uint32_t e_shoff; /* Section header table file offset */ + uint32_t e_flags; /* Processor-specific flags */ + uint16_t e_ehsize; /* ELF header size in bytes */ + uint16_t e_phentsize; /* Program header table entry size */ + uint16_t e_phnum; /* Program header table entry count */ + uint16_t e_shentsize; /* Section header table entry size */ + uint16_t e_shnum; /* Section header table entry count */ + uint16_t e_shstrndx; /* Section header string table index */ +} Elf32_Ehdr; + +typedef struct +{ + unsigned char e_ident[EI_NIDENT]; /* Magic number and other info */ + uint16_t e_type; /* Object file type */ + uint16_t e_machine; /* Architecture */ + uint32_t e_version; /* Object file version */ + uint64_t e_entry; /* Entry point virtual address */ + uint64_t e_phoff; /* Program header table file offset */ + uint64_t e_shoff; /* Section header table file offset */ + uint32_t e_flags; /* Processor-specific flags */ + uint16_t e_ehsize; /* ELF header size in bytes */ + uint16_t e_phentsize; /* Program header table entry size */ + uint16_t e_phnum; /* Program header table entry count */ + uint16_t e_shentsize; /* Section header table entry size */ + uint16_t e_shnum; /* Section header table entry count */ + uint16_t e_shstrndx; /* Section header string table index */ +} Elf64_Ehdr; + +typedef struct +{ + uint32_t sh_name; /* Section name (string tbl index) */ + uint32_t sh_type; /* Section type */ + uint32_t sh_flags; /* Section flags */ + uint32_t sh_addr; /* Section virtual addr at execution */ + uint32_t sh_offset; /* Section file offset */ + uint32_t sh_size; /* Section size in bytes */ + uint32_t sh_link; /* Link to another section */ + uint32_t sh_info; /* Additional section information */ + uint32_t sh_addralign; /* Section alignment */ + uint32_t sh_entsize; /* Entry size if section holds table */ +} Elf32_Shdr; + +typedef struct +{ + uint32_t sh_name; /* Section name (string tbl index) */ + uint32_t sh_type; /* Section type */ + uint64_t sh_flags; /* Section flags */ + uint64_t sh_addr; /* Section virtual addr at execution */ + uint64_t sh_offset; /* Section file offset */ + uint64_t sh_size; /* Section size in bytes */ + uint32_t sh_link; /* Link to another section */ + uint32_t sh_info; /* Additional section information */ + uint64_t sh_addralign; /* Section alignment */ + uint64_t sh_entsize; /* Entry size if section holds table */ +} Elf64_Shdr; + +typedef struct elf32_rel { + uint32_t r_offset; + uint32_t r_info; +} Elf32_Rel; + +typedef struct elf64_rel { + uint64_t r_offset; /* Location at which to apply the action */ + uint64_t r_info; /* index and type of relocation */ +} Elf64_Rel; + +typedef struct elf32_rela{ + uint32_t r_offset; + uint32_t r_info; + int32_t r_addend; +} Elf32_Rela; + +typedef struct elf64_rela { + uint64_t r_offset; /* Location at which to apply the action */ + uint64_t r_info; /* index and type of relocation */ + int64_t r_addend; /* Constant addend used to compute value */ +} Elf64_Rela; + + +struct modversion_info { + unsigned long crc; + char name[64 - sizeof(unsigned long)]; +}; + + +typedef struct ko_param +{ + unsigned char magic[16]; + unsigned long struct_size; + unsigned long pgsize; + unsigned long printk_addr; + unsigned long ro_addr; + unsigned long rw_addr; + unsigned long reg_kprobe_addr; + unsigned long unreg_kprobe_addr; + unsigned long sym_get_addr; + unsigned long sym_get_size; + unsigned long sym_put_addr; + unsigned long sym_put_size; + unsigned long padding[3]; +}ko_param; + +#pragma pack() + +static int verbose = 0; +#define debug(fmt, ...) if(verbose) printf(fmt, ##__VA_ARGS__) + +static int vtoykmod_write_file(char *name, void *buf, int size) +{ + FILE *fp; + + fp = fopen(name, "wb+"); + if (!fp) + { + return -1; + } + + fwrite(buf, 1, size, fp); + fclose(fp); + + return 0; +} + +static int vtoykmod_read_file(char *name, char **buf) +{ + int size; + FILE *fp; + char *databuf; + + fp = fopen(name, "rb"); + if (!fp) + { + debug("failed to open %s %d\n", name, errno); + return -1; + } + + fseek(fp, 0, SEEK_END); + size = (int)ftell(fp); + fseek(fp, 0, SEEK_SET); + + databuf = malloc(size); + if (!databuf) + { + debug("failed to open malloc %d\n", size); + return -1; + } + + fread(databuf, 1, size, fp); + fclose(fp); + + *buf = databuf; + return size; +} + +static int vtoykmod_find_section64(char *buf, char *section, int *offset, int *len) +{ + uint16_t i; + int cmplen; + char *name = NULL; + char *strtbl = NULL; + Elf64_Ehdr *elf = NULL; + Elf64_Shdr *sec = NULL; + + cmplen = (int)strlen(section); + + elf = (Elf64_Ehdr *)buf; + sec = (Elf64_Shdr *)(buf + elf->e_shoff); + strtbl = buf + sec[elf->e_shstrndx].sh_offset; + + for (i = 0; i < elf->e_shnum; i++) + { + name = strtbl + sec[i].sh_name; + if (name && strncmp(name, section, cmplen) == 0) + { + *offset = (int)(sec[i].sh_offset); + *len = (int)(sec[i].sh_size); + return 0; + } + } + + return 1; +} + +static int vtoykmod_find_section32(char *buf, char *section, int *offset, int *len) +{ + uint16_t i; + int cmplen; + char *name = NULL; + char *strtbl = NULL; + Elf32_Ehdr *elf = NULL; + Elf32_Shdr *sec = NULL; + + cmplen = (int)strlen(section); + + elf = (Elf32_Ehdr *)buf; + sec = (Elf32_Shdr *)(buf + elf->e_shoff); + strtbl = buf + sec[elf->e_shstrndx].sh_offset; + + for (i = 0; i < elf->e_shnum; i++) + { + name = strtbl + sec[i].sh_name; + if (name && strncmp(name, section, cmplen) == 0) + { + *offset = (int)(sec[i].sh_offset); + *len = (int)(sec[i].sh_size); + return 0; + } + } + + return 1; +} + +static int vtoykmod_update_modcrc(char *oldmodver, int oldcnt, char *newmodver, int newcnt) +{ + int i, j; + struct modversion_info *pold, *pnew; + + pold = (struct modversion_info *)oldmodver; + pnew = (struct modversion_info *)newmodver; + + for (i = 0; i < oldcnt; i++) + { + for (j = 0; j < newcnt; j++) + { + if (strcmp(pold[i].name, pnew[j].name) == 0) + { + debug("CRC 0x%08lx --> 0x%08lx %s\n", pold[i].crc, pnew[i].crc, pold[i].name); + pold[i].crc = pnew[j].crc; + break; + } + } + } + + return 0; +} + +static int vtoykmod_update_vermagic(char *oldbuf, int oldsize, char *newbuf, int newsize, int *modver) +{ + int i = 0; + char *oldver = NULL; + char *newver = NULL; + + *modver = 0; + + for (i = 0; i < oldsize - 9; i++) + { + if (strncmp(oldbuf + i, "vermagic=", 9) == 0) + { + oldver = oldbuf + i + 9; + debug("Find old vermagic at %d <%s>\n", i, oldver); + break; + } + } + + for (i = 0; i < newsize - 9; i++) + { + if (strncmp(newbuf + i, "vermagic=", 9) == 0) + { + newver = newbuf + i + 9; + debug("Find new vermagic at %d <%s>\n", i, newver); + break; + } + } + + if (oldver && newver) + { + memcpy(oldver, newver, strlen(newver) + 1); + if (strstr(newver, "modversions")) + { + *modver = 1; + } + } + + return 0; +} + +int vtoykmod_update(char *oldko, char *newko) +{ + int rc = 0; + int modver = 0; + int oldoff, oldlen; + int newoff, newlen; + int oldsize, newsize; + char *newbuf, *oldbuf; + + oldsize = vtoykmod_read_file(oldko, &oldbuf); + newsize = vtoykmod_read_file(newko, &newbuf); + if (oldsize < 0 || newsize < 0) + { + return 1; + } + + /* 1: update vermagic */ + vtoykmod_update_vermagic(oldbuf, oldsize, newbuf, newsize, &modver); + + /* 2: update modversion crc */ + if (modver) + { + if (oldbuf[EI_CLASS] == ELFCLASS64) + { + rc = vtoykmod_find_section64(oldbuf, "__versions", &oldoff, &oldlen); + rc += vtoykmod_find_section64(newbuf, "__versions", &newoff, &newlen); + } + else + { + rc = vtoykmod_find_section32(oldbuf, "__versions", &oldoff, &oldlen); + rc += vtoykmod_find_section32(newbuf, "__versions", &newoff, &newlen); + } + + if (rc == 0) + { + vtoykmod_update_modcrc(oldbuf + oldoff, oldlen / 64, newbuf + newoff, newlen / 64); + } + } + else + { + debug("no need to proc modversions\n"); + } + + /* 3: update relocate address */ + if (oldbuf[EI_CLASS] == ELFCLASS64) + { + Elf64_Rela *oldRela, *newRela; + + rc = vtoykmod_find_section64(oldbuf, ".rela.gnu.linkonce.this_module", &oldoff, &oldlen); + rc += vtoykmod_find_section64(newbuf, ".rela.gnu.linkonce.this_module", &newoff, &newlen); + if (rc == 0) + { + oldRela = (Elf64_Rela *)(oldbuf + oldoff); + newRela = (Elf64_Rela *)(newbuf + newoff); + + debug("init_module rela: 0x%llx --> 0x%llx\n", (_ull)(oldRela[0].r_offset), (_ull)(newRela[0].r_offset)); + oldRela[0].r_offset = newRela[0].r_offset; + oldRela[0].r_addend = newRela[0].r_addend; + + debug("cleanup_module rela: 0x%llx --> 0x%llx\n", (_ull)(oldRela[1].r_offset), (_ull)(newRela[1].r_offset)); + oldRela[1].r_offset = newRela[1].r_offset; + oldRela[1].r_addend = newRela[1].r_addend; + } + else + { + debug("section .rela.gnu.linkonce.this_module not found\n"); + } + } + else + { + Elf32_Rel *oldRel, *newRel; + + rc = vtoykmod_find_section32(oldbuf, ".rel.gnu.linkonce.this_module", &oldoff, &oldlen); + rc += vtoykmod_find_section32(newbuf, ".rel.gnu.linkonce.this_module", &newoff, &newlen); + if (rc == 0) + { + oldRel = (Elf32_Rel *)(oldbuf + oldoff); + newRel = (Elf32_Rel *)(newbuf + newoff); + + debug("init_module rel: 0x%x --> 0x%x\n", oldRel[0].r_offset, newRel[0].r_offset); + oldRel[0].r_offset = newRel[0].r_offset; + + debug("cleanup_module rel: 0x%x --> 0x%x\n", oldRel[0].r_offset, newRel[0].r_offset); + oldRel[1].r_offset = newRel[1].r_offset; + } + else + { + debug("section .rel.gnu.linkonce.this_module not found\n"); + } + } + + vtoykmod_write_file(oldko, oldbuf, oldsize); + + free(oldbuf); + free(newbuf); + + return 0; +} + +int vtoykmod_fill_param(char **argv) +{ + int i; + int size; + char *buf = NULL; + ko_param *param; + unsigned char magic[16] = { magic_sig }; + + size = vtoykmod_read_file(argv[0], &buf); + if (size < 0) + { + return 1; + } + + for (i = 0; i < size; i++) + { + if (memcmp(buf + i, magic, 16) == 0) + { + debug("Find param magic at %d\n", i); + param = (ko_param *)(buf + i); + + param->struct_size = (unsigned long)sizeof(ko_param); + param->pgsize = strtoul(argv[1], NULL, 10); + param->printk_addr = strtoul(argv[2], NULL, 16); + param->ro_addr = strtoul(argv[3], NULL, 16); + param->rw_addr = strtoul(argv[4], NULL, 16); + param->sym_get_addr = strtoul(argv[5], NULL, 16); + param->sym_get_size = strtoul(argv[6], NULL, 10); + param->sym_put_addr = strtoul(argv[7], NULL, 16); + param->sym_put_size = strtoul(argv[8], NULL, 10); + param->reg_kprobe_addr = strtoul(argv[9], NULL, 16); + param->unreg_kprobe_addr = strtoul(argv[10], NULL, 16); + + debug("pgsize=%lu (%s)\n", param->pgsize, argv[1]); + debug("printk_addr=0x%lx (%s)\n", param->printk_addr, argv[2]); + debug("ro_addr=0x%lx (%s)\n", param->ro_addr, argv[3]); + debug("rw_addr=0x%lx (%s)\n", param->rw_addr, argv[4]); + debug("sym_get_addr=0x%lx (%s)\n", param->sym_get_addr, argv[5]); + debug("sym_get_size=%lu (%s)\n", param->sym_get_size, argv[6]); + debug("sym_put_addr=0x%lx (%s)\n", param->sym_put_addr, argv[7]); + debug("sym_put_size=%lu (%s)\n", param->sym_put_size, argv[8]); + debug("reg_kprobe_addr=0x%lx (%s)\n", param->reg_kprobe_addr, argv[9]); + debug("unreg_kprobe_addr=0x%lx (%s)\n", param->unreg_kprobe_addr, argv[10]); + + break; + } + } + + if (i >= size) + { + debug("### param magic not found \n"); + } + + vtoykmod_write_file(argv[0], buf, size); + + free(buf); + return 0; +} + +int vtoykmod_main(int argc, char **argv) +{ + int i; + + for (i = 0; i < argc; i++) + { + if (argv[i][0] == '-' && argv[i][1] == 'v') + { + verbose = 1; + break; + } + } + + if (argv[1][0] == '-' && argv[1][1] == 'f') + { + return vtoykmod_fill_param(argv + 2); + } + else if (argv[1][0] == '-' && argv[1][1] == 'u') + { + return vtoykmod_update(argv[2], argv[3]); + } + + return 0; +} + +// wrapper main +#ifndef BUILD_VTOY_TOOL +int main(int argc, char **argv) +{ + return vtoykmod_main(argc, argv); +} +#endif + diff --git a/VtoyTool/vtoyksym.c b/VtoyTool/vtoyksym.c new file mode 100644 index 00000000..187f54c4 --- /dev/null +++ b/VtoyTool/vtoyksym.c @@ -0,0 +1,113 @@ +/****************************************************************************** + * vtoyksym.c ---- ventoy ksym + * + * Copyright (c) 2021, longpanda + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + * + */ + +#include +#include +#include +#include +#include + +static int verbose = 0; +#define debug(fmt, ...) if(verbose) printf(fmt, ##__VA_ARGS__) + +int vtoyksym_main(int argc, char **argv) +{ + int i; + unsigned long long addr1 = 0; + unsigned long long addr2 = 0; + char sym[256]; + char line[1024]; + const char *name = NULL; + FILE *fp; + + for (i = 0; i < argc; i++) + { + if (argv[i][0] == '-' && argv[i][1] == 'p') + { + printf("%d", getpagesize()); + return 0; + } + } + + for (i = 0; i < argc; i++) + { + if (argv[i][0] == '-' && argv[i][1] == 'v') + { + verbose = 1; + break; + } + } + + name = argv[2] ? argv[2] : "/proc/kallsyms"; + fp = fopen(name, "r"); + if (!fp) + { + fprintf(stderr, "Failed to open file %s err:%d\n", name, errno); + return 1; + } + + debug("open %s success\n", name); + + snprintf(sym, sizeof(sym), " %s", argv[1]); + debug("lookup for <%s>\n", sym); + + while (fgets(line, sizeof(line), fp)) + { + if (strstr(line, sym)) + { + addr1 = strtoull(line, NULL, 16); + if (!fgets(line, sizeof(line), fp)) + { + addr1 = 0; + fprintf(stderr, "Failed to read next line\n"); + } + else + { + addr2 = strtoull(line, NULL, 16); + } + + debug("addr1=<0x%llx> addr2=<0x%llx>\n", addr1, addr2); + break; + } + } + + if (addr1 > addr2) + { + debug("Invalid addr range\n"); + printf("0 0\n"); + } + else + { + printf("0x%llx %llu\n", addr1, addr2 - addr1); + } + + fclose(fp); + + return 0; +} + +// wrapper main +#ifndef BUILD_VTOY_TOOL +int main(int argc, char **argv) +{ + return vtoyksym_main(argc, argv); +} +#endif + diff --git a/VtoyTool/vtoytool.c b/VtoyTool/vtoytool.c index 454063d2..f6896860 100644 --- a/VtoyTool/vtoytool.c +++ b/VtoyTool/vtoytool.c @@ -36,6 +36,8 @@ int vtoydm_main(int argc, char **argv); int vtoytool_install(int argc, char **argv); int vtoyloader_main(int argc, char **argv); int vtoyvine_main(int argc, char **argv); +int vtoyksym_main(int argc, char **argv); +int vtoykmod_main(int argc, char **argv); static char *g_vtoytool_name = NULL; static cmd_def g_cmd_list[] = @@ -44,6 +46,8 @@ static cmd_def g_cmd_list[] = { "vtoydump", vtoydump_main }, { "vtoydm", vtoydm_main }, { "loader", vtoyloader_main }, + { "vtoyksym", vtoyksym_main }, + { "vtoykmod", vtoykmod_main }, { "--install", vtoytool_install }, }; diff --git a/VtoyTool/vtoytool/00/vtoytool_32 b/VtoyTool/vtoytool/00/vtoytool_32 index b4f1dd77363acecbf92f0b8b3e8d41355020cc89..0b430bd97527792550ae913fbe85ae4d10b5f98b 100644 GIT binary patch delta 24234 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 F{|6Md$j|@) delta 18906 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 diff --git a/VtoyTool/vtoytool/00/vtoytool_64 b/VtoyTool/vtoytool/00/vtoytool_64 index 4c52cb549acf5e6305fd32708747d87998c0d071..7680fe37dd35363faec0fc86bbd18b4d069008e3 100644 GIT binary patch delta 25972 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 z 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 F{~xhmaEkx{ delta 20881 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 z z*B}jmogj!PeyUmyGVoMxl}8!)H9GV5Mu$`0K#$$q8Xb+a(N-e1ySn5H20k&O8nyL4 z>Hp%}pjhRr6M1$p1$KxG*z7J5{7Q`MPUPV_2Jp^HyY8j5KsqZTgTN39I4F8OE@PmSnazX7{KjS(MLxv8`;&A|rw zM|9-9a$GW>s=I0{gfHKe%>SXQxVO>amTxff#lhX{H+e#kjCR}P(?)(eRDoY!Ha&!b+1VyWL97?fa2&7m*DCO?eT>MffW+m_)}CWO_7KgMcDE~DKqel4=v zphZ~I+-b-tvSq^5QXOXQ{#MLH)d+ci3Qr30e_+;Kk5d=<{S>}XG~N}cy92Lz^5j%l zir(?^>{On_HS%4lJU7&g7RoMMhdT^(w$(15OodiInj>eV@gypzr|}rxF5i@zD_*4|>BY823Wh40r!nJ24=xdi>8p%iV1o_92+<~{bnfyu=&6#{W zicd2!8SQdN7GEg2a^&S%Jd1ihoW+ZV?fpnKuSv=j7C&_#KEgw)#@;Ufmc>UC?OEAG ztUM)~KN8c6A4$+6gv_irNg4Vi$%yCdXdBaSl>4*!VN>7Q#kLMe*uS9gV+Muedo*i0 zwlC_;G=Ipt*S>D+kl#1+XRa<^i=c}(kWMRORqm2ja^=*#CFAPG_ei;WnoxuivYcNBk2XQ9vU<$H4YuTtR}dDUn>FR^38 zE>AZ!tARB+NPjufE0l!_WE1U97G;c*e;mz+ruP5@p|*5JNfote=<6}6qu^Z4x41R5 z&5M#V$M8vfki2XR9|5;b5J}r4Z1AWDy=z&@He~-Szam%n0&HS5Z+a%21>s{lQz#hvVH}?( z0b4;Xnc6aWUM{Ebl|*MDhBxN&1-iHHY;^R=-{kT+{7QLp9?z9ny}UY)j{`f0@_04| zz)!r^Qzs^w@~l$W5$cIS>vQ_yQ z{(;Zs2l9D=)V)%EFP|@$s#eNH1$?4pUMb^_!-AUjJFv%t2`A5p+w81;OtZ~>O}^uM zutn)Z$#)j#{u5lQ5AO3n!BqoJ!G#SOkwmyY0t{u_h`{;bl5sFSsQ<|e$MX#n-nv~q z|DZFUJa|Xiq|>hI(&pUd26(em`?I<^AA$|Y0n94R>?}F45T^N1mprqOCq>d;egp#f z9%Kcf$ViD;!r|?<6!Mr9YFmP~PG1|{j-hGs>k}n9UFGuWLZ7bTlc_Q4FS9B2NfY=) z%>IoN_|WTI<@t`yP*WLd3h9UI>uZs{k&G@RMCjRq%u6)NGL#0C_};TW4JB?U;h2%W zPb+d#KQktnGQL~U&n&+=fu{zv-G)rXM){WsJWJuG8WgWlC^pc}OOLjKiF~KjTP43U zkr(hvIcO5URhL%<|0drviH}y?-s!W7FYB1Z%~Hp$vSi^YfK0c*7&e`iXIuDT$-P_- zo{TWdxxCRqp8;3OQzrA9p^b+ob5F2g8M*NFTchib?EB;=jFD$g;ityF zdJ{}rFZ2YtmomQJOL??%?)K8&cFU*gf-T2A7<|0$q5IwR(|{KF>QWw?NMT|cKn?iE z<{@7IFvSXvEwWYPIZxhP$`h1G^W{(FgQa|tE*f^KU5=Q_AIYRg&P+RVSyOlhW{uwI zo1dQFpfoT_j2U;DP@fEE3AZqn%P{PBmGKvpqqqC#$pu&NJ;Bt=%$q&1{ash^)liMO z)3_WleBNB!eM+jzB7Ffbf!km361pq-y+E?#O8#Kz^YA6DhN0{x>y+A|;PYhN)$lNeO~(ta=09*=E~j6^Cxw3dA%R$>Jx~csHiE!w z_%&#K6Rj92sGPr{&=R2>WmzOEXsKYYdh+Bi%lRx`A?MG)6j_hoFoPmP*Y(H8&4N-$ z`gzCCU&p6&sbk#nf;l{cN809)H!rfmg#XT2Fw8OzuWyl8SMVo-?#G>dIAUj>oH-X( z2i2u>c@|=F5-@d?$PiV_8?MJ1 z?j9!}yPn5Sqv#MO)mvY(MET-?ZrjjtJ$*7ppFK9%>$==_30~iF5#M?|)oM?&yX~yM z)o$pgy6c!Toazxg$KSwX<`F&(KB*#{7Pv}hNpa^0LovQ+aE8~H*t)85gWWaQVv~!fT?GkoU(vV%WQ?9qA`<|_9>kQU?%B+uN5T{vv%8e z$OL2YlbMR<_&o^up#?murory)2Pfdj5}sGL&EuDr#kmDid)m>t{2h2v>@3sV{1o)C z+g`FHuWqZyS-;)WZJ)Mef$W0ItKYSai&4T=I!eM5me4CYzh-|2T7&M%<>vLz?5lYlnpbNC@u$9kF zYOss`k?bb>RXFe5cWXWryVeuV9QX|_jFDTsmF3DAH}YviT=vq7_)Q2SX`;(6*WL&X zs<+Ee+{j}jr(J#>@0r#1X%`C-qF9{kJrhx8>Wg@lebGhYAHQiNdA&AQFk~JEc{}A{ zi+FB|%YFrZIljpDPjILzI!$T4$5p=>8-wnPNF`tFu*<6!@uUdi64Qx5|1;EohP@kc z`1B&4ECJ-bMchth!D610NHgrhPPPI&S;_Y+R)zSAfm}7MMW?)OF?@=}E+1SB7fX|T z{cZV<6h(O$7^uZ^E$X}y6M~7uZgD*^{lj7&nNe?_)=BNz=Bs#=`77xq>~fs;GK3u@xrB9xXGTxu1cUl{HiR_QcKNi8mxfY1#dqt#&8Ix7 zuwG7F!lStJc>WR?#v}!;p$+Kr9fOo?decGN&gv%;bnF!u&^%%1({vWQ(e9Fevtyr7 zDQ7zPmDBU;9tPs$&maWZ-f?ReemSH~a|W63Ry!rL>(JJ`o$B0pe}^*SIGPD$ZIKz# zpGo!gbcnsUGqd$`iI|66Uw81NQS~5}wn(^ya*!zKuorEmpcFn32OqWl)DC7k=`b5* zKW4d-Poim=SIOhY=1oDW%$~2Sa$^jsl@0x z8ij%C??Ad?6^POD+-BS6U|5G-I;UYum`Ikx?5wl7O7?c>@GAv$z1LMDKYTM^6xM=I z35X*9l{M6d-NJK}IH~z>^0ZqJ*Hy}!Z{ZGI8$KGSkbk~~FV@|H#{=>W%lP~V+S!-= zO|=%^V12PNi5-yNUd9uK(68^}$J4gaEeuvGUs%R7P`5*=bEqS$>Kzm@#>3S~DtV+EfhL=KLu1J3XE@~s?Y%%O3{8G_jo}y|Aq5zdDLn|EWPq|t9gQC zt~fv{p~e8mbb~@tl?KCQcr!xI~ZYaNo&JU7M=0;vm6KJnGHuYjM=uK_dP(; zCf{`rPnGl;a@Ja&6i2-X(%-8KUoigB<5RVVZtef0#|!__V;Mj(#x5$5b6Cse;06ql zsBxAC=E)0cko*7zH83%4^3yfQI&{b%*6{H`EzodgZ7FG$tuXTX< zCSp)Zg^~Cam_Lbc9NJrR<<(AX_^NZ|=be22ur>_wDZCoXt2mRK*1}Tpg;u~ThSCQ4 zu5~;%qMay!^Laet|J8IDMW4=$|d=0Q&B9S7%SUykb3K(^mPR^~!9XT+i=Jryf>VpEnTc z>hrETa}u}B=*v|Sk3R*%s-7)rmv5}&2_du&S{3JtwIJVD$CHD*fxj16nup0*tCV!k zyQr3;^W(r5nbNd9j4THe-L*F6VDn*3R6`7!;qjuieaZ zs64!xPY8%Rah#A*l)Ort*mfek`;K7uZ9w`=jJE?e1=pZ`;l9l{#OR`*$P7*C21$1J!jOKT3tv@wEKa zgRnMkIkXX8*pR2*`IR>`!e95u5f7mfFv}l;YhEPZ_Ylnb2>Ikg*ne9>u|39txT(R4 z`vJ)%N&;7Y=wUu7K0}>u7nEn`bD8!D<^6TdhCr=6m8TdCSif)?vDk8a5fq8Q~z?egUyl zS)RP~QGP7g6+)j3*LIfY$r(*ZTUO-BtD1O077GF8mRGSV)zce_olMR)HWpGNJQU+t z^Rmu9L~&T2+||V6W0ZQ-G3)*k(h*kKT(VtlkKD^M5_{73chYUtLR>@hdYf$|nL?wM z8Pi@vYWp#=%X|5pqAH-Up<8uc_SyR;;s4~=wh3gUz=Xq$vm}(sCGUH?^)wv84jgW_ z(oepym(P@{FO#S5gQuM=-?WcshnkTnO@pKwk55v9z%?()KkNg6?qCWO zH+l4quWiA|xij|p)=0W<1sOu&J^x>6*8?0?dF}7LyU-9~SdsDq=FgQ7j0l@023Y=f z`BR9Nx1{c5R~qYS^~w1_*SWVu$JQ!nT7N zolv(no_b=f#*}#?k^I|mi7Q5$&yf|AO^#|DC-w*WItP&j4JbgsAPfA*$ z0)#JEJbMcs##*JMxTrU?3rFOYO2itQ_OiTflp^hkJr|Xak5K}j$EuIZimXJTdO0CK z1S9N^C*(dZ@$+8!FE*v(!`P1hl;J~c$2|6UA9xHSpY+K~Axe8<_JsUKhLU_I_EEn) zZ8Ya(e;_xF9q)Pz4geumGbK0-mG%{b)h9oZ-ydCZ8j^1hYx-0^rG$PTE4?J&Bkb(D zEMFU|INo48zTiE>9`?&G;1&V+hcD#m)8emVna|Htd7B`)9)Yip@JIQk+``kC|F6-| ze@wh4S7$n3$GkXz#=1st zL%rJKSN(wopSrcq>-BF?iy&w4XZwS9iWl1&nzq($YTU4h_$wNH^{U@nuWAEoT??qG z3yYc;b6qj+YuNrxvNg+8)zMbuaC+O+nKKvbuhpVvZqVmfeGTYo zpb1>u>aQ0TGz0dg25+5xldsk8ZS-yN`!+P#TQ)Z~*MeNDw*mfcjIXhU2$hS@=M#8? zUr*-swuwb=@HW)>S_9Y1nnar$HncSQed<4+SoQf^)Q$dDUp)m*;_|wmuzs_nW>1Bq zdPu;>>m9sKM9gJ$P@m8=U$DX8pxCoOT~pmw$OG7G+|o=bu&KFmN5i5bZ>w5d)O?4Q z8d9LC(bux2wywUuX%P=*8x1%4ujg@(nzmoZ52B}!Y^~kY&~n|V7=&NVG;Vf-^8>B_ zSdWjJ^_m(s)oy_-daxmQ<2hS>UyIyGqOh<~H3mxGWL0w+G5YJ@{Pwli--z`bJAR_~ zBr>wWyH)4cZ>@y_vOWA>SQu+hUcIr8)^hGw$|ntMfM2ixIV{&bJ9J75?K; z9f(3x1@+d<*q~K;Mb6*W;(ufd_%Fucm!RP?Lz;DrR(>42`8&!ltikfq|AkxC$jJFw zh{J>$-;5a~pF>zo=p;1De+xZ!q>2=Gma_R-%DUh{1v;Ys5HY+uoz}+9sLB767#uMh zIAn6bJg(8XtI{3S`2Rl)j*Mt4(-a5XXxKxjjhj)E*W@(Xj9Ijxt{f|ZSYI> z@FeAy;Q9Z+p+Uk+gjWgsP4t9kP~LhF@tbIkuc0Py!r+L;$TAt$_}_-#GJ$UY#&WQ6 zHy#+#70nKqLUjtt!=DBfdQQS}LJwgZVVLj`VVtlZF({>oAr+#*9Kz0}7BNBlGQ>aujwkMy zkWX~)0;D^MhU#C8M~L>UNBR)a;k8Kj2znKKjhZ9LiAdgi~o3^#&P$*B7N{F_HTvCVr3ybOj)Q*8>20J)V?eKGODUlR^|QA z7u@+>+d6m!8mW5`hif4&`>x!|0#lX17%fWaN|OWY)0Hwj7);5!@5)5xDN@>RD&L4K zM+ijsU6~vV4ZeyFy2eq&^N=ntK!gW2F~Z9cb6jLp(#BD*e+ts^LPWXoaD}$d`^Fszirw#|h$uF1`}5;~+ZeCi%M&T~VSxLJYi* zn0QYL3dJymEOHPB+MYx796;>dkC-Bi-j5MEzYqD57ZI}vb2lP==_SM};#UzJC%w)m zgD4PaMhvwgp5KP3(u9?S?S!@t9KZSuqSJ>Mr-^ePCYnMmJ&Sap3?t=%(DR5TgLmPJ zcABt$I|}v^R_;LBLmo?yBi$82ta%=BIEkPw1p1 zsks9MqQ&T7h*nVkB=R@Yo`&mjD;%2;U6ia&!Z>Z!8A9hgv^R`71^G`|n?v^j_>U4q zXrz}3B~%E|<<>^{+DYW+E+nK#CXS-sDsrIw9MTa7%H_O+w5ycU{Q9dw&x@zxjU-A} zLpd2Z^DZe6I^RS(`h7I0-9an7YAlfG|XFu3>GV_sMwut9fYHR)m;XgLs-Is+maR zRfyqFaiV&TuJiFH+Y88j5MSvf<5BV1l(D*UL z08OZNBQ04d)ES7OT_i_a=6M3?i&TL~;)WHJq+w!IoI-){5yU7d+I~y?7@|ZN{|(X= z+W23PR?i{kXpSa{Pj^U9HaR*EFauVY;0&m`YN5U^V{IkMcjYOpqeLl?r?PGi(^wzE z5JI*Cn71=KfCX;X`>ssL%mX_G@NY&j^YPI;SOjq;cV4=mo&K_;JB+eYzE_Z9;!-uWeI zBw^Hx8uXw-V5`?Cc~)Kyga6YtgS=jbm84HN>gx$3>)6mTaBn@%m#St%;HFX_v6A&l zzI;Ekmx4RdT9(bR=0WBY^aj?!F?S;mTD}tB$oe?lzljZTEPIG$-v#LOA?7}e7-(ib z&JVTnsOBr}+gLZJ&u`;9lCRWnN9^5>^HuI(c38er^JC@)w5mJB>aw)eIg!?Pt8J$U zms0U4`ZMq-?)xqd`O5NL%sv~;6hoC_+~l$#^8sIpgivmPFy}F5UkLmBSh_eo*^@mN zV)nRLymjvr>BC)5u)g^)yqk5*0i*pt<*Ade^zIR8wf!tzyys`EV>V0zg$DSfFU?`1 zok;6Tt=x;gw(rG|r2yx`G`0>l#IZLl#;v@NG1}#YkCEo3n~~-vppoVUj*;f|3eaP< zE$DnwV&{0O>_>kp3EK&K2~+!-ZyqcY+9{(s-d+K%FALhKAt$&G?Ns)BK=0Gc&e3y# zUq<=L)n}NG(~*O?Z0T9t>Cm&7QEktOO|k6$g~a^#DEXF1`g~nT>+{t-kGnMCSNztH zuVi&$Mt60gy~-Dm&Uz6uwdzHjH}WF-S@ja)CBpVYD6bwSzW}*i>4-pU3d%I&`gz%A zT)*@(^DP4ToLAWpgiD4Gl6mqBzA6&i%9}2uIxpgk>TTW3z8KUB*w7MyZsuDI+KHpW zc`NT5jM^Tg^}U1|l&yBdUjCZjy7H~z*VE-MnrKHXefHfk=Ht_z5V5pMr_$A{kk(`W z$|+3IjJQb-X*G~SIe&f;C9{G3QB`AU}e%(0k7!o;Wfi{KXo1$($PQm+-TeLLbM!q6{C^nrvpYhjI@67M03G#2^b#CWxiDqki2wxei&ek zL?WNL?}m9(aEt+b-44|3tOU|S0XzzKatj;+81+K8GvB>n9@)AY^p)&fDO3Rb@W5yf zjz!ox?w16QH-cZhhT%6xIMon*3p8?U^)jvrHL!7}L@BfX06ffvni%+cWO#dGqoQa1pxWVEl_*2aS$5|G|Oz<0$4m0-9`;)C&-j(0GeUu=W_v;@aXcs0yOmm zj4Wpzd^ezK2euv}UfmmM-rE{!-VYgR-X{UAhXVQ}R>HHiVkPV5$prn4QU0`vPMK)6 zT*&Kg!q)`*R>Lw*uVO=hR^Fi+=Y!Uk0$>_|9#;fFUX6Z02W#}>jEPQ}Xx`Zx<#`ul zq{B$->xKrE9i0X1POM>WHzey?X1@oP4?T_1UFczI2D zY&0C9ip#=ctHNZkMxd89y1;u|Bb@{Nk#R1^ePjU|Cy`E833^Q9T)EZEw-$o>l!teT6r62Tr_VNjdMYJ z$i~4P-OBq$<3KnD11n$-=o5jjr$Wv#mR$wx)G=_9EAmb^P4R>XU%qk@_eFW_B(qmT z6i%@|P_zc1aW%@rp#{E$sOOj+-XN{~Gy??mt3M2#tC0>Q1+9DJ`cUXu;Iu;+vhw2& zqXIwfFwO|aApFjlXMyt%QP#r4SK>Oc@-E$|8HH}$Nb}|x=-6PjQX?y!xol~TVjq*p z!*iSjd!$Bjj@M2IdBY1ou9VC|`AQy3)+n~I+UE#>?0;&M+2h0X!2+NVSMOv?f27zm zqw}c`pU-yuNSOoQ%EI$Gc*^QHr)@;rTa}^jqUaKt5 eTt)2245oOLx$+J+-=lmlV+RWVlKrqqDfmA>2#xgs delta 33402 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

ozFGU$SQv8-@!9*9)W3!b(BgN#g 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