【问题标题】:Decompile and deobfuscate python files [closed]反编译和反混淆python文件[关闭]
【发布时间】:2016-04-22 17:15:58
【问题描述】:

我们的一位员工创建了一个 python 应用程序,他对其进行了模糊处理,然后进行了 base64 编码。 目前,该员工因其他行为被停职,不会反编译或提供代码库。 HR正在整理。

我需要对文件进行去混淆处理,这样我才能读取他创建的内容并提交给 HR。有人可以帮忙吗?

使用https://github.com/lhr0909/PythonObfuscator(我找到了他的命令历史)对其进行了混淆,然后进行了base64编码。

【问题讨论】:

  • Base 64 解码是微不足道的,反混淆可能不是(例如,无法自动放回合理的变量名称)。只需返回到较早的版本(如果您没有使用源代码控制...)如果有“其他操作”,为什么它甚至很重要?
  • python -m trace --trace script.py 应该为您提供脚本执行的所有调用。我猜你正在做的是法医证据,这是一项肮脏的工作。有一些去混淆的工具,但它们很少是完整的。
  • 这就是为什么一些人使用版本控制系统...
  • @jonrsharpe 不幸的是,这位工作人员没有使用没有混淆的修订版本更新 git 存储库。我只是这里的中间人,按照我们的人力资源团队的指示去做......
  • @Carl 给出了下面的信息,看来你和stackoverflow.com/questions/33217926/… 有同样的问题;重新组合起来很简单。

标签: python base64 obfuscation deobfuscation


【解决方案1】:

取消混淆该特定混淆器非常容易,因为它实际上不会更改任何标识符。
取一段简单的代码:

from random import randrange
print([[randrange(n) for _ in range(n)] for _ in range(n)])

生成:

exec("import re;import base64");exec((lambda p,y:(lambda o,b,f:re.sub(o,b,f))(r"([0-9a-f]+)",lambda m:p(m,y),base64.b64decode("NyA0IDMgMAo1KFtbMCg4KSAyIDkgNiAxKDgpXSAyIDkgNiAxKDgpXSk=")))(lambda a,b:b[int("0x"+a.group(1),16)],"randrange|range|for|import|random|print|in|from|n|_".split("|")))

将第二个exec 替换为print

exec("import re;import base64");print((lambda p,y:(lambda o,b,f:re.sub(o,b,f))(r"([0-9a-f]+)",lambda m:p(m,y),base64.b64decode("NyA0IDMgMAo1KFtbMCg4KSAyIDkgNiAxKDgpXSAyIDkgNiAxKDgpXSk=")))(lambda a,b:b[int("0x"+a.group(1),16)],"randrange|range|for|import|random|print|in|from|n|_".split("|")))
                                ^^^^^

现在运行它会显示:

from random import randrange
print([[randrange(n) for _ in range(n)] for _ in range(n)])

【讨论】:

  • 嗨@Achampion,感谢您的回复。我现在会运行它..我可以解码base64,但是代码被混淆了,这样也能解码吗?
  • @Carl 看到我上面链接的问题;这只是十六进制索引的查找和替换
  • @Carl 混淆器在 base64 中编码,如果这是您正在谈论的唯一 base64,那么是的,它会解码它。
  • @jonsharpe 令人印象深刻的逆向工程,但是当一个简单的print 替换提取所有文本时有点矫枉过正。
  • 嗨@AChampion 谢谢你的解释,我很感激.. 所以我把文件解码了,现在文本是一串0o0=iiIIIiiiiii 我看到他用github.com/astrand/pyobfuscate 来混淆它
猜你喜欢
  • 2011-09-20
  • 2012-09-25
  • 1970-01-01
  • 2012-01-19
  • 1970-01-01
  • 2017-08-14
  • 2012-01-01
  • 1970-01-01
  • 2013-04-12
相关资源
最近更新 更多