Crakeme01.apk过反调试,取密码

1.准备工作完成后,在JNI_OnLoad函数第一行设置断点,然后F8往下执行,会发现调试将在D03140C8这个位置崩掉

 

2.在新IDA窗口中分析该so文件,找到这个崩掉的位置的这个方法,进去查看该函数干了什么事情 

(1) 

(2) 

(3) 进去后,能F5查看伪代码就查看伪代码,虽然看不是很懂C/C++代码,大致可猜测他是检测是否被调试,从内容中没看到它在执行除了检测调试之外的其他代码,那么大可放心把进入这个函数的入口给干掉.

3.把进入AD的这个BLX指令干掉 

(1) 

 

(2)

(3) 干掉之后,F9 安全通过

4.在smali中得知校验密码调用的是greywolf(Landroid/content/Context;Ljava/lang/String;)V方法,有两个参数

接下来就是取正确密码了,先取消勾选的三项,进入bc方法,在bc方法设置个断点

(1)

(2) 

 

5.java调用so层的方法,有默认的两个参数,一个是JNIEnv *env, 一个是jobject obj, greywolf有两个参数,一个是Context(R2),一个是String(R3),那么String正常就是存在R3这个寄存器中,接下来就是追踪R3这个寄存器的走向

 

 6.到了下一个跳转的位置,在静态分析中,继续跟进,

(1) 

(2) 通过dh函数一路进去,可发现这是一个签名校验的方法

 

 (3)由于很多地方都调用到了dh这个方法,把每个调用到dh的地方都干掉不太现实,那么久直接修改dh的返回值,让它直接返回true(true为1)

 

 

 

7. 通过F5可发现,这是一个解密函数,

 (1)

 (2)

8. 可以看到,此函数返回的是"hello5.1"

 

 9.偷一下懒,暂不去考虑其他的,拿这个字符串去输一下,可以发现秘密是正确的

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值