axp解包软件,axp解包工具,axp文件解压方法,axp文件用什么工具解压
整个文件头固定为0x28字节,其中第20个字节开始的一个整数乘以12代表了第三部分即文件索引部分的长度(因为每个索引有三个整数构成)在中间业务处理过程中,如果整个交易流程的某个适配器失败(通信失败或者交易失败),系统将根据配置信息调用相应的处理流程以保证交易完整*。应用交换平台检测到某个适配器发生失败时,将首先设置当前适配器的处理方式。...
很多人都不知道axp文件怎么解包,为此,专门写了一个axp文件的解压方法,请看下面。
要解压axp文件,请先认真看完什么是AXP文件:
一,什么是axp文件?
应用交换平台AXP是渠道和服务的桥梁。它对渠道提交的数据进行判断和重新组织,根据业务配置将重新组织后的数据提交到服务器,接收服务器响应,根据渠道端需要组织数据返回渠道。
中间业务涉及到各种外联系统和渠道。报文是中间业务平台和渠道、服务器之间传递信息的载体。但是渠道与服务器之间的报文类型往往不一致,服务器和服务器之间的报文类型也不一致,因此需要实现各种报文之间的相互转换。
AXP为简化外联系统和渠道接口处理,采用统一数据对象作为各系统之间数据表示的标准格式。因此每种外联系统接口只需要实现和统一数据对象之间的转换就可以实现和其他任意外联数据接口之间的转换,从而保证了不管外联系统结构有多少种,都只需实现一种转换方式即可。
适配器是为适应各种渠道、外联系统交易而抽象的一个标准接口。形象地说,中间业务核心如同集线器,适配器就是连接其上的网络设备(接口统一、功能多样)。共有两类适配器,一种是提供服务的适配器,这种适配器一般连接主机服务器,也可视为一个服务的提供。另一种是接受渠道请求服务的适配器,这种适配器对中间业务平台来说是一个交易流程的开始和结束,是服务的结果。[!--empiresxp.page--]
适配器屏蔽了外围系统和各种渠道的不同通信方式、报文格式和安全管理,为中间业务平台个组件提供了惟一识别的统一数据对象。
调度引擎的作用是根据配置信息调度合适的适配器。包含三个方面的功能:
1. 路由决策:决定下一步执行什么;
2. 数据组织:为已经准备执行的适配器准备正确的数据;
3. 调用适配器:完成和外联系统的交易功能。
在中间业务处理过程中,如果整个交易流程的某个适配器失败(通信失败或者交易失败),系统将根据配置信息调用相应的处理流程以保证交易完整*。应用交换平台检测到某个适配器发生失败时,将首先设置当前适配器的处理方式。此后应用交换平台将遍历已经调用的交易,如果交易的错误处理属*设置为冲正,则和正常交易一样组织冲正的需要数据。此后,应用交换平台将判断冲正类型:如果是异步冲正,应用交换平台将组织好的数据以统一数据对象方式保存到嵌入式数据库中; 如果是同步冲正,则马上调用同步冲正适配器进行冲正。当同步冲正失败时,应用交换平台将它转换为异步冲正方式以保证该交易能冲正成功。以上所做的操作由交易调度引擎自动根据配置信息执行。[!--empiresxp.page--]
为保证交易完整*,应用交换平台提供一个异步冲正守护进程。该进程检测是否有符合条件的待冲正数据,如果有满足待冲正的数据,异步冲正守护进程也将调用冲正适配器进行冲正。
第二部分:解压方法:
这个是网友的解压全过程,跟着做就好了!
三月份时玩了某狐公司的网络游戏《天龙X部》,感觉还是蛮有意思的,遂研究了一下。
这个游戏是利用开源游戏引擎OGRE进行开发的,看了一下目录里面的文件结构,主要的数
据都放在Data目录下面。不过文件基本都是.AXP后缀的,每一个动辄几十兆,料想肯定是
把游戏文件打包到一起并加密过的,GOOGLE未遂。开始用UE打开看了一下这个AXP文件,发
现里面居然大部分都是明文的,开始以为只是把文件罗列在一起,不过仔细看了一下,发
现每个文件都有一段间隔,前面还有一个数据头,而且文件与名字也无法对应。于是打开
OD手动分析一下,主要过程其实比较简单,CreateFile函数下断,找到文件Buffer位置,[!--empiresxp.page--]
再下内存访问断点即可来到关键代码区域。略过具体跟踪细节及文件校验部分不讲,文件
格式主要分析如下:
整个AXP文件可以分成四个部分:1.文件头 2.文件名索引 3.文件索引 4.文件数据
1.文件头:
整个文件头固定为0x28字节,其中第20个字节开始的一个整数乘以12代表了第三部分
即文件索引部分的长度(因为每个索引有三个整数构成)
2.文件名索引:
整个文件名索引固定为0x60000字节,其中包含了每个压缩文件对应的文件索引位置
3.文件索引:
本部分长度由文件头相关数据决定,其中包含了每个压缩文件在.axp中的实际偏移位
置及文件大小
4.文件数据:
本部分包含所有压缩文件的具体数据,每个文件之间用若干零填充。[!--empiresxp.page--]
首先说说解压总体过程:比如我们要从A.axp中解压出一个叫file.txt的文件,那么先根据
文件名file.txt到文件名索引中去找到对应的文件索引,然后再根据文件索引找到这个文
件在axp文件中的位置和大小,最后把其解压出来。
解压具体过程如下:
将待解压的文件名转为小写(如果为英文字母),利用GetDisp(char* s,int v)函数
计算相关数据,其中s代表文件名,v代表计算参数,分别计算GetDisp(fname,1),GetDisp
(fname,2),
GetDisp(fname,3),得到三个值a1,a2,a3。其中a3低位与在文件名索引中的位置有关,a3最
高位及a1,a2用来进行校验,如果三个值不能同时满足要求,则将偏移位置顺移继续验证,
具体细节懒得写了。
以下为GetDisp函数具体内容,我直接将跟踪代码里面的汇编改造了一下拿出来用,其中s
ucks为一个随机数数组,这里不列出来了。[!--empiresxp.page--]
unsigned int TLBBUnpacker::GetDisp(char* s,int v)
{
__axx
{
push esi
mov esi,s
mov cl,byte ptr ds:[esi]
test cl,cl
mov eax,0x7FED7FED
mov edx,0xEEEEEEEE
je end[!--empiresxp.page--]
push ebx
push ebp
push edi
mov edi,v
shl edi,0x8
iter:
add eax,edx
imul edx,edx,0x21
movsx ecx,cl
lea ebx,dword ptr ds:[edi+ecx][!--empiresxp.page--]
mov ebp,dword ptr ds:[ebx*4+sucks]
inc esi
add edx,ecx
mov cl,byte ptr ds:[esi]
xor eax,ebp
test cl,cl
lea edx,dword ptr ds:[edx+eax+3]
jnz iter
pop edi[!--empiresxp.page--]
pop ebp
pop ebx
end:
pop esi
}
}
这个为解压单个文件的函数GenerateFile,用到了QT作GUI,大家就当伪代码看吧。
bool TLBBUnpacker::GenerateFile(QString name)
{
name=name.toLower();
unsigned int a=GetDisp(name.toLocal8Bit().data(),3),a2=GetDisp(name.toLocal8B
it().data(),2),a1=GetDisp(name.toLocal8Bit().data(),1),b,disp,length;
a&=0x7FFF;[!--empiresxp.page--]
while(!((b=((int*)buffer2)[a*3+2])&0x80000000)||a1!=((int*)buffer2)[a*3]||a2!
=((int*)buffer2)[a*3+1])
{
a++;
a&=0x7FFF;
}
b&=0x3FFFFFFF;
disp=((int*)buffer3)[b*3];
length=((int*)buffer3)[b*3+1];
QFile pdata(this->package_name);
if (pdata.open(QFile::ReadOnly)&&pdata.seek(disp)) {
QString wdir=QDir::currentPath()+QDir::separator()+QFileInfo(pdata).fileName[!--empiresxp.page--]
()+QDir::separator();
QDir dir;
QDataStream pfin(&pdata);
QFile file(wdir+name);
QFileInfo info(file);
dir.mkpath(info.absolutePath());
if(file.open(QFile::WriteOnly))
{
char* pBuffer=new char[length];;
QDataStream fout(&file);[!--empiresxp.page--]
pfin.readRawData(pBuffer,length);
fout.writeRawData(pBuffer,length);
delete []pBuffer;
return true;
}
}
return false;
}
得到待解压文件在文件索引中的位置后就可以找出该文件在axp文件中的具体偏移量和文件
大小了,然后直接fseek一下然后在弄出来就OK了。
最后说一下,这个AXP压缩包本身就含有一个文件列表文件叫做(list),所以每次只要先解[!--empiresxp.page--]
压缩这个文件,然后按照里面的文件列表来一一解压缩就OK了。
以上就是文件大致格式,感觉还是比较简单的,也可以考虑在自己的项目中使用类似方法
进行文件压缩。
QQ飞车如何刷点卷及qq飞车刷点卷活动内容,qq飞车刷点卷软件、工具、网址
QQ飞车如何刷点卷及qq飞车刷点卷活动内容,qq飞车刷点卷软件、工具、网址最近很多玩家都向我资讯QQ飞车如何刷点卷。其实熟悉QQ飞车的玩家都应该知道,腾讯会经常推出一些赠送点卷的活动。而且这些活动都非常的简单, ...
聊城惊现天才少年,师朋,年仅18岁编写9000软件3年狂赚50万
师朋讲到,有一天,自己在网上看到一张经过处理的照片,当时感觉和原片有天壤之别。正好亲戚想让师朋帮忙把自己的照片也处理一下。可是,当时用来处理照片的软件如photoshop都是全英文的,许多功能只能在工具栏上找,没办法用快捷键。师朋感到这样用起来太麻烦了,心生一念:自己做一个软件,改掉这些弊端。 ...
海口政府称星海利达软件与四川九阵科技组成投标联合体中标程序合法
蔡东海解释“五无企业”的无缴纳社保记录时称,经调查,星海利达公司法人代表已经退休,因此没有缴纳社保资金记录。九阵公司员工在当地有缴纳社保资金记录,星海公司是不是只有一个人,有待于进一步调查。 ...
海口星海利达软件被指空壳企业,涉590万高价中标人民医院采购项目
曾参与了此次竞标的一家企业负责人告诉记者,有些地方政府采购竞标,比的不是价格、不是质量,而是关系。这些潜规则,大家心知肚明。海口星海公司为何能“顺利”通过政府采购的各个环节,值得深究。 ...
iphone5多少钱:iphone4Sir的软件支持很到位哈。。。
Scott Forstall苹果软件VP继续介绍iOS5 safari 会有200个新feature在十月12号可以更新 ...