首页
社区
课程
招聘
[求助]lua解密代码文本为8字节,不知道哪里改动了?
发表于: 2017-4-14 21:37 7839

[求助]lua解密代码文本为8字节,不知道哪里改动了?

2017-4-14 21:37
7839
收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 516
活跃值: (802)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
2

朋友,你的问题问得不是很清楚,我试着回答一下。

从文件头可以看出你的文件是lua字节码,可以用luadec51反编译。

字节码的格式可以百度搜索,其中+12偏移为4字节的路径大小,+16为路径

所以左图+12为,即大小位0x0000006A,路径为被打码的字符串

右图+12为0x0000000A,所以路径为@init.lua\x00

2017-4-15 12:29
0
雪    币: 14
活跃值: (92)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
常量字符串前面都是加上了00  00  00  00,去掉可以正常解析,就是不知道源码里面哪里改动了。
2017-4-15 12:41
0
雪    币: 516
活跃值: (802)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
4
双峰山 常量字符串前面都是加上了00 00 00 00,去掉可以正常解析,就是不知道源码里面哪里改动了。

如果问题只是你描述的 “常量字符串前面都是加上了00  00  00  00”,那相当于是string size由 int32 变成了 int64,只要在luadec源码中,修改加载时的string size就可以了。

从调试跟踪可以发现,字符串加载过程是在lundump.c文件中,其中LoadConstants函数判断是否是字符串,是的话再调用LoadString函数,修改这2个函数就可以了,原函数LoadConstants如下:

static void LoadConstants(LoadState* S, Proto* f)
{
...
	switch (t)
	{
	...//字符串类型,调用LoadString函数
		case LUA_TSTRING:
			setsvalue2n(S->L,o, LoadString(S));
			break;
	...
	}
...	
}


原函数LoadString如下:

static TString* LoadString(LoadState* S)
{
	uint32_t size;
	LoadVar(S,size);
	
	if (size==0)
		return NULL;
	...
}


然后修改代码,修改后的LoadString如下:

#define LoadString(S) myLoadString(S, 0)	//模拟默认构造参数
static TString* myLoadString(LoadState* S,int bInt64size)
{
	uint32_t size;
	if (bInt64size)
	{
		int64_t nSize;
		LoadVar(S, nSize);  //这个宏读取了string的大小nSize
		size = nSize;
	}else
		LoadVar(S, size);
		
	if (size==0)
		return NULL;
	...	
}


修改后的LoadConstants如下:

static void LoadConstants(LoadState* S, Proto* f)
{
...
	switch (t)
	{
	...//字符串类型,调用新的myLoadString函数
		case LUA_TSTRING:
			setsvalue2n(S->L,o, myLoadString(S,1));
			break;
	...
	}
...	
}


最后重新编译生成新的luadec.exe就可以了。

我修改了一个文件,手动在所有字符串前面增加了00 00 00 00,亲测可以反编译


2017-4-19 11:30
0
雪    币: 51
活跃值: (381)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
征途的,不需要那么麻烦,呵
2017-4-20 13:35
0
雪    币: 14
活跃值: (92)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
看了几天luac格式,这其实是size_t长度更改成int64的8字节导致
2017-4-22 10:26
0
雪    币: 119
活跃值: (1778)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我之前也看过这个文件,也是卡在这个8字节上,没有深究。
2018-8-23 22:53
0
游客
登录 | 注册 方可回帖
返回