集包解包操作规范流程
- 格式:ppt
- 大小:1.52 MB
- 文档页数:12
使用tar命令打包和解包文件和tar命令是Linux及Unix系统中常用的文件打包和解包工具之一。
它可以将多个文件或目录打包成一个归档文件,并且可以通过解包还原出原始文件和目录结构。
本文将介绍tar命令的主要用法和一些常见的应用场景。
一、tar命令的基本用法1. 打包文件:要打包文件,可以使用tar命令的-c参数,结合-f参数指定归档文件名。
例如,要将当前目录下的所有文件打包成一个名为archive.tar的归档文件,可以执行以下命令:```shelltar -cf archive.tar *```2. 解包文件:要解包已经打包好的归档文件,可以使用tar命令的-x参数,结合-f 参数指定归档文件名。
例如,要解包名为archive.tar的归档文件,可以执行以下命令:```shelltar -xf archive.tar```3. 查看归档文件内容:要查看归档文件中包含的文件列表,可以使用tar命令的-t参数,结合-f参数指定归档文件名。
例如,要查看名为archive.tar的归档文件中包含的文件列表,可以执行以下命令:```shelltar -tf archive.tar```4. 同时打包和压缩文件:tar命令还支持和gzip、bzip2等压缩工具结合使用,以实现同时打包和压缩文件的功能。
例如,要将当前目录下的所有文件打包成一个名为archive.tar.gz的压缩包,可以执行以下命令:```shelltar -czf archive.tar.gz *```二、tar命令的高级用法1. 打包指定目录:如果只需要打包指定的目录或文件,可以在tar命令中指定路径。
例如,要打包指定目录/dir下的所有文件,可以执行以下命令:```shelltar -cf archive.tar /dir```2. 排除某些文件或目录:有时候我们希望在打包文件时排除某些文件或目录,可以使用tar 命令的--exclude参数。
华为官方固件UPDATE.APP解包修改打包详细教程
下载解包工具和华为固件包
一:UPDATE.APP的解包
把解包工具和固件包解压缩,分别入下图
打开解包工具的HuaweiUpdateExtractor.exe
解包功能然后点击选择文件路径按钮把update.app加载进去
下面就是把这些文件全部提取出来
首先新建个文件夹可以随便命名,只要自己记得就好我这里新建的是system文件夹
然后再解包工具上面选中一个文件单机鼠标右键选择”Extract Selected“把选中的文件倒到新建的system文件夹中
以此类推,把这上面全部的文件都倒出来。
这样就对UPDATE.APP的解包处理完成
二:UPDATE.APP中system.img的修改
下载ROM助手用ROM助手中的系统精简功能吧刚才提取的system.img加载进去
在这里就能对system.img的精简内置等处理
搞定后开始封包
最后吧你修改的SYSTEM.IMG替换到上面新建的system文件夹中的system.img。
三:UPDATE.APP中system.img的打包
选择打包工具的打包功能
选择刚才新建的system文件夹点击确定按钮。
在上面单机右键选择“repack all”
直接保存,分分钟就实现打包。
解包把得到的make_ext4fs simg2img 和mkuserimg.sh放在你的工作目录下,把固件包里解压出来的factoryfs.img拷贝到工作目录。
运行以下代码:./simg2img factoryfs.img kh3.imgmkdir kh3sudo mount -o loop kh3.img kh3这样你就可以对固件做修改了,可以root固件,可以精简固件。
这里主要提一下权限问题,不要轻易修改这个目录的权限,要保持默认的权限,不然你打包回去会有问题的。
这里我举个例子,我准备把su这个文件加到固件的xbin目录下,并且修改权限。
cd kh3/xbinsudo cp /home/xiaolu/work/su ./sudo chown root.2000 susudo chmod 04755 su下边就是打包了,很简单,先建立一个临时文件夹temp,然后用制作脚本制作即可。
为了避免权限问题,还是还是使用了sudo。
mkdir tempsudo /home/xiaolu/work/mkuserimg.sh -s /home/xiaolu/work/kh3 /home/xiaolu/work/kh3-new.img ext4 /home/xiaolu/work/temp 512M懒人可以运行一次sudo -i 来获得root shell 个人喜好sudo -icd /home/xiaolu/work./mkuserimg.sh -s kh3 kh3-new.img ext4 temp 512M把得到的kh3-new.img改名成factoryfs.img,打包成tar就可以刷机了。
制作I9300 ROM刷机包有时候很难找到一个适合自己的i9300 Rom,比如想在刷机前的就把Rom里的自带程序精简一下,或者喜欢某某的Rom程序但想把基带换成联通官方的,阅读本文后你都可以实现。
本教程其实就是制作ROM的简单流程和原理。
第一章封包1.封包流程封包就是给一段数据加上包头,这样一来数据包就分为包头和包体两部分内容了。
包头其实上是个大小固定的结构体,其中有个结构体成员变量表示包体的长度,这是个很重要的变量,其他的结构体成员可根据需要自己定义.根据包头长度固定以及包头中含有包体长度的变量就能正确的拆分出一个完整的数据包。
数据封装流程图1.1 TCP段包头TCP段包头源端口(Source Port)和目地端口(Destination Port)--字段长度为16位,它们为封装的数据指定了源和目的应用程序。
序列号(Sequence Number)--字段长度为32位,序列号确定了发送方发送的数据流中被封装的数据所在位置。
确认号(Acknowledgment Number)--字段长度为32,确认号确定了源点下一次希望从目标接收的序列号。
报头长度(Header Length)--字段长度为4位,又称数据偏移量,报头长度指定了以32位为单位的报头长度。
保留(Reserved)--字段长度为6位,通常设置为0。
标记(Flag)--包括8个1位的标记,用于流和连接控制。
它们从左到右分别是:拥塞窗口减少(Congestion Window Reduced, CWR)、ECN-Echo(ECE)、紧急(URG)、确认(ACK)、弹出(PSH)、复位(RST)、同步(SYN)和结束(FIN)。
窗口大小(Window Size)--字段长度为16位,主要用于流控制。
校验和(Checksum)--字段长度为16位,它包括报头和被封装的数据,校验和允许错误检测。
紧急指针(Urgent Pointer)--字段长度16位,仅当URG标记位置时才被使用,这个16位数被添加到序列号上用于指明紧急数据的结束。
可选项(Options)--字段用于指明TCP的发送进程要求的选项。
最常用的可选项是最大段长度,最大段长度通知接收者发送者愿意接收的最大段长度。
//测试通过#include <stdio.h>#include <string.h>#include <stdlib.h>typedef unsigned int uint;typedef unsigned char byte;// 包文件中最大可容纳的文件个数#define MAX_FILE_COUNT 10// 全局包文件指针FILE* g_pMasFile = NULL;// 资源包文件头结构typedef struct SMaseFileHeader{uint uFileFlag; // 包文件头标记: 'MASE' uint uFileCount; // 包内文件个数uint uFileListOfs; // 文件列表偏移uint uMaxFileCount; // 最大子文件个数uint uFileSize; // 包文件的大小}MaseHeader;// 包内文件信息结构typedef struct SFilesMessage{uint uFileOfs; // 本文件在包内的偏移uint uFileSize; // 本文件的大小char szFileName[260]; // 本文件的路径}FilesMsg;// 打开包文件int OpenMasFile(const char* path, const byte onlyOpen) {uint uWriteCount; // 写入文件信息次数byte bIsNew = 0; // 是否新建的MaseHeader header; // 文件头结构定义FilesMsg msg; // 文件信息结构定义g_pMasFile = fopen(path, "rb"); // 用来判断是否存在if (g_pMasFile == NULL){if (onlyOpen == 1) // 只打开不新建return -1;bIsNew = 1;g_pMasFile = fopen(path, "wb");if (g_pMasFile == NULL)return -1;}//先关闭,然后在用"rb+"方式打开二进制读写打开文件fclose( g_pMasFile );g_pMasFile = fopen(path, "rb+");if (g_pMasFile == NULL)return -1;if(bIsNew == 1)// 新建的文件{header.uFileFlag = 'ESAM';header.uFileCount = 0;header.uFileListOfs = sizeof(MaseHeader); //紧跟着就是文件列表header.uMaxFileCount = MAX_FILE_COUNT;header.uFileSize = sizeof(MaseHeader)+ (MAX_FILE_COUNT * sizeof(FilesMsg));//写入头信息fwrite(&header, sizeof(MaseHeader), 1, g_pMasFile);memset(&msg, 0, sizeof(FilesMsg));uWriteCount = MAX_FILE_COUNT;//写入文件列表用0占位while(uWriteCount--)fwrite(&msg, sizeof(FilesMsg), 1, g_pMasFile);}else//文件存在{//则读取头文件信息fread(&header, sizeof(MaseHeader), 1, g_pMasFile);}//检查文件头标记if (header.uFileFlag != 'ESAM'){fclose(g_pMasFile);printf("文件头标记不对,错误!\n");return -1;}//检查数据是否完整if (header.uMaxFileCount != MAX_FILE_COUNT){fclose(g_pMasFile);printf("数据不完整,错误!\n");return -1;}return 0;}//写文件到包里int WriteFileToPak(const char* path){FilesMsg fileMsg; //此文件的文件信息结构MaseHeader header; //包文件头结构定义uint uFileSize;uint uFileListEndOfs;byte* pBuff;FILE* pFile = NULL;if (g_pMasFile == NULL)return -1;memset(&fileMsg, 0, sizeof(FilesMsg));fseek(g_pMasFile, 0, SEEK_SET); //定位到文件头,读取头文件信息//则读取头文件信息fread(&header,sizeof(MaseHeader), 1, g_pMasFile);uFileListEndOfs = header.uFileCount * sizeof(FilesMsg) + header.uFileListOfs;pFile = fopen(path, "rb");if(pFile == NULL)return -1;fseek(pFile, 0, SEEK_END);uFileSize = ftell(pFile);fseek(pFile, 0, SEEK_SET);//文件名长度不能超过260strcpy(fileMsg.szFileName,path);fileMsg.uFileOfs = header.uFileSize;fileMsg.uFileSize = uFileSize;// 写入文件信息// 将文件指针定位到uFileListEndOfs处,以便写入新的文件信息结构fseek(g_pMasFile, uFileListEndOfs, SEEK_SET);fwrite(&fileMsg,sizeof(FilesMsg),1,g_pMasFile);// 申请空间pBuff = (byte*)malloc(uFileSize);fread(pBuff,uFileSize,1,pFile);// 写数据到包文件里fseek(g_pMasFile,header.uFileSize,SEEK_SET); fwrite(pBuff, uFileSize, 1, g_pMasFile);// 释放内存free(pBuff);//重新填充headerheader.uFileCount += 1;header.uFileSize += uFileSize;fseek( g_pMasFile,0,SEEK_SET);// 重新写入包文件头fwrite(&header,sizeof(MaseHeader),1,g_pMasFile);return 0;}//从包文件里读数据int ReadFileFromPak(const FilesMsg msg, byte* _dst) {if ( g_pMasFile == NULL )return -1;fseek(g_pMasFile, msg.uFileOfs,SEEK_SET);fread(_dst, msg.uFileSize, 1, g_pMasFile);return 0;}//获取包中某个文件的信息int GetFileMessage( const char* path, FilesMsg* msg) {FilesMsg fileMsg; // 此文件的文件信息结构MaseHeader header; // 包头结构uint uFileCount; // 文件个数if ( g_pMasFile == NULL || msg == NULL )return -1;// 则读取头文件信息fseek(g_pMasFile, 0, SEEK_SET);fread(&header, sizeof(MaseHeader), 1, g_pMasFile);uFileCount = header.uFileCount;while (uFileCount--){fread(&fileMsg, sizeof(FilesMsg), 1,g_pMasFile);// 判断是否是要获取的文件if (stricmp(fileMsg.szFileName, path) == 0 ){*msg = fileMsg;return 0;}}return -1;}// 关闭包文件int CloseMasFile( void ){if ( g_pMasFile == NULL )return -1;fclose( g_pMasFile );g_pMasFile = NULL;return 0;}//这是打包主函数int main( void ){int ret;ret = OpenMasFile( "E:\\PhotoPak.bin",0);if ( ret == -1 )goto __exit;WriteFileToPak( "E:\\珍贵.jpg" );WriteFileToPak( "E:\\123.docx" );WriteFileToPak( "E:\\456.txt" );__exit:CloseMasFile();return 0;}//查看打包中的文件,并且可以解包查看int main( void ){byte* pBuff;FILE* pOutFile;FilesMsg getFileMsg;int ret;ret = OpenMasFile("E:\\PhotoPak.bin", 1);if (ret == -1)goto __exit;ret = GetFileMessage("E:\\123.docx", &getFileMsg);if(ret == -1)goto __exit;pBuff = (byte*)malloc(getFileMsg.uFileSize);ret = ReadFileFromPak(getFileMsg, pBuff);if(ret == -1)goto __exit_free;pOutFile = fopen("E:\\123_out.docx", "wb"); // 注意使用的是二进制模式if(ret == -1)goto __exit_free;fwrite( pBuff, getFileMsg.uFileSize, 1, pOutFile );fclose( pOutFile );__exit_free:free( pBuff );__exit:CloseMasFile();return 0;}参数源文件要装入到编译程序中的文件的路径.文件名必须是字符串,不能是任何变量. 它可以是一个相对路径(使用 .\ 或者 ..\ 等在路径中)目标路径结尾带有反斜线符号的目标路径,脚本程序运行时将把嵌入文件解压到此位置.此参数接受变量.标志[可选参数] 此标志参数用以决定是否覆盖已存在的文件:0 = (默认)不覆盖已存在的文件1 = 覆盖已存在的文件返回值成功: 返回值为1.失败: 返回值为0.注意/说明FileInstall 函数的用途是装入文件到编译后的AutoIt 脚本程序中.这些内嵌的文件将在编译好的脚本程序运行时被"解压"出来.这里要提醒一下的就是装入某些文件如图片文件等可能会导致编译后的脚本程序大小剧增.源文件(来源文件)参数只接受字符串而不接受变量,计算式或者函数CALL,以便编译器能正确取得文件名并装入文件.源文件参数不能含有通配符.若在未编译的脚本中使用此函数则程序将执行一次文件复制操作(这样是为了方便进行预编译测试).装入的文件将保持原本的创建时间/修改时间等时间戳信息.目标目录必须存在才能调用此函数,不然FileInstall将会失败, 返回0 并不会创建文件和路径. 参考DirCreate() 函数关于创建目录路径.已存在的文件属性可能导致函数覆盖失败.请使用FileDelete() 或者FileSetAttrib() 确保文件能够被覆盖.。
解包、打包CAB文件详细教程<PPC系列>首先我们先理解什么是CAB文件。
我就简单的说一下。
cab文件是一个压缩包文件。
存储多个压缩文件的单个压缩包文件。
这些文件通常用于软件安装,还用来减小文件大小和缩短Web 内容的相关下载时间。
要汉化一个安装文件,必须学会解包,汉化好了一个软件。
也要学会打包。
什么是解包呢?解包就是把CAB安装文件解开,变成了绿色版。
要解包、打包必须下载CAB编辑器。
现在就说怎么解包CAB文件。
打开CAB编辑器(cabintegr.exe).选择第三个的【CAB文件】.如图:扫描后,会出现许多CAB文件,选你需要解包的文件,怎么找呢?你先安装CAB文件。
然后就会出现文件名了。
如图:我就用这个软件来解包。
需要解包的文件前面打上“√”如图:用触屏笔长按需要解压的文件。
就会弹出菜单。
选择—>解包—>文件夹系列.如图:选择你存放的文件夹。
选择—>执行—>确定.如图:完成了。
解包就是怎么简单。
学会解包,现在就学怎么打包吧!打包就比较复杂一点。
只要你看我怎么操作就一定学会了。
我介绍一下什么是打包。
打包就是把一个绿色版的软件解压成一个安装文件。
就是CAB文件。
先打开CAB编辑器(cabintegr.exe).选择【创建】.如图:选择—>执行—>工程属性。
如图:然后输入你需要的打包的名称。
我就用“万能播放器”来示范。
输入【万能播放器】—>确定。
如图://点击确定之后会出现CAB工程的属性。
如图:先选中—>安装文件夹点击右上角的浏览(…)—>CE字符串—>CE1:Program Files.我们平时安装默认文件夹是Program Files,然后出现%CE1%,在%CE1%里面在创建一个文件夹。
%CE1%/万能播放器如图:然后点击—>压缩CAB文件—>是这样就可以减少文件大小。
如图:点击确定现在就开始选择文件了。
碳黑解包安全操作规程一、前期准备1. 工作人员应熟悉碳黑解包的相关安全规程,并穿戴好相应的个人防护装备,包括安全帽、防护眼镜、防尘口罩、防护服、防滑手套和防滑鞋等。
2. 确保解包区域通风良好,检查通风设备是否正常运转。
3. 检查解包区域是否清洁整齐,没有其他杂物和障碍物。
二、解包操作过程1. 在进行任何操作之前,工作人员应进行安全交底和工作流程确认,确保操作人员明确各自的责任和职责。
2. 根据解包工艺要求,将待解包的碳黑原料搬运至解包区域,使用合适的搬运设备和工具,确保操作的安全性。
3. 在解包过程中,工作人员应注意维持解包区域的整洁和有序,避免堆积过多的碳黑原料,防止发生滑倒和堆积物倾倒的危险情况。
4. 使用适当的工具和设备进行包装材料的拆除和碳黑的卸载,避免损坏碳黑原料并防止自身受伤。
5. 在解包过程中,工作人员应时刻保持警惕,注意四周环境的变化,确保安全无事故。
三、应急措施1. 遇到突发事故如火灾、爆炸等情况,工作人员应立即停止解包工作,并按照应急预案进行处理,迅速撤离现场并报警。
2. 在解包过程中如遇到窒息、中毒或其他人身安全的紧急情况,工作人员应立即进行施救,并及时请求医疗救援。
3. 在解包过程中,如发现有人员未按照规定操作或存在安全隐患,应及时进行劝阻并报告上级主管。
四、后期清理1. 解包结束后,工作人员应将解包区域进行彻底清理和整理,包括清除碳黑残留物、废弃包装袋和其他杂物等。
2. 应按照相关规定进行废弃物的分类和处理,确保环境的安全和卫生。
3. 清理过程中如发现有疑似污染的物品,应按照环境保护要求进行妥善处理,并及时报告相关部门。
五、个人防护与健康监测1. 工作人员解包前应定期进行身体健康检查,确保身体状况适宜从事解包工作。
2. 各工作人员应按照操作规程要求正确佩戴个人防护装备,并定期更换和清洗,保持其良好的使用效果。
3. 工作人员应定期接受职业病检查,关注身体健康和职业病防护,发现异常及时报告。
(手机端)【SIS编辑器解包、打包教程】QUOTE:本帖用到的工具SISEditor,手机端sis/sisx文件解包、打包和签名工具,八神智能天下大罗作品。
支持sis/sisx包的编辑,可更改创建基本信息;支持编辑sis/sisx文件列表,包括程序组件也能编辑:支持新建sis/sisx包,暂未完善。
支持对sis/sisx包程序组件的修改操作:添加,删除,替换,提取,属性编辑(可进行4种操作),上下移动,批量导出等等SISEditor在操作界面上,比智能解包更为友好,易于上手;速度更是超快,解包、打包,转瞬即可;功能详细,跳过pkg繁复的界面,简易手动操作。
目前本人测试,仅发现少数软件因打包方式特别,SISEditor不能解包,此种情况可用智能解包来解决;其余大部分程序SISEditor皆*可正常解包。
下面,我将图文讲解SISEditor的打包、解包操作。
那么,先安装SISEditor,免签,而是不用Python平台,真方便。
SIS编辑器解包详解QUOTE:打开SISEditor—选项—打开sis/sisx文件(直接按中键也行),如截图01,找到要解包的sis/sisx文件,打开截图01打开界面如截图02、03,往下拉可查看程序的各参数,可自己DIY各种参数,此处暂不解释参数,下文再详解截图02截图03将光标移到“文件列表”栏,点击进入后,如截图04,是安装包内部组件列表,同样的,文件可自由编辑、添加、删除,但此处暂不讲解;截图04PS:截图04中可看到文件列表中有IF语句,IF语句根据判断机型信息或者用户选择,而对组件选择安装。
可以看出,SISEditor虽不显性使用pkg文件,但pkg语句还在起作用;而不足的是,目前SISEditor无法自建IF语句等内容,新建sis/sisx功能明显很薄弱OK,继续解包演示,在文件列表中—选项,如截图05,可看到“提取文件”、“提取全部”选项,“提取文件”指的是提取当前光标处的文件,而“提取全部”即解包全部文件;截图05我此处选择“提取全部”,出现目录选择,随便选择吧,找得到即可,点击确定;不得不说,SISEditor的速度确实快,1M的安装包,几秒钟完成解包;解包完成后,找到!:/Data/SISEditor/目录下,可看到以软件名称命名的文件夹,解包的文件就在该目录下,如截图06截图05我此处选择“提取全部”,出现目录选择,随便选择吧,找得到即可,点击确定;不得不说,SISEditor的速度确实快,1M的安装包,几秒钟完成解包;解包完成后,找到!:/Data/SISEditor/目录下,可看到以软件名称命名的文件夹,解包的文件就在该目录下,如截图06截图06其中感叹号!指不定盘符,即安装程序时选择的盘;而!目录下resource、private等文件夹指什么呢?以!:/resource/apps/TTPodSigned.mif为例,实际上安装天天动听时,系统就将TTPodSigned.mif这个文件解包到安装盘:/resource/apps/目录下所以程序安装的过程,其实是解包程序文件至对应目录,并在手机中写入安装信息的过程sis/sisx文件解包,已经完成,可用解包出的文件进行DIY了;怎样,非常方便吧?SIS编辑器打包详解QUOTE:上文说到,SISEditor不显性使用pkg文档,打包过程与智能解包略有不同;此处,我将sis/sisx文件打包分两种:一、修改打包;二、新建打包一、修改打包先讲修改打包,较大的程序DIY修改,比如新增皮肤、精简多余文件、替换图标声音文件等,修改完要打包成sis安装包;全部重新打包,不仅浪费时间,而且显得笨,因为选择安装组件、编辑文件属性,将花费你大量时间精力用原软件安装包,进行修改,再打包,可省下许多时间精力比如此处,我找到一组天天动听皮肤—“简约蓝”简约蓝(请解压).rar (78.7 KB),要将该皮肤添加至天天动听安装包;同解包过程类似,进入SISEditor,打开天天动听原安装包,即上截图02、03界面;此处对各参数解释一下“程序名称”——此处即软件安装后,在程序管理中显示的名称,按中键可修改自定义“程序UID”——即程序的识别编号,各不相同,所以建议不要更改“程序版本”——即程序版本号咯,不必修改,以免错误“程序语言”——安装程序提取语言,按中键可修改,自己添加或删除语言种类,支持近100种语言“程序提供”——指软件作者、厂商,可不修改;如果想添加打包作者也行,按中键修改吧“安装类型”——标准程序[SA],指独立安装包,按中键可修改:主题/系统插件[SP],指独立安装包的升级、补充程序,或者系统插件(主题),不可独立安装,可独立卸载;程序升级/补丁[PU],指独立安装包的升级程序,不可独立安装,不可独立卸载“创建日期”、“创建时间”——不必修改,想改自己改“目标设备”——指程序支持的机型,一般不必修改;按中键进入可添加、删除设备,添加对新平台或新机型的支持“文件列表”——就是程序组件,上文说过;DIY的重点“软件签名”——指当前程序签名状况,SISEditor有签名、去签名功能,自带5权限30年专用证书和19权限根证书(破'解才可使用),你也可将个人证书、key文件放入!:/Data/Certificates/目录下,用SISEditor为软件签名OK,我此处是为天天动听添加一组皮肤,前面参数不动它;点击进入“文件列表”选项—添加文件,如截图07,找到已下载的皮肤文件“简约蓝.ttb”,确认。