如何将反编译pyc文件获取的Python字节码转换为正常Python源码
字节码转可读Python源码的解决方案
- 优先使用兼容性更好的反编译工具直接处理原始pyc文件,无需手动翻译字节码。适配不同Python版本的常用工具包括
uncompyle6、decompyle3、pycdc,3.9及以上高版本Python优先选择pycdc,对新字节码指令支持更完善,绝大多数场景可直接还原完整可读源码。 - 若只能基于当前拿到的字节码手动翻译,可对照Python字节码指令语义逐行还原,你提供的这段字节码对应还原后的Python源码如下:
# 对应L.174逻辑 javascripts = [] # 对应L.177 - L.181逻辑 for i in range(len(incident_tags)): if str(incident_tags[i].text) not in list_of_incidents: javascripts.append(incident_tags[i].get_attribute('href')) else: print('Ignore ' + incident_tags[i].text + '. It is already completed.') # 对应L.184 - L.189逻辑 for i in range(len(javascripts)): self.driver.execute_script(javascripts[i]) time.sleep(1)
- 手动翻译通用规则:
POP_JUMP_IF_FALSE对应if条件不成立时跳转分支,FOR_ITER对应for循环迭代逻辑,CALL_METHOD/CALL_FUNCTION对应方法/函数调用,LOAD_ATTR对应属性读取,BINARY_SUBSCR对应下标取值操作,按照栈操作的执行顺序倒推即可拼接出对应语句。
内容的提问来源于stack exchange,提问作者Riayad
相关产品推荐
相关产品推荐

