android 逆向 hack,[原创]记一次使用gdb逆向crackme

说明

Appuse是Android渗透测试虚拟机环境,其中模拟器中有HackMeNative供使用者进行攻击使用,比较简单,记录一下crack过程。

0x01 HackMeNative App

1、界面

590753_8NXTHXF2RCBS9VK.jpg   

590753_7M5Q6UVKRU4BB8G.jpg

2、操作

输入字符串,点击按钮判断输入的字符是否正确

0x02 Java层逻辑分析

1、逻辑分析

590753_ZWUN3S78G3WJGM6.jpg

java层逻辑简单,加载 libnative.so中的check方法进行字符串验证,在natvie层找到secret字符串即完成了crackme。

0x03 Native层逻辑分析

1、方法分析

使用ida分析libnative.so

590753_HHYCMK5G2YJZY37.jpg

590753_4SKTFH762PNMVCX.jpg

v7 = checkSecret(v5, v6);

根据伪代码的提示,v5是输入的字符串,v6是secret字符串

2、获取v6对于的secret字符串

gdb调试

(1)启动gdbsever

590753_SF5TM4KJA6YM7PS.jpg

(2)gdb client连接

adb forward tcp:5050 tcp:5050

(gdb) target remote :5050

(gdb) info sharedlibrary

590753_6KK5Q4ASBGH6B78.jpg

libnative.so内存地址是 0xa52b5c3c

使用radare2可以看so的基地址偏移量

590753_EHKZC33393EJ93R.jpg

checkSecret ida 查看的地址是 0x00000ca8

590753_X99XQ6P8UHSNE8Q.jpg

所以checkSecret运行时的内存地址是 0xa52b5c3c - 0x00000c3c + 0x00000ca8 = 0xa52b5ca8

590753_VPCDDCGD4STAR37.jpg

下断点,输入字符串

590753_YJWR6NCA6XUZBQS.jpg

查看寄存器

(gdb) x/s 0xa649ad80

0xa649ad80: "11111"

(gdb) x/s 0x9b3753e0

0x9b3753e0: "0123456789"

0xa649ad80 是对应的v5 即输入字符串

0x9b3753e0 是对应的v6 即Secret字符串

590753_RSMJUK7MDZEV93N.jpg   

590753_SXU3S9EVAG47FQB.jpg

0x04以上

本例主要是记录gdb动态调试native层so运行时如何获取secret字符串,无反调试,比较基础和简单,大佬勿喷

ps:有同学私信我要apk,请附件下载吧

最后于 2019-11-18 21:37

被neilwu编辑

,原因:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值