一个dumpdex的IDA插件

一个DumpDex的IDA插件

源码

import idaapi
import struct


def dumpdex(start, len, target):
 rawdex = idaapi.dbg_read_memory(start, len)
 fd = open(target, 'wb')
 fd.write(rawdex)
 fd.close()

def getdexlen(start):
 pos = start + 0x20
 mem = idaapi.dbg_read_memory(pos, 4)
 len = struct.unpack('<I', mem)[0]
 print 'len is ' + str(hex(len))
 return int(len)


start = AskAddr(0, 'Input DexFile start in hex: ')
print('start is ' + str(hex(start)))


len = AskLong(getdexlen(start), 'Input DexFile len in hex: ')
target = AskStr('/users/boyliang/temp/xx.dex', 'Input the dump file path')


if len > 0 and start > 0x0 and target and AskYN(1, 'start is 0x%0x, len is %d, dump to %s' % (start, len, target)) == 1:
 dumpdex(start, len, target)
 print('Dump Finish')

用法

  • 首先shift + f2,调出IDA,选择import,把本脚本导入
  • 当动态调试的时候,找到dex的始址,比如断点在dvmDexFileOpenPartial,r0即是dex的始址
  • shift + f2,调出脚本,选择本脚本,按UI提示输入即可

注意: 这个小插件目前只支持连续的Dex文件,非连续性的不支持

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值