-
-
[翻译]Pokémon Shellcode 加载器
-
发表于:
2022-7-31 18:55
7648
-
[翻译]Pokémon Shellcode 加载器
原文地址:https://techryptic.github.io/2022/07/28/Pokemon-Shellcode-Loader/
厌倦了整天看着十六进制和弹出'\x41'吗?宁愿去看Lugia/Charmander?我为你提供了解决方案。@Checkymander发来了一条推特,关于从Pokémon的名字中创建一个Shellcode 加载器。很有趣的项目,可以混淆蓝队,但没有POC! (至少在我最后一次检查时)
注#1 更新的代码将在我的GitHub上:https://github.com/Techryptic/Pokemon-Shellcode-Loader
注#2 GitBooks: https://techryptic.gitbook.io/pokemon-shellcode
注#3 GitPages: https://techryptic.github.io/2022/07/28/Pokemon-Shellcode-Loader
有多种方法可以做到这一点。如果我们看一下shellcode,它是一系列从0x00-0xFF的十六进制,或以0-256的十进制形式。我们可以选择的Pokemon(口袋妖怪)刚好超过256个。
从上面的Pokemon图来看,我们可以把编号为001的BULBASAUR翻译成0x01(去掉第一个0)。同样地,CHARMANDER将用0x04表示,以此类推。lucky空字节0x00可以对准Pokemon#257,BLAZIKEN!
将shellcode转换为Pokemon-Shellcode很简单。将Pokemon-Shellcode转换为Assembly怎么样?我们想在.ASM内有一个数组吗?C代码?从外部把它下载下来?
根据这种思路往下走!
我们需要数据。首先,我发现两个区域同时包含Pokemon的编号和名称:
https://gist.github.com/armgilles/194bcff35001e7eb53a2a8b441e8b2c6
还有一个只有Pokemon的名字。这可能更有用,因为我们可以在不携带长字符串的情况下获得特定Pokemon的数组索引位置。
https://github.com/sindresorhus/pokemon/blob/main/data/en.json
我正在使用一个普通的POP CALC shellcode,并将其放入C语言代码中。
不合格。它没有做任何恶意的事情,但仍然……不合格。
一个简单的脚本将一个shellcode字节对象转换为Pokémon Shellcode。
以上面的shellcode为例:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2022-9-18 07:50
被梦幻的彼岸编辑
,原因: