安卓逆向|菜鸟的objection学习笔记:内存读写

上篇文章讲解了如何操作FRIDA进行内存的读写,今天试试用objection来进行内存的读写。

github地址:

https://github.com/sensepost/objection

继续以上篇文章的apk进行学习,请开启frida服务。

通过objection命令启动apk进程:

objection -g com.yaotong.crackme explore 

启动好的界面是这样的:

提示我们输入命令,如果你不知道该输入什么可以打下空格,会有很多提示。

我们知道,这个apk的flag是"aiyou,bucuoo",直接在内存中搜索是否存在:

memory search "aiyou,bucuoo" --string

果然搜索到了,说明内存中确实是存在的,如果你不想看这些内容,仅仅只想看内存的偏移第一,可以在命令后面加一个 "--offsets-only"即可,如图:

 

结果仅显示了偏移地址。

当然,这不是重点,重点是如何像上一篇文章那样不写代码就能读写内存。

1.导出所有modules的信息,用于获取libcrackme.so的基址。

memory list modules

结果如图:

一下子显示了很多结果,由于无法使用grep过滤,所有保存到本地再查找吧:

memory list modules --json modules.json

运行后,打开modules.json,查找libcrackme.so,结果如图:

可以看到,当前 so 的基址是 0xc9350000,再加上偏移 0x628c,也就是0xc935628c,以0xc935628c为地址,将这里的内容进行dump,100个字节即可:

memory dump from_base 0xc935628c 100 memory.dex

将保存后的文件用UE打开,内容如下:

继续像上面一样,将0xc9354450处的内容进行dump,同样100个字节:

memory dump from_base 0xc934450 100 final.dex

保存的结果用UE打开后,内容如下:

可以看到,成功的找到了flag!

现在将这个flag进行改变试试,即将上面的"aiyou,bucuoo"变成"123456",命令如下:

memory write "0xc934450" "123456" --string

运行后,发现"123456"还是提示校验错误,那是什么原因呢,继续dump看看这个地址处的内容:

原来写入时不含字符串的终止符,因此我们用另外的方式:

memory write 0xc9354450 "31 32 33 34 35 36 00" 

加上一个终止符即可,再次输入"123456",发现成功了!

如果你写学习更多关于memory的操作,可以直接看源代码:

objection\commands\memory.py

当然,也可以以文件的方式来进行读取,使用import命令即可。

function main() {
  console.log("\nEntering the Script!");
  Java.perform(function() {
      console.log("Inside Java perform");
      var soAddr = Module.findBaseAddress("libcrackme.so");
      var passwordAddr = soAddr.add(0x628c);


      var pwdstr = Memory.readUtf8String(Memory.readPointer(passwordAddr));


      console.log("The flag is: " + pwdstr);
  })
}


setImmediate(main);

将这段代码保存为hook.js,在objection界面输入:

import hook.js

结果如下:

也成功的显示出了结果,除了使用import命令,也可以使用 evaluate 命令:

如果后面不跟 Hook.js,则进入编辑界面,输入代码,同样可以计算出结果:

学习内容:

  1. objection memory 相关命令的学习(modules导出,内存读写,字符串搜索)

  2. objection 界面下运行脚本的两种方式

  3. objection 界面下直接输入代码并运行

本文参考文章:

https://www.anquanke.com/post/id/197657

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值