Skip to content

Instantly share code, notes, and snippets.

@kamikat
Created September 5, 2017 02:13
Show Gist options
  • Save kamikat/af6034cd292699414f7a8b9678bb472f to your computer and use it in GitHub Desktop.
Save kamikat/af6034cd292699414f7a8b9678bb472f to your computer and use it in GitHub Desktop.
Replace immediate number in decompiled APK source file to constant variable reference.
#!/usr/bin/env node
let fs = require('fs')
let { argv } = require('process')
let res_map = fs.readFileSync('R.map').toString().split('\n').slice(0,-1).map(v => v.slice(0,-1).split(' = ')).reduce((dict, v) => {
dict[v[1]] = v[0]
return dict
}, {})
let exp = RegExp('(.*)(' + Object.keys(res_map).join('|') + ')(.*)', 'g')
let src = fs.readFileSync(argv[2]).toString().replace(exp, (match, p1, p2, p3) => p1 + res_map[p2] + p3)
fs.writeFileSync(argv[2], src)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment