AttributeError:“tuple”对象没有属性“ImplFlags”

2024-06-28 19:43:04 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我正在获取“AttributeError:”tuple“对象在我运行脚本时没有属性”ImplFlags“。我使用的是ironpython,这个脚本只能在ironpython上运行。在

我已经试着改变了“行.ImplFlags“到”row[ImplFlags]”中,但这只会引发以下情况:“NameError:未定义全局名称”“ImplFlags”“”

import clr

clr.AddReferenceToFileAndPath("System.Reflection.dll")
from System.Reflection import MethodAttributes, MethodImplAttributes

def main():
    mod = dnlib.DotNet.ModuleDefMD.Load('CrackME.exe')
    ss = mod.Assembly.Modules[0].Metadata.StringsStream # Strings stream
    ts = mod.Assembly.Modules[0].Metadata.TablesStream # mod.Assembly.Modules[0].TablesStream

    size = ts.MethodTable.Rows

    for mod in mod.Assembly.Modules:
        for typ in mod.Types:
            for method in typ.Methods:
                for i in xrange(1, size+1):
                    row = ts.TryReadMethodRow(i)
                    if row.ImplFlags == int(MethodImplAttributes.IL): # Show only methods having CodeType IL
                        print 'Name: {0}\tIsSpecial: {1}'.format(ss.Read(row.Name), int(MethodAttributes.SpecialName) & row.Flags != 0)

if __name__ == '__main__':
    try:
        clr.AddReferenceToFileAndPath('dnlib.dll')
        import dnlib
    except Exception, ex:
        print ex
    else:
        main()

我真的不知道为什么要这么做。它通常应该打印得很好,但是每次我试图修复元组错误时,它总是抛出新的错误。注意:如果有区别的话,这个脚本应该在IRONPYTHON上运行


Tags: inimport脚本modulesmodformainassembly