(section, outputCount=0)
| 441 | |
| 442 | |
| 443 | def getObjCClassData(section, outputCount=0): |
| 444 | |
| 445 | target = getTarget() |
| 446 | indeces = [] |
| 447 | stringList = [] |
| 448 | |
| 449 | ptrsize = getType("void*").GetByteSize() |
| 450 | sz = section.GetByteSize() / ptrsize |
| 451 | addr = section.GetLoadAddress(target) |
| 452 | script = "int dssize = {};\nchar *classNames[{}];\nClass *clsPointer = (Class*){};".format(sz, sz, addr) |
| 453 | script += r''' |
| 454 | memset(&classNames, 0, sizeof(classNames)) |
| 455 | for (int i = 0; i < dssize; i++) { |
| 456 | classNames[i] = (char*)class_getName(clsPointer[i]); |
| 457 | } |
| 458 | classNames''' |
| 459 | val = target.EvaluateExpression(script, genExpressionOptions(False, True, True)) |
| 460 | |
| 461 | for i in range(val.GetNumChildren()): |
| 462 | x = val.GetChildAtIndex(i) |
| 463 | indeces.append(i * ptrsize) |
| 464 | stringList.append(x.summary.replace("\"", "")) |
| 465 | |
| 466 | return (indeces, stringList) |
| 467 | |
| 468 | def getSectionData(section, outputCount=0): |
| 469 | # loadAddr = section.addr.GetLoadAddress(getTarget()) |
no test coverage detected
searching dependent graphs…