有人会krkr2封包吗

【封包】求助,如何把解包的XP3按原加密方式打包_吉里吉里吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:8,931贴子:
【封包】求助,如何把解包的XP3按原加密方式打包收藏
刚刚没看到置顶的吧规,按格式重新发一次吧……以前别的游戏是使用crass解包之后用krkr打包的,但是最近玩的一个游戏xp3加密过的,crass没法解包,所以我下载了个xp3dumper解包,但是我改了改再用krkr打包回去之后游戏无法运行,我觉得应该是打包方法不对?所以来问下……如果是其他原因也希望大神指导啊……
2017年在职研究生有没有取消,具体的政策有什么变化
要运行的话根本就不用打包回去呗
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或bgm基本上弃用了。
详情可以关注微博 : /xmoeosu
或者通过邮件(xmoe.)或者fb(Kaede Konohana)找到我。
Author:X'moe
目前提供krkr2和krkrz(包括M2公司)通用提取
使用方式:将原始游戏exe(或者破解后能运行的exe)拖进KrkrExtract.exe进行加载
在这之前请关闭杀软之类的软件(特别是大数字)
如果成功后,会自动生成一个窗口,你现在可以把xp3文件拖进来进行拆包。
(最好是等游戏停留在title处开始拆包)
!!!!!但是请记得,要拆第二个包的时候一定要关一次游戏!!!!
(后期版本我会改进的,主要是自己太懒)
拆包后的文件在outPath里面。
①有的游戏包括原版游戏是用Loader机制加载的,特别是汉化版游戏,
目前暂时不支持这种游戏的拆包(虽然要支持也很简单)
History Info:
【?】 Version 0.0.0.2a
重写提取内核,修正提取bug,支持未知Chunk的分析。
改进提取线程。
内置IA32反编译器引擎,用于分析加密流程(目前暂时没开放这个功能)
内置LE Mudole,如果你系统默认的CodePage不是日区的,在提取某些krkrz开发的游戏时,
部分提取可能会失败。KrkrExtract会自动启动LE Module。
给KrkrExtract.exe增加功能:
在无额外参数启动的情况下(就是直接双击KrkrExtract.exe),会启动资源提取器。
Krkr相关的(如*.psb *.scn *.tlg *.pimg)资源可以进行提取。
目前支持TLG5/6的提取
*.PSB *.SCN 二进制脚本的反编译
【2015.7.??】 Version 0.0.0.1a
添加进度。
在提取多个文件的时候,不必重启游戏(但是不能同时提取多个文件,请依次拖放)
【】 Initial Release
支持Krkr2+KrkrZ(包括M2公司Package)的提取。
世界一ヤリたい授業 ~林先生のロリビッチな反転世界~
BigFile (UploadAble)
RapidGator
這種的exe一放上去就直接死了 雖然有用其他方法解 可是解出來後 圖片好像都加密過了 不能觀看
图片的话 现在支持解密为PNG格式了 你可以自行选择
抱歉抱歉&&我用成功了 可能是我步驟錯了 所以他才沒反應
ボッチムスメ×プロデュース計画。 這個請幫幫解不開
我系统是WIN7 64位,解包キミのとなりで恋してる,先把tonakoi.exe拖到krkrextract的窗口里,再把data.xp3拖到窗口里后,outPath里出现了一个空的data文件夹,这是失败了吧,怎样才能成功?
【ぱれっと】恋がさくころ桜どき 提取出來的圖片都是不完整 破屠+線條的
有看說明不是100%穩定的 只是想請問看看現在還有解嗎@@
没时我很沉默4443人阅读
& &以前我谈过,&
& 我觉得问题在于很多商业KRKR系统都是加密过的数据,今天作为收山之文,谈下XP3加密分析和封包算法
& 今天我们分析的游戏是《yourdiary》,也是前久汉化组来求破解的游戏。
加密VS解密
不管KRKR还是.net 还是JAVA,以及android,其加密解密方法基本差不多,就是HOOK相应函数或者提供相应接口就OK。
无外乎解密存在两种方法
1、动态HOOK 然后内存DUMP
2、静态分析
1、动态HOOK&xp3dumer
2、静态分析 &Crass
JAVA 静态解密可以参考鄙人做的
对于大家来说动态HOOK简单实用,因为不需要考虑什么加密算法,直接内存DUMP
对于程序猿来说,显然静态分析,逆向其算法更能提高水平。
所以说本文需要程序设计基础非大众读物。
& 我们用Crass解包直接解包,提示CRC错误。
青子私服c06a(大)-mono.tlg: crc校验失败(0x90d63725), 应该是0xe1eb5d2b.
青子私服c06a(大).tlg: crc校验失败(0x2a395798), 应该是0x9ff1bbbe.
青子私服c06a(近)-mono.tlg: crc校验失败(0xab6e8767), 应该是0x70439e0e.
青子私服c06a(近).tlg: crc校验失败(0xac8ab284), 应该是0x346e11f5.
黒幕.tlg: crc校验失败(0xc41caf48), 应该是0x9014486f.
data.xp3: 成功提取1286 / 1286 个资源文件
& 怎么回事,CRC错误可能就是1、文件损坏了 2、加密了
& 显然游戏可以正常运行,否定1。
& 用UE打开XP3,分析下看不出规律,现在只能从代码入手。
打开plugin目录有个yourdiary.tpm
这个就是加密DLL
用反汇编器打开看看
发现有两个导出函数
注意:KRKR分早期版本和2.22以后版本,其导出函数不一样,大家要注意.不过大家遇到KRKR都不很老,所以本文基本可以通吃。
这里需要大家有KRKR封包加密插件编写的经验才能跟到关键加密代码段
至于加密插件的使用方法请参照水螅大大的教程,这里不再赘述。
我直接跟进关键加密代码段:
.text: ; Segment type: Pure code
.text: ; Segment permissions: Read/Execute
.text: _text & & & & & segment para public 'CODE' use32
.text: & & & & & & & & assume cs:_text
.text: & & & & & & & & ;org h
.text: & & & & & & & & assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
.text: loc_: & & & & & & & & & & & & & ; DATA XREF: V2Link:loc_;o
.text: & & & & & & & & push & &esi
.text: & & & & & & & & mov & & esi, [esp+8]
.text: & & & & & & & & cmp & & dword ptr [esi], 18h
.text: & & & & & & & & jz & & &short loc_1000102C
.text:1000100A & & & & & & & & mov & & eax, dword_1000C2CC
.text:1000100F & & & & & & & & test & &eax, eax
.text: & & & & & & & & jnz & & short loc_
.text: & & & & & & & & push & &offset aVoidT &void ::TVPThrowExceptionMessage(const t&...
.text: & & & & & & & & call & &sub_
.text:1000101D & & & & & & & & add & & esp, 4
.text: & & & & & & & & mov & & dword_1000C2CC, eax
.text: loc_: & & & & & & & & & & & & & ; CODE XREF: .text:;j
.text: & & & & & & & & push & &offset aIncompatibleT &Incompatible tTVPXP3ExtractionFilterInf&...
.text:1000102A & & & & & & & & call & & dword_1000C2CC
.text:1000102C
.text:1000102C loc_1000102C: & & & & & & & & & & & & & ; CODE XREF: .text:;j
.text:1000102C & & & & & & & & xor & & eax, eax
.text:1000102E & & & & & & & & cmp & & [esi+10h], eax
.text: & & & & & & & & jbe & & short loc_1000104B
.text: loc_: & & & & & & & & & & & & & ; CODE XREF: .text:;j
.text: & & & & & & & & mov & & ecx, [esi+0Ch]
.text: & & & & & & & & mov & & dl, [ecx+eax]
.text: & & & & & & & & xor & & dl, [esi+14h]
.text:1000103C & & & & & & & & add & & ecx, eax
.text:1000103E & & & & & & & & xor & & dl, 0CDh
.text: & & & & & & & & add & & eax, 1
.text: & & & & & & & & mov & & [ecx], dl
.text: & & & & & & & & cmp & & eax, [esi+10h]
.text: & & & & & & & & jb & & &short loc_
.text:1000104B
.text:1000104B loc_1000104B: & & & & & & & & & & & & & ; CODE XREF: .text:;j
.text:1000104B & & & & & & & & pop & & esi
.text:1000104C & & & & & & & & retn & &4
.text:1000104C ; ---------------------------------------------------------------------------
.text:1000104F & & & & & & & & align 10h
.text: ; Exported entry & 1. V2Link
要看懂上面汇编对于新手是很难的,因为计算机不懂什么叫类,什么叫对象,什么叫结构体。
所有的这些概念在编译之后都不复存在。
数据解密最难也在于此,比如[esi+0Ch]那是啥玩意,是数组?还是结构体?还是对象?
就像在漆黑的屋子里面抓到一大团毛绒绒的东西,是啥,是兔子还是猫?
好在解密插件是开源的
大家可以打开KRKR源代码\2.26\kirikiri2\src\plugins\win32\xp3filter\xp3dec 目录下的 main.cpp
//---------------------------------------------------------------------------
void TVP_tTVPXP3ArchiveExtractionFilter_CONVENTION
TVPXP3ArchiveExtractionFilter(tTVPXP3ExtractionFilterInfo *info)
// TVPXP3ArchiveExtractionFilter 関数は本体側から呼び出される
// コールバック関数です。
// 引数を一つ取り、それは tTVPXP3ExtractionFilterInfo 構造体へのポインタ
// TVPXP3ArchiveExtractionFilter は、後述の V2Link 関数内で
// TVPSetXP3ArchiveExtractionFilter により設定されます。
// ここでは単純に、xp3enc.dll のサンプルで作成された XP3 アーカイブを
// 復号すべく、データをすべて FileHash の最下位バイトで XOR
// することにします。
// この関数は複数のスレッドから同時に呼び出される可能性があるので
// 注意してください。
tTVPXP3ExtractionFilterInfo のメンバは以下の通り
* SizeOfSelf
: 自分自身の構造体のサイズ
: &Buffer& メンバが指し示すデータが、
: アーカイブに格納されているそのファイルの先頭からの
: どのオフセット位置からのものか、を表す
: データ本体
* BufferSize
: &Buffer& メンバの指し示すデータのサイズ(バイト単位)
* FileHash
: ファイルの暗号化解除状態でのファイル内容の32bitハッシュ
// 一応構造体のサイズをチェックする
if(info-&SizeOfSelf != sizeof(tTVPXP3ExtractionFilterInfo))
// 構造体のサイズが違う場合はここでエラーにした方がよい
TVPThrowExceptionMessage(TJS_W(&Incompatible tTVPXP3ExtractionFilterInfo size&));
// TVPThrowExceptionMessage は例外メッセージを投げる関数
// この関数は戻らない ( もっと呼び出し元をさかのぼった位置で
// 例外が補足されるため )
for(i = 0; i & info-&BufferS i++)
((unsigned char *)info-&Buffer)[i] ^= info-&FileH
//------------
我们可以看到上面的汇编就是上面这个官方实例的修改版,
但要知道[esi+0Ch]是啥,还得研究官方源代码,所有KRKR解密依赖于tTVPXP3ExtractionFilterInfo这个结构,显然解密代码就是结构体操作。
下面请大家复习下C语言知识:
类型标识符
&& (字节)
-128 ~ 127
-27&~ (27&-1)
unsigned char
无符字符型
0 ~ (28&-1)
-32768 ~ 32767
2-15&~ (215&- 1)
unsigned short int
无符短整型
0 ~ (216&- 1)
-231&~ (231&- 1)
unsigned int
0 ~ (232-1)
实型(单精度)
1.18*10-38&~ 3.40*1038
实型(双精度)
2.23*10-308&~ 1.79*10308
15位有效位
long double
实型(长双精度)
3.37*10-4932&~ 1.18*104932
19位有效位
上面这张表是一般VC 32位程序类型的资料。大家特别注意下长度,你看int 占用4字节,不过不同编译器和平台不一样,数据类型的字节数应该是由CPU决定的,但是实际上主要由编译器决定。
显然一个类似下面这样结构体:
struct Student
/*然后定义一个Student 类型的 student变量*/
student这样的结构体占用4×4=16字节
内存分布一般为:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15&
name & sex & & &age & & & & & addr
下面我们看看tTVPXP3ExtractionFilterInfo结构如下:大小和内存位置我已经标注给大家(KRKR源代码\2.26\kirikiri2\src\plugins\win32\tp_stub.cpp文件中)
struct tTVPXP3ExtractionFilterInfo
const tjs_uint SizeOfS // structure size of tTVPXP3ExtractionFilterInfo itself 4个字节 0-3
const tjs_uint64 O // offset of the buffer data in uncompressed stream position 8个字节 4-11
void * B // target data buffer 4个字节 12-15
const tjs_uint BufferS // buffer size in bytes pointed by &Buffer& 16-19
const tjs_uint32 FileH // hash value of the file (since inteface v2)
tTVPXP3ExtractionFilterInfo(tjs_uint64 offset, void *buffer,
tjs_uint buffersize, tjs_uint32 filehash) :
Offset(offset), Buffer(buffer), BufferSize(buffersize),
FileHash(filehash),
SizeOfSelf(sizeof(tTVPXP3ExtractionFilterInfo)) {;}
};有了这些东西,我们去搞汇编就易如反掌了
上面加密算法伪代码应该这样:
取出[esi+0Ch]里的数据,即Buffer[i]
异或xor &[esi+14h] 即&FileHash
异或xor&0CDh
好了解密算法这样写就OK了:
//---------------------------------------------------------------------------
void TVP_tTVPXP3ArchiveExtractionFilter_CONVENTION
TVPXP3ArchiveExtractionFilter(tTVPXP3ExtractionFilterInfo *info)
// TVPXP3ArchiveExtractionFilter 函数是会从吉里吉里本体调用的回调函数。
// 能得到的参数只有一个,就是对 tTVPXP3ExtractionFilterInfo 结构体的指针。
// TVPXP3ArchiveExtractionFilter 需要在后述的 V2Link 函数内使用
// 吉里吉里本体的 TVPSetXP3ArchiveExtractionFilter 函数设定。
// 这个样例只是纯粹的对 xp3enc.dll 样例代码加密的 XP3 文件包解密
// 将所有的数据以 FileHash 的最后一个字节作异或(XOR)运算
// 请注意,这个函数有可能在多个线程中被调用。
tTVPXP3ExtractionFilterInfo 的成员如下
* SizeOfSelf
: 结构体自身的大小
: &Buffer& 成员所指向的数据偏离这个文件头部的偏移值
: 数据本体
* BufferSize
: &Buffer& 成员所指向的数据的大小(字节单位)
* FileHash
: 解密后文件内容的32位 Hash (散列)值
// 检查结构体的大小
if(info-&SizeOfSelf != sizeof(tTVPXP3ExtractionFilterInfo))
// 当结构体的大小错误,则最好投出异常
TVPThrowExceptionMessage(TJS_W(&Incompatible tTVPXP3ExtractionFilterInfo size&));
// TVPThrowExceptionMessage 是用于投出异常的函数
// 本函数不会返回。
// yourdiary 解密代码 by大师♂罗庄
// ext: loc_:
CODE XREF: .text:j
ecx, [esi+0Ch] //Buffer[i]
dl, [ecx+eax]//Buffer[i]
dl, [esi+14h] //FileHash
//.text:1000103C
//.text:1000103E
eax, [esi+10h]//循环比较BufferSize
short loc_
//.text:1000104B
//.text:1000104B loc_1000104B:
CODE XREF: .text:j
//.text:1000104B
//.text:1000104C
//.text:1000104C ; ---------------------------------------------------------------------------
//.text:1000104F
for(i = 0; i & info-&BufferS i++)
unsigned char
v4 =((unsigned char *)info-&Buffer)[i] ;
unsigned char
v5 =info-&FileHash^ (v4);
result = v5 ^ 0xCD;
((unsigned char *)info-&Buffer)[i]
//---------------------------------------------------------------------------编译生成*.dll 然后改成*.tmp
可以覆盖游戏*.tmp试试,但最好别这样,最好用Crass 带tmp参数进行测试,发现没有错误能解包。
好了课程就这样,下课。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:8215220次
积分:69362
积分:69362
排名:第18名
原创:1026篇
转载:57篇
译文:11篇
评论:3752条
(2)(1)(4)(12)(3)(1)(2)(2)(4)(4)(3)(3)(15)(2)(1)(1)(4)(4)(1)(6)(2)(1)(7)(7)(12)(9)(9)(12)(6)(3)(3)(10)(24)(5)(5)(5)(2)(10)(11)(9)(14)(9)(3)(6)(15)(4)(3)(4)(1)(4)(15)(17)(13)(3)(6)(3)(11)(4)(6)(8)(5)(6)(7)(11)(2)(9)(12)(9)(8)(7)(5)(6)(5)(10)(9)(8)(20)(20)(35)(38)(31)(22)(14)(14)(38)(10)(93)(148)(38)(16)(23)(9)(1)(2)(2)(26)(5)求教!KRKR游戏制作完成后的打包问题……(已解决) | AVG制作者专区 - 幻想森林论坛 - Powered by PHPWind
查看完整版本: [--
求教!KRKR游戏制作完成后的打包问题……(已解决)
如题,就是想请问一下完成的游戏该如何打包。。。其实我之前曾用NS做完过一个游戏,当时是用NS自带的打包工具来包的。。。不过KRKR好像没有自带的打包工具(或者有,我没找到。。。)另外就是,我用NS做的那款游戏,被人很轻易的拆了包,素材掏去自用。。。然后我在水螅大人制作的游戏里发现,游戏包里没有任何文件。。。除了存档文件夹和游戏启动图标外什么都没有。。。不知道那位大人是怎么打包的喔,这样一来貌似就不用担心被拆包了。。。。如果可以的话想请教如何打包后又让游戏文件神隐的方法。。。。或者只告诉我普通的打包KRKR的方法就好。。。。感激不尽说。。。。。。
打包的工具就在tools文件夹里一个叫krkrrel的东西。。。你打开之后就晓得如何用了。。。至于加密的方法,KR有一些加密插件。。不过kcddp现在上不去。。不知道还能从哪下载。。那上边还有加密文件的编写方法
不过无论怎么加密。。只要别人想拆。。怎么都会拆掉的。。就算再复杂也只是个时间问题。。
所以加密基本只能做到放小白工具的地步。。。
大概就是这样。。不晓得能不能帮上你。。&&
一般我们用molebox……勉强能躲过小白的毒手。
感谢pengyu5008殿的帮助,俺已经学会KRKR自带的封包如何使用了。。。不过俺听了CountD大人的话之后,又去下了一款molebox。。。可是安装后貌似只能打开EXE文件,究竟该如何用它打包还没摸索出来。。。在网上搜索似乎也找不到相关的使用方法。。。能麻烦大人顺便指教一下molebox的使用办法么?感激的说。。。
molebox的使用方法啊。。。丢这个教程给你。。。
啊!谢谢!谢谢pengyu5008殿!谢谢CountD大人!你们真是好人~~抱ING~~~感激得无底投地的说~~~
查看完整版本: [--
Powered by
Time 0.764673 second(s),query:2 Gzip enabledYou can

我要回帖

更多关于 krkr2封包 的文章

 

随机推荐