编写纹身的汇编代码

7
我需要帮助编写一个简单的“程序纹身”的32位汇编代码。我想要一款汇编代码和我的女儿Alisha有关的纹身。我想出一个“不合逻辑的计算”来,违背了汇编语言的规则。我想要向像我这样的人致敬,他们认为拥有孩子是多么不合逻辑...一个习惯于1和0的人。我考虑使用基于x86的32位寄存器(如EAX,EBX和ECX),当然还有一些推送和弹出操作。这个纹身将没有注释(括号内没有任何内容),但会包括开始:标记。
start:
    mov eax, 53656C66h   (ASCII for "Self")
    mov ebx, 57696665h   (ASCII for "Wife")
    add ebx, eax

    push ebx
    push 3F81DBh         (Decimal 4162011 = daughter's birth date)

    pop ecx              (The first pop would give my daughter's birth date)
    pop ecx              (the second pop would NOT give the answer of eax added to ebx,
                          but would rather give my daughter’s nickname)
    ??? ecx

我的想法是用指令替换 ???,然后显示 ecx 中的值现在是 416c69h(即“Ali”,我女儿的昵称)。 我认为这个想法非常棒,如果我真的做了这个纹身,我会发布照片的(当然)。
我的想法是最后一个 pop 指令违反了计算机逻辑。 实际上,拥有孩子违反了我们所知道的“逻辑”,因此这是我试图呈现生命之美的尝试。
还有其他想法吗?

bx是一个16位寄存器。值5769666579h有31位长...也许你应该考虑另一个想法... - Macmade
好观点Macmade。我刚刚转而使用扩展寄存器。实际上,ACSII每个字符使用7位,对吧?这意味着我需要使用64位来保存ASCII中的“Alisha”。我可以使用“Ali”,因为那是她的昵称。 - user1435743
2
你不想纹上一个64位的纹身吗? - Gunther Piez
2
顺便说一下,妻子不适合32位。 - Gunther Piez
不错的纹身想法。只要确保有一个好的纹身工具包 :) - Johnny
显示剩余2条评论
1个回答

6

有点奇怪的是,这个程序实际上什么也没做。 为什么不写一些代码,通过组合你的名字、你妻子的名字和她出生日期的编码来得到你女儿的名字呢?也许可以通过一系列含有有意义的值的XOR指令来实现。


我的想法是最后一个弹出操作将违背正常的计算机逻辑。 它不会返回5769666579h + 4d65h的答案,而是会返回我的女儿的名字。但是,我真的很喜欢你的想法。现在,我只需要找出如何进行一些异或运算,从“我”和我妻子的昵称/姓名中推导出“Ali”的十六进制表示。我还需要找出如何更好地将这些东西放入寄存器中...我目前更喜欢使用32位。 - user1435743
我应该从movs开始还是应该加载寄存器而不是移动值?我不确定在汇编中填充空寄存器的最佳方法是什么。换句话说,我想通过引入“Me”(ASCII作为十六进制)和“Wife”(ASCII作为十六进制)来开始程序。一旦我带入这些值,我想开始使用出生日期/特殊日期等对它们进行异或操作,以便从XOR中获得我的女儿的名字。这将很棘手! - user1435743
你可以使用 mov eax, 'Wife',汇编器会理解它。 - Gunther Piez
drhirsch> 我想采用十六进制值的混淆方式,因为它不太明显。我喜欢大多数人看不懂他们正在查看什么的想法 :) - user1435743

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接