Binary Bomb Phase 5

不想你离开。 提交于 2019-11-29 08:57:55

It isn't quite clear what flyers is, I assume that is one correct input and you have to find others.

The important part is at <+47> and <+50>. It is using a 16-byte lookup table to transform the input string. The code is basically doing:

for(int i = 0; i != 6; i += 1) output[i] = table[input[i] & 0xf];

It's obvious that any characters that share the low 4 bits will produce the same output (even if the values in the lookup table are unique). For example, the first character f has ascii code 0x66, so it is mapped by table entry 0x06. The same applies to any character with 0x06 as low 4 bits, such as & (0x26), 6 (0x36), F (0x46), V (0x56), v (0x76). You can replace f with any of those (non-printable and full 8 bit values omitted for brevity). You can work out the equivalences for the other letters similarly.

If flyers instead is the required output, then you have to examine the contents of the lookup table at address 0x804a4b8 and provide input string with the correct letters that map to the expected output.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!