Ganlv 发表于 2018-3-6 17:53

lua脚本解密3:空白字符

本帖最后由 Ganlv 于 2018-5-9 23:50 编辑



## 系列教程

* (https://www.52pojie.cn/thread-694364-1-1.html)
* (https://www.52pojie.cn/thread-697540-1-1.html)
* (https://www.52pojie.cn/thread-705854-1-1.html)
* (https://www.52pojie.cn/thread-723324-1-1.html)
* (https://www.52pojie.cn/thread-737347-1-1.html)

## 样本

求助帖:<https://www.52pojie.cn/thread-705098-1-1.html>

## 分析

这个 lua 加密不按套路出牌,脚本并没有加密,而是添加了一大堆“换行符” ,就是 `LF`(Line Feed), `\n`(Newline) 或者 `0x0A`。



一大堆是多少?这个文件是 `5.9 MB`, 而真正的内容只有 `5.69 KB`,使用 Notepad++ 打开之后共有 `6100482` 行(610多万行)。



在 Windows 的记事本打开这个这个文件看上去并没有什么大问题,似乎只是代码没有换行,因为在 Windows 中 `LF` 一律不按换行处理,只有 `CR`(Carriage Return, `\r` 或 `0x0D`)和 `LF` 连用的时候才会换行。

> 随便闲扯点东西:
>
> Carriage Return 就是回车,以前的打字机时代,回车能让打字位置回到当前行的最前面。
> 至于为什么叫 Carriage (马车) 呢?打字机,键盘不会动,打字的位置也不会动,向右打字其实是纸向左移动,固定纸的地方就像一个马车的作用一样。回车就是让这个固定纸的东西移动到最右边。
>
> 而 Line Feed 就是前进一行,以前这个操作并不会进行回车的操作,所以微软的想法就是 `CR+LF` 为一个新行。而在 Linux 中只要 `\n` 就够了。

## 解决

非常简单,把多余的 `0x0A` 删掉就可以了。

### 尝试 1:Notepad++

我用 Notepad++ 试了一下,卡死了,CPU 直接飙到 100%。



### 尝试 2:WinHex

注意:不能把 `0A` 替换成“空”,而应该把 `0A0A` 替换成 `0A`,防止原有的代码换行被清除掉。然后重复这个过程,就可以把所有的空行都删掉了。

为了加速替换过程,我选择把 `0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A` 替换成 `0A`,这样可以快不少。





虽然可能残余一些换行符,但是剩下的就可以用 Notepad++ 清除掉了。



然后再用 vscode 格式化一下基本就可以了。



### 尝试 3:直接 vscode

早就听说 vscode 处理大文件的效率还是可以的,我就试试呗。

用正则表达式匹配连续的 `\n` 替换成单个 `\n`





试了以后才知道,vscode 果然名不虚传,不到半秒钟就替换完了。后来我又试了一下,在 Notepad++ 中用正则替换同样也是非常快。

## 其他

### Brainfuck

这个加密方式让我想到了一种编程语言,叫 (https://en.wikipedia.org/wiki/Whitespace_%28programming_language%29)。

### 过保护

这个过保护的代码亮瞎我的眼啊

```lua
::a1::
gg.clearResults()
gg.searchNumber('1', gg.TYPE_AUTO, false, gg.SIGN_EQUAL, 0, -1)
gg.toast('过保护35%')
gg.searchNumber('1', gg.TYPE_AUTO, false, gg.SIGN_EQUAL, 0, -1)
gg.toast('过保护75%')
gg.searchNumber('1', gg.TYPE_AUTO, false, gg.SIGN_EQUAL, 0, -1)
gg.toast('过保护95%')
gg.searchNumber('1', gg.TYPE_AUTO, false, gg.SIGN_EQUAL, 0, -1)
gg.toast('过保护开启成功')
goto sdone
```

## 相关链接

* (https://sourceforge.net/projects/luabinaries/files/5.1.5/Tools%20Executables/lua-5.1.5_Win32_bin.zip/download)
* (https://sourceforge.net/projects/luabinaries/files/5.2.4/Tools%20Executables/lua-5.2.4_Win32_bin.zip/download)
* (https://sourceforge.net/projects/luabinaries/files/5.3.4/Tools%20Executables/lua-5.3.4_Win32_bin.zip/download)
* (https://www.52pojie.cn/thread-694364-1-1.html)
* (https://www.52pojie.cn/thread-697540-1-1.html)
* (https://www.52pojie.cn/thread-705854-1-1.html)
* (https://www.52pojie.cn/thread-723324-1-1.html)
* (https://www.52pojie.cn/thread-737347-1-1.html)

## 附件


违规昵称123 发表于 2018-3-9 19:44

大佬遇见了新问题了,感觉无从下手给个思路。不知道是用什么加密的

Hmily 发表于 2018-3-6 18:37

所以你需要更屌的编辑器EverEdit,多年实践,目前唯一的选择,轻松删除空白行和随意打开几个G的大小文本。

Ganlv 发表于 2018-3-7 01:19

浅叶末名` 发表于 2018-3-6 23:59
请问这种该怎么解密有类似的教程吗

你这问题问的一点都没有灵性。
你应该把行号标出来,或者把文件头给出来,至少让我知道文件有什么重要的部分。
或者把里面人能看懂的部分给出来,让我看看代码。
再或者你告诉我文件从哪里来的,文件是干什么用的,怎么打开这个文件。
另外,你要告诉我你试过什么方法,百度过什么东西,避免我走同样的弯路(通常,如果你做到了这些,我基本上就不用帮你了,你应该自己已经会了。)

我随便给你一个乱码的截图,问你能不能解密,你怎么判断?

Ganlv 发表于 2018-4-12 18:59

lvdebao001 发表于 2018-4-12 13:49
出现LuaR说明被加密了?小白一个,怎么解呢?

luaQ是5.1,luaR是5.2,luaS是5.3,可以尝试unluac,不一定可以,我的帖子里有。

LDM233 发表于 2018-3-6 17:55

跟着大佬走(逃

hansensindy 发表于 2018-3-6 18:02

好高级,初学者看这个看不太懂

Ganlv 发表于 2018-3-6 18:05

hansensindy 发表于 2018-3-6 18:02
好高级,初学者看这个看不太懂

这个再看不懂,我也没办法了。

maya0214 发表于 2018-3-6 18:50


好高级,初学者看这个看不太懂

Soros 发表于 2018-3-6 19:13

感觉好厉害,虽然看不懂

ss22219 发表于 2018-3-6 19:32

这...叫解密?顶多就叫格式化代码

萌萌哒的小白 发表于 2018-3-6 19:43

很厉害!谢谢分享会出来!!

imqhl 发表于 2018-3-6 20:39

刚接触,来看看,顶一下
页: [1] 2 3 4 5
查看完整版本: lua脚本解密3:空白字符