mirror of
https://github.com/elseif/MikroTikPatch.git
synced 2026-09-07 10:34:36 +00:00
Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dc8118e5ab | ||
|
|
9b4d525aa2 | ||
|
|
eef9552fda | ||
|
|
2126382b54 | ||
|
|
a9eef1d574 | ||
|
|
bd097583eb | ||
|
|
23a853d585 | ||
|
|
9b6b8c7e2f | ||
|
|
4c52806821 | ||
|
|
136c1ddcd4 | ||
|
|
e5fb3ff784 | ||
|
|
9dd745578b | ||
|
|
9d06111ac5 | ||
|
|
7fdd5724bb | ||
|
|
7719188665 | ||
|
|
016a2de24f | ||
|
|
2957c5a6ef | ||
|
|
ec407be988 | ||
|
|
ed0815f070 | ||
|
|
e88fbc0161 | ||
|
|
6d1ebb4d8a | ||
|
|
ca24fa62b1 | ||
|
|
73f15e63e7 | ||
|
|
96df91e97c | ||
|
|
65fd858255 | ||
|
|
208a160edc | ||
|
|
c3781d822e | ||
|
|
f2eefbcc8f | ||
|
|
dc31de2e33 | ||
|
|
8d6181eb84 | ||
|
|
6a69a53051 |
17
.github/workflows/mikrotik_patch_6.yml
vendored
17
.github/workflows/mikrotik_patch_6.yml
vendored
@@ -138,6 +138,7 @@ jobs:
|
|||||||
if: steps.get_latest.outputs.has_new_version == 'true'
|
if: steps.get_latest.outputs.has_new_version == 'true'
|
||||||
run: |
|
run: |
|
||||||
sudo modprobe nbd
|
sudo modprobe nbd
|
||||||
|
sudo apt-get update
|
||||||
sudo apt-get install -y qemu-utils extlinux > /dev/null
|
sudo apt-get install -y qemu-utils extlinux > /dev/null
|
||||||
truncate --size 64M install-image-$LATEST_VERSION.img
|
truncate --size 64M install-image-$LATEST_VERSION.img
|
||||||
sudo qemu-nbd -c /dev/nbd0 -f raw install-image-$LATEST_VERSION.img
|
sudo qemu-nbd -c /dev/nbd0 -f raw install-image-$LATEST_VERSION.img
|
||||||
@@ -191,6 +192,7 @@ jobs:
|
|||||||
sudo cp ./all_packages/dude-$LATEST_VERSION.npk ./chr/var/pdb/dude/image
|
sudo cp ./all_packages/dude-$LATEST_VERSION.npk ./chr/var/pdb/dude/image
|
||||||
sudo -E python3 patch.py npk ./chr/var/pdb/routeros-x86/image
|
sudo -E python3 patch.py npk ./chr/var/pdb/routeros-x86/image
|
||||||
sudo cp ./chr/var/pdb/routeros-x86/image ./all_packages/routeros-x86-$LATEST_VERSION.npk
|
sudo cp ./chr/var/pdb/routeros-x86/image ./all_packages/routeros-x86-$LATEST_VERSION.npk
|
||||||
|
sudo cp ./all_packages/routeros-x86-$LATEST_VERSION.npk routeros-x86-$LATEST_VERSION.npk
|
||||||
sudo umount ./chr
|
sudo umount ./chr
|
||||||
sudo qemu-nbd -d /dev/nbd0
|
sudo qemu-nbd -d /dev/nbd0
|
||||||
sudo rm -rf ./chr
|
sudo rm -rf ./chr
|
||||||
@@ -219,17 +221,18 @@ jobs:
|
|||||||
- name: Upload Files
|
- name: Upload Files
|
||||||
if: steps.get_latest.outputs.has_new_version == 'true'
|
if: steps.get_latest.outputs.has_new_version == 'true'
|
||||||
run: |
|
run: |
|
||||||
mkdir -p ./publish/$LATEST_VERSION
|
sudo mkdir -p ./publish/$LATEST_VERSION
|
||||||
echo $LATEST_VERSION $BUILD_TIME > ./publish/NEWEST6.${{ matrix.channel }}
|
echo $LATEST_VERSION $BUILD_TIME | sudo tee ./publish/NEWESTa6.${{ matrix.channel }}
|
||||||
cp CHANGELOG ./publish/$LATEST_VERSION/
|
sudo cp CHANGELOG ./publish/$LATEST_VERSION/
|
||||||
cp ./all_packages/*.npk ./publish/$LATEST_VERSION/
|
sudo cp ./all_packages/*.npk ./publish/$LATEST_VERSION/
|
||||||
sudo apt-get install -y lftp > /dev/null 2>&1
|
sudo chown -R root:root ./publish/
|
||||||
|
sudo apt-get install -y lftp ssh sshpass > /dev/null 2>&1
|
||||||
sudo -E lftp -u ${{ secrets.SSH_USERNAME }},'${{ secrets.SSH_PASSWORD }}' sftp://${{ secrets.SSH_SERVER }}:${{ secrets.SSH_PORT }} <<EOF
|
sudo -E lftp -u ${{ secrets.SSH_USERNAME }},'${{ secrets.SSH_PASSWORD }}' sftp://${{ secrets.SSH_SERVER }}:${{ secrets.SSH_PORT }} <<EOF
|
||||||
set sftp:auto-confirm yes
|
set sftp:auto-confirm yes
|
||||||
mirror --reverse --verbose --only-newer ./publish ${{ secrets.SSH_DIRECTORY }}
|
mirror --reverse --verbose --only-newer ./publish ${{ secrets.SSH_DIRECTORY }}
|
||||||
bye
|
bye
|
||||||
EOF
|
EOF
|
||||||
|
sshpass -p "${{ secrets.SSH_PASSWORD }}" ssh -o StrictHostKeyChecking=no -p ${{ secrets.SSH_PORT }} ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_SERVER }} "chown -R 32768:32768 /rw/disk/${{ secrets.SSH_DIRECTORY }}/"
|
||||||
- name: Clear Cloudflare cache
|
- name: Clear Cloudflare cache
|
||||||
if: steps.get_latest.outputs.has_new_version == 'true'
|
if: steps.get_latest.outputs.has_new_version == 'true'
|
||||||
run: |
|
run: |
|
||||||
@@ -267,5 +270,5 @@ jobs:
|
|||||||
mikrotik-${{ env.LATEST_VERSION }}.iso
|
mikrotik-${{ env.LATEST_VERSION }}.iso
|
||||||
chr-${{ env.LATEST_VERSION }}*.zip
|
chr-${{ env.LATEST_VERSION }}*.zip
|
||||||
install-image-${{ env.LATEST_VERSION }}.zip
|
install-image-${{ env.LATEST_VERSION }}.zip
|
||||||
system-${{ env.LATEST_VERSION }}.npk
|
routeros-x86-${{ env.LATEST_VERSION }}.npk
|
||||||
all_packages-x86-${{ env.LATEST_VERSION }}.zip
|
all_packages-x86-${{ env.LATEST_VERSION }}.zip
|
||||||
|
|||||||
25
.github/workflows/mikrotik_patch_7.yml
vendored
25
.github/workflows/mikrotik_patch_7.yml
vendored
@@ -86,6 +86,7 @@ jobs:
|
|||||||
ARCH='-arm64'
|
ARCH='-arm64'
|
||||||
echo "ARCH=$ARCH" >> $GITHUB_ENV
|
echo "ARCH=$ARCH" >> $GITHUB_ENV
|
||||||
fi
|
fi
|
||||||
|
sudo apt-get update > /dev/null
|
||||||
|
|
||||||
- name: Cache Squashfs
|
- name: Cache Squashfs
|
||||||
if: steps.get_latest.outputs.has_new_version == 'true'
|
if: steps.get_latest.outputs.has_new_version == 'true'
|
||||||
@@ -120,12 +121,12 @@ jobs:
|
|||||||
sudo mksquashfs option-root option.sfs -quiet -comp xz -no-xattrs -b 256k
|
sudo mksquashfs option-root option.sfs -quiet -comp xz -no-xattrs -b 256k
|
||||||
sudo rm -rf option-root
|
sudo rm -rf option-root
|
||||||
if [ "${{ matrix.arch }}" == "x86" ]; then
|
if [ "${{ matrix.arch }}" == "x86" ]; then
|
||||||
sudo wget -O cpython-3.11.9.tar.gz -nv https://github.com/indygreg/python-build-standalone/releases/download/20240713/cpython-3.11.9+20240713-x86_64-unknown-linux-gnu-install_only.tar.gz
|
sudo wget -O cpython.tar.gz -nv https://github.com/indygreg/python-build-standalone/releases/download/20241016/cpython-3.11.10+20241016-x86_64-unknown-linux-musl-install_only_stripped.tar.gz
|
||||||
elif [ "${{ matrix.arch }}" == "arm64" ]; then
|
elif [ "${{ matrix.arch }}" == "arm64" ]; then
|
||||||
sudo wget -O cpython-3.11.9.tar.gz -nv https://github.com/indygreg/python-build-standalone/releases/download/20240713/cpython-3.11.9+20240713-aarch64-unknown-linux-gnu-install_only.tar.gz
|
sudo wget -O cpython.tar.gz -nv https://github.com/indygreg/python-build-standalone/releases/download/20241016/cpython-3.11.10+20241016-aarch64-unknown-linux-gnu-install_only_stripped.tar.gz
|
||||||
fi
|
fi
|
||||||
sudo tar -xf cpython-3.11.9.tar.gz
|
sudo tar -xf cpython.tar.gz
|
||||||
sudo rm cpython-3.11.9.tar.gz
|
sudo rm cpython.tar.gz
|
||||||
sudo rm -rf ./python/include
|
sudo rm -rf ./python/include
|
||||||
sudo rm -rf ./python/share
|
sudo rm -rf ./python/share
|
||||||
sudo mksquashfs python python3.sfs -quiet -comp xz -no-xattrs -b 256k
|
sudo mksquashfs python python3.sfs -quiet -comp xz -no-xattrs -b 256k
|
||||||
@@ -378,16 +379,19 @@ jobs:
|
|||||||
- name: Upload Files
|
- name: Upload Files
|
||||||
if: steps.get_latest.outputs.has_new_version == 'true'
|
if: steps.get_latest.outputs.has_new_version == 'true'
|
||||||
run: |
|
run: |
|
||||||
mkdir -p ./publish/$LATEST_VERSION
|
sudo mkdir -p ./publish/$LATEST_VERSION
|
||||||
echo $LATEST_VERSION $BUILD_TIME > ./publish/NEWESTa7.${{ matrix.channel }}
|
echo $LATEST_VERSION $BUILD_TIME | sudo tee ./publish/NEWESTa7.${{ matrix.channel }}
|
||||||
cp CHANGELOG ./publish/$LATEST_VERSION/
|
sudo cp CHANGELOG ./publish/$LATEST_VERSION/
|
||||||
cp ./all_packages/*.npk ./publish/$LATEST_VERSION/
|
sudo cp ./all_packages/*.npk ./publish/$LATEST_VERSION/
|
||||||
sudo apt-get install -y lftp > /dev/null 2>&1
|
sudo chown -R root:root ./publish/
|
||||||
|
sudo apt-get install -y lftp ssh sshpass > /dev/null 2>&1
|
||||||
sudo -E lftp -u ${{ secrets.SSH_USERNAME }},'${{ secrets.SSH_PASSWORD }}' sftp://${{ secrets.SSH_SERVER }}:${{ secrets.SSH_PORT }} <<EOF
|
sudo -E lftp -u ${{ secrets.SSH_USERNAME }},'${{ secrets.SSH_PASSWORD }}' sftp://${{ secrets.SSH_SERVER }}:${{ secrets.SSH_PORT }} <<EOF
|
||||||
set sftp:auto-confirm yes
|
set sftp:auto-confirm yes
|
||||||
mirror --reverse --verbose --only-newer ./publish ${{ secrets.SSH_DIRECTORY }}
|
mirror --reverse --verbose --only-newer ./publish ${{ secrets.SSH_DIRECTORY }}
|
||||||
bye
|
bye
|
||||||
EOF
|
EOF
|
||||||
|
sudo apt-get install ssh sshpass
|
||||||
|
sshpass -p "${{ secrets.SSH_PASSWORD }}" ssh -o StrictHostKeyChecking=no -p ${{ secrets.SSH_PORT }} ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_SERVER }} "chown -R 32768:32768 /rw/disk/${{ secrets.SSH_DIRECTORY }}/"
|
||||||
|
|
||||||
- name: Clear Cloudflare cache
|
- name: Clear Cloudflare cache
|
||||||
if: steps.get_latest.outputs.has_new_version == 'true'
|
if: steps.get_latest.outputs.has_new_version == 'true'
|
||||||
@@ -428,6 +432,5 @@ jobs:
|
|||||||
netinstall-${{ env.LATEST_VERSION }}.*
|
netinstall-${{ env.LATEST_VERSION }}.*
|
||||||
install-image-${{ env.LATEST_VERSION }}.zip
|
install-image-${{ env.LATEST_VERSION }}.zip
|
||||||
routeros-${{ env.LATEST_VERSION }}${{ env.ARCH }}.npk
|
routeros-${{ env.LATEST_VERSION }}${{ env.ARCH }}.npk
|
||||||
option-${{ env.LATEST_VERSION }}${{ env.ARCH }}.npk
|
|
||||||
all_packages-*-${{ env.LATEST_VERSION }}.zip
|
all_packages-*-${{ env.LATEST_VERSION }}.zip
|
||||||
*.EFI
|
|
||||||
|
|||||||
@@ -1,14 +1,11 @@
|
|||||||
# MikroTik RouterOS Patch [[English](README_EN.md)]
|
# MikroTik RouterOS Patch [[English](README_EN.md)]
|
||||||
|
|
||||||
|
### [[Discord](https://discord.gg/keV6MWQFtX)] [[Telegram](https://t.me/mikrotikpatch)] [[Keygen(Telegram Bot)](https://t.me/ROS_Keygen_Bot)]
|
||||||
|
|
||||||
### 国内镜像下载 密码: elseif
|
### 国内镜像下载 密码: elseif
|
||||||
[ [123pan](https://www.123pan.com/s/IpxgTd-BYjQh.html) ]
|
[ [123pan](https://www.123pan.com/s/IpxgTd-BYjQh.html) ]
|
||||||
[ [7.15.3](https://elseif.lanzouj.com/b00cre7g7a)]
|
[ [7.15.3](https://elseif.lanzouj.com/b00cre7g7a)]
|
||||||
[ [7.15.2](https://elseif.lanzouj.com/b00crdq4hg)]
|
|
||||||
[ [7.16beta4](https://elseif.lanzouj.com/b00crdq4fe) ]
|
|
||||||
[ [7.15.3-arm64](https://elseif.lanzouj.com/b00cre7g8b) ]
|
[ [7.15.3-arm64](https://elseif.lanzouj.com/b00cre7g8b) ]
|
||||||
[ [7.15.2-arm64](https://elseif.lanzouj.com/b00crdq4ih) ]
|
|
||||||
[ [7.16beta4-arm64](https://elseif.lanzouj.com/b00crdq4gf) ]
|
|
||||||
[ [6.49.15](https://elseif.lanzouj.com/b00crdq4ji) ]
|
[ [6.49.15](https://elseif.lanzouj.com/b00crdq4ji) ]
|
||||||
[ [6.49.13](https://elseif.lanzouj.com/b00crdq4kj) ]
|
[ [6.49.13](https://elseif.lanzouj.com/b00crdq4kj) ]
|
||||||
|
|
||||||
@@ -26,6 +23,9 @@
|
|||||||
### Chr模式授权许可
|
### Chr模式授权许可
|
||||||

|

|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
## 如何使用Shell
|
## 如何使用Shell
|
||||||
安装 option-{version}.npk 包
|
安装 option-{version}.npk 包
|
||||||
telnet到RouterOS,用户名devel,密码与admin的密码相同
|
telnet到RouterOS,用户名devel,密码与admin的密码相同
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# MikroTik RouterOS Patch [[中文](README.md)]
|
# MikroTik RouterOS Patch [[中文](README.md)]
|
||||||
|
|
||||||
### [[Discord](https://discord.gg/keV6MWQFtX)] [[Telegram](https://t.me/+99Mw06p3K7NlMmNl)]
|
### [[Discord](https://discord.gg/keV6MWQFtX)] [[Telegram](https://t.me/mikrotikpatch)] [[Keygen(Telegram Bot)](https://t.me/ROS_Keygen_Bot)]
|
||||||
|
|
||||||
### Download [Latest Patched](https://github.com/elseif/MikroTikPatch/releases/latest) iso file,install it and enjoy.
|
### Download [Latest Patched](https://github.com/elseif/MikroTikPatch/releases/latest) iso file,install it and enjoy.
|
||||||
### CHR image is both support BIOS and UEFI boot mode.
|
### CHR image is both support BIOS and UEFI boot mode.
|
||||||
@@ -19,6 +19,9 @@
|
|||||||
### license RouterOS for chr
|
### license RouterOS for chr
|
||||||

|

|
||||||
|
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
## How to use shell
|
## How to use shell
|
||||||
install option-{version}.npk package
|
install option-{version}.npk package
|
||||||
run telnet to routeros with username devel and password is same as admin
|
run telnet to routeros with username devel and password is same as admin
|
||||||
|
|||||||
BIN
image/arm.png
Normal file
BIN
image/arm.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 464 KiB |
BIN
image/mips.png
Normal file
BIN
image/mips.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 725 KiB |
3
mikro.py
3
mikro.py
@@ -4,8 +4,7 @@ from sha256 import SHA256
|
|||||||
from toyecc import AffineCurvePoint, getcurvebyname, FieldElement,ECPrivateKey,ECPublicKey,Tools
|
from toyecc import AffineCurvePoint, getcurvebyname, FieldElement,ECPrivateKey,ECPublicKey,Tools
|
||||||
from toyecc.Random import secure_rand_int_between
|
from toyecc.Random import secure_rand_int_between
|
||||||
|
|
||||||
MIKRO_LICENSE_HEADER = '-----BEGIN MIKROTIK SOFTWARE KEY------------'
|
|
||||||
MIKRO_LICENSE_FOOTER = '-----END MIKROTIK SOFTWARE KEY--------------'
|
|
||||||
MIKRO_BASE64_CHARACTER_TABLE = b'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
|
MIKRO_BASE64_CHARACTER_TABLE = b'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
|
||||||
SOFTWARE_ID_CHARACTER_TABLE = b'TN0BYX18S5HZ4IA67DGF3LPCJQRUK9MW2VE'
|
SOFTWARE_ID_CHARACTER_TABLE = b'TN0BYX18S5HZ4IA67DGF3LPCJQRUK9MW2VE'
|
||||||
|
|
||||||
|
|||||||
26
patch.py
26
patch.py
@@ -87,6 +87,9 @@ def patch_initrd_xz(initrd_xz:bytes,key_dict:dict,ljust=True):
|
|||||||
new_initrd_xz = lzma.compress(new_initrd,check=lzma.CHECK_CRC32,filters=[{"id": lzma.FILTER_LZMA2, "preset": 9,}] )
|
new_initrd_xz = lzma.compress(new_initrd,check=lzma.CHECK_CRC32,filters=[{"id": lzma.FILTER_LZMA2, "preset": 9,}] )
|
||||||
if ljust:
|
if ljust:
|
||||||
assert len(new_initrd_xz) <= len(initrd_xz),'new initrd xz size is too big'
|
assert len(new_initrd_xz) <= len(initrd_xz),'new initrd xz size is too big'
|
||||||
|
print(f'new initrd xz size:{len(new_initrd_xz)}')
|
||||||
|
print(f'old initrd xz size:{len(initrd_xz)}')
|
||||||
|
print(f'ljust size:{len(initrd_xz)-len(new_initrd_xz)}')
|
||||||
new_initrd_xz = new_initrd_xz.ljust(len(initrd_xz),b'\0')
|
new_initrd_xz = new_initrd_xz.ljust(len(initrd_xz),b'\0')
|
||||||
return new_initrd_xz
|
return new_initrd_xz
|
||||||
|
|
||||||
@@ -102,6 +105,7 @@ def find_7zXZ_data(data:bytes):
|
|||||||
while b'\x00\x00\x00\x00\x01\x59\x5A' in _data:
|
while b'\x00\x00\x00\x00\x01\x59\x5A' in _data:
|
||||||
offset2 = offset2 + _data.index(b'\x00\x00\x00\x00\x01\x59\x5A') + 7
|
offset2 = offset2 + _data.index(b'\x00\x00\x00\x00\x01\x59\x5A') + 7
|
||||||
_data = _data[offset2:]
|
_data = _data[offset2:]
|
||||||
|
print(f'found 7zXZ data offset:{offset1} size:{offset2-offset1}')
|
||||||
return data[offset1:offset2]
|
return data[offset1:offset2]
|
||||||
|
|
||||||
def patch_elf(data: bytes,key_dict:dict):
|
def patch_elf(data: bytes,key_dict:dict):
|
||||||
@@ -119,6 +123,9 @@ def patch_pe(data: bytes,key_dict:dict):
|
|||||||
new_vmlinux = vmlinux.replace(initrd_xz,new_initrd_xz)
|
new_vmlinux = vmlinux.replace(initrd_xz,new_initrd_xz)
|
||||||
new_vmlinux_xz = lzma.compress(new_vmlinux,check=lzma.CHECK_CRC32,filters=[{"id": lzma.FILTER_LZMA2, "preset": 9,}] )
|
new_vmlinux_xz = lzma.compress(new_vmlinux,check=lzma.CHECK_CRC32,filters=[{"id": lzma.FILTER_LZMA2, "preset": 9,}] )
|
||||||
assert len(new_vmlinux_xz) <= len(vmlinux_xz),'new vmlinux xz size is too big'
|
assert len(new_vmlinux_xz) <= len(vmlinux_xz),'new vmlinux xz size is too big'
|
||||||
|
print(f'new vmlinux xz size:{len(new_vmlinux_xz)}')
|
||||||
|
print(f'old vmlinux xz size:{len(vmlinux_xz)}')
|
||||||
|
print(f'ljust size:{len(vmlinux_xz)-len(new_vmlinux_xz)}')
|
||||||
new_vmlinux_xz = new_vmlinux_xz.ljust(len(vmlinux_xz),b'\0')
|
new_vmlinux_xz = new_vmlinux_xz.ljust(len(vmlinux_xz),b'\0')
|
||||||
new_data = data.replace(vmlinux_xz,new_vmlinux_xz)
|
new_data = data.replace(vmlinux_xz,new_vmlinux_xz)
|
||||||
return new_data
|
return new_data
|
||||||
@@ -150,19 +157,20 @@ def patch_netinstall(key_dict: dict,input_file,output_file=None):
|
|||||||
rva = sub_resource.directory.entries[0].data.struct.OffsetToData
|
rva = sub_resource.directory.entries[0].data.struct.OffsetToData
|
||||||
size = sub_resource.directory.entries[0].data.struct.Size
|
size = sub_resource.directory.entries[0].data.struct.Size
|
||||||
data = pe.get_data(rva,size)
|
data = pe.get_data(rva,size)
|
||||||
assert len(data) -4 >= struct.unpack_from('<I',data)[0] ,f'bootloader data size mismathch'
|
_size = struct.unpack('<I',data[:4])[0]
|
||||||
data = data[4:]
|
_data = data[4:4+_size]
|
||||||
try:
|
try:
|
||||||
if data[:2] == b'MZ':
|
if _data[:2] == b'MZ':
|
||||||
new_data = patch_pe(data,key_dict)
|
new_data = patch_pe(_data,key_dict)
|
||||||
elif data[:4] == b'\x7FELF':
|
elif _data[:4] == b'\x7FELF':
|
||||||
new_data = patch_elf(data,key_dict)
|
new_data = patch_elf(_data,key_dict)
|
||||||
else:
|
else:
|
||||||
raise Exception(f'unknown bootloader format {data[:4].hex().upper()}')
|
raise Exception(f'unknown bootloader format {_data[:4].hex().upper()}')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f'patch {bootloader["arch"]}({sub_resource.id}) bootloader failed {e}')
|
print(f'patch {bootloader["arch"]}({sub_resource.id}) bootloader failed {e}')
|
||||||
new_data = data
|
new_data = _data
|
||||||
new_data = struct.pack("<I",len(new_data)) + new_data.ljust(len(data),b'\0')
|
new_data = struct.pack("<I",_size) + new_data.ljust(len(_data),b'\0')
|
||||||
|
new_data = new_data.ljust(size,b'\0')
|
||||||
pe.set_bytes_at_rva(rva,new_data)
|
pe.set_bytes_at_rva(rva,new_data)
|
||||||
pe.write(output_file or input_file)
|
pe.write(output_file or input_file)
|
||||||
elif netinstall[:4] == b'\x7FELF':
|
elif netinstall[:4] == b'\x7FELF':
|
||||||
|
|||||||
Reference in New Issue
Block a user