JEBReplaceStrings.py
# Sample JEB script (UI:yes, Automation:yes) # Replace code strings by the string 'foobar' # This script shows how to navigate the DEX file # and how to modify strings in the string pool import os from jeb.api import IScript from jeb.api import EngineOption class JEBReplaceStrings(IScript): def run(self, jeb): self.jeb = jeb self.dex = jeb.getDex() if not self.dex: print 'Error! Please provide an input file.' sef.jeb.exit() for msig in self.dex.getMethodSignatures(True): #print msig md = self.dex.getMethodData(msig) if not md: continue code = md.getCodeItem() if not code: continue for insn in code.getInstructions(): if not insn.getMnemonic() in ('const-string', 'const-string/jumbo'): continue stringindex = insn.getParameters()[1].getValue() s = self.dex.getString(stringindex) if s: s2 = self.modifyString(s) if s2 and s2 != s: self.dex.setString(stringindex, s2) def modifyString(self, s): # totally useless: alphanumeric string are replaced by 'foobar' # could be the base script for something more useful, like # string language identification and translation into English if not s.isalnum(): return None return 'foobar'