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)
## 附件
大佬遇见了新问题了,感觉无从下手给个思路。不知道是用什么加密的 所以你需要更屌的编辑器EverEdit,多年实践,目前唯一的选择,轻松删除空白行和随意打开几个G的大小文本。 浅叶末名` 发表于 2018-3-6 23:59
请问这种该怎么解密有类似的教程吗
你这问题问的一点都没有灵性。
你应该把行号标出来,或者把文件头给出来,至少让我知道文件有什么重要的部分。
或者把里面人能看懂的部分给出来,让我看看代码。
再或者你告诉我文件从哪里来的,文件是干什么用的,怎么打开这个文件。
另外,你要告诉我你试过什么方法,百度过什么东西,避免我走同样的弯路(通常,如果你做到了这些,我基本上就不用帮你了,你应该自己已经会了。)
我随便给你一个乱码的截图,问你能不能解密,你怎么判断? lvdebao001 发表于 2018-4-12 13:49
出现LuaR说明被加密了?小白一个,怎么解呢?
luaQ是5.1,luaR是5.2,luaS是5.3,可以尝试unluac,不一定可以,我的帖子里有。 跟着大佬走(逃 好高级,初学者看这个看不太懂 hansensindy 发表于 2018-3-6 18:02
好高级,初学者看这个看不太懂
这个再看不懂,我也没办法了。
好高级,初学者看这个看不太懂 感觉好厉害,虽然看不懂 这...叫解密?顶多就叫格式化代码 很厉害!谢谢分享会出来!! 刚接触,来看看,顶一下