소스 검색

COMPARE_OP support

master
Ben Kurtovic 12 년 전
부모
커밋
10044e576f
1개의 변경된 파일8개의 추가작업 그리고 2개의 파일을 삭제
  1. +8
    -2
      func_smash.py

+ 8
- 2
func_smash.py 파일 보기

@@ -26,6 +26,8 @@ def make_chain(funcs):
arg = co.co_consts[oparg]
elif op in opcode.haslocal:
arg = co.co_varnames[oparg]
elif op in opcode.hascompare:
arg = opcode.cmp_op[oparg]
else:
raise NotImplementedError(op, opcode.opname[op])
else:
@@ -69,13 +71,17 @@ def _make_codes(chain):
codes.append(op)
if op >= opcode.HAVE_ARGUMENT:
if op in opcode.hasconst:
if arg not in constants:
constants.append(arg)
args = constants
elif op in opcode.haslocal:
if arg not in varnames:
varnames.append(arg)
args = varnames
elif op in opcode.hascompare:
args = opcode.cmp_op
else:
raise NotImplementedError(op, opcode.opname[op])
if arg not in args:
args.append(arg)
codes.append(args.index(arg))
codes.append(0)
code = random.choice(chain[op])


불러오는 중...
취소
저장