【发布时间】:2019-05-12 12:05:19
【问题描述】:
以下代码行位于for 循环内,其中j 递增,ansString 是一串ASCII 字符,例如000\Qg$M!*P000\gQYA+ h000\M|$skd 000\Qo}plsd000\。
ansString[j] = ((char)(paramString[j] >> j % 8 ^ paramString[j]));
我无法弄清楚如何让 XOR 和所有其他运算符反转以找到 paramString。感谢任何帮助。
【问题讨论】:
-
你不能反向模运算,它需要测试所有的可能性
-
当
(j%8)==0时你可以反转这个except 你应该注意到ansString的每个第8 个字符都是零,不管输入字符是什么。我认为写这篇文章的人犯了一个错误。 -
@azro 因为我是新手,你能建议我尝试测试可能性的方法吗?
-
@MattTimmermans 很有趣,你能进一步解释为什么
(j%8)==0不可逆吗? -
当
(j%8)==0、ansString[j]==paramString[j]^paramString[j]出现在0时。所有的零都相同,因此无法确定paramString[j]是什么
标签: java string encryption reverse-engineering