首页
社区
课程
招聘
[原创]Hyperpwn:基于gdb的调试利器,让你的调试过程更轻松
2020-1-21 22:08 11448

[原创]Hyperpwn:基于gdb的调试利器,让你的调试过程更轻松

2020-1-21 22:08
11448

Hyperpwn:基于gdb的调试利器,让你的调试过程更轻松


 一、Hyperpwn何许人也?

Hyperpwn是师弟开发的一款gdb调试工具的增强插件,入选了Kcon2019的九大神兵之一。我也在看雪的课程上已经给不少人做了使用和演示,相信已经有一些人对于Hyperpwn有了一定的了解。一直打算写一篇关于如何使用Hyperpwn进行android的动态调试的文章,结果由于很忙而拖到了现在。本篇文章也是再次为师弟打call,下面是在Kcon2019大会上的一些介绍:
  
  


 Hyperpwn在早期对android的gdb调试支持不够完善,导致了出现一些问题。后来在和师弟经过一些完善后,现在已经完美支持了NDK提供的gdb和gdbserver的远程调试功能。

Hyperpwn官方链接 [Gayhub](https://github.com/bet4it/Hyperpwn "Hyperpwn")

这里以一张gif图来作为对Hyperpwn的开篇介绍吧
  

  
Hyperpwn是一个基于Hyper实现的gdb调试插件,用于改善调试过程的结果显示。Hyperpwn在前辈们的基础上更进一步,将调试过程中的gef、pwndbg、peda等调试插件的结果显示进行自动化窗口布局,从而让整个调试过程更人性化。
同时,Hyperpwn引入了调试状态记录功能,对动态调试过程中的每一个状态进行了保存,从而解决逆向调试人员使用手工记录每一个调试状态的寄存器信息、内存信息等内容的繁琐过程。在调试过程中只需要使用ctrl+shift+pageup快捷键便可以查看上一个调试状态信息,使用ctrl+shift+pagedown就可以查看下一个调试状态信息,非常的方便,从而真正做到解放双手。
具体的介绍和安装过程可以去gayhub查看。

二、使用Hyperpwn进行动态调试并脱壳的简单实践


1、将NDK中提供的gdbserver推送入手机,对应在NDK的目录:prebuilt/android-arm/gdbserver以及prebuilt/android-arm64/gdbserver

 adb push gdbserver /data/local/tmp,并给予可执行权限:chmod 777 /data/local/tmp/gdbserver

(这里要注意gdbserver的32位和64位的区别)

2、开启端口转发:adb forward tcp:1234 tcp:1234

3、以调试模式开启app,使用gdb-server附加app进程,首先使用ps命令获取待调试的app的进程id,/data/local/tmp/gdbserver :1234 --attach pid

4、接下来就可以使用Hyperpwn愉快的开始对app的debug了。(这里要注意需要使用ndk中提供的gdb,而不是系统的gdb),首先打开Hyper,然后cd到NDK中的gdb目录当中,然后执行./gdb,接下来就可以连接gdbserver进行远程调试了。



下面是一张在绕过某加固的前期的所有反调试后,可以很明显看到堆栈当前存放的解密后的dex在内存中的位置,此时只需要使用memory dump即可将当前dex所在的内存区域dump下来,便完成了对该加固app的简单脱壳。
  

  
  下面是使用jadx打开dump下来的dex的截图。
   

  

  三、好了,就到这里了,感兴趣的可以去gayhub按照安装和使用教程搭建环境体验。


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

最后于 2020-1-21 22:28 被hanbingle编辑 ,原因:
收藏
点赞4
打赏
分享
最新回复 (6)
雪    币: 2128
活跃值: (6676)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
爱吃菠菜 2 2020-1-21 22:38
2
0
对动态调试过程中的每一个状态进行了保存
雪    币: 13441
活跃值: (4768)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tDasm 2020-1-22 11:15
3
0
有支持ida的吗?
雪    币: 2330
活跃值: (1104)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
FraMeQ 2020-1-22 11:23
4
0
不知道和IDA对比起来 动态调试的时候有什么优势
雪    币: 216
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
天空在线吧 2020-2-12 16:01
5
0
牛牛牛
最后于 2020-2-12 16:07 被天空在线吧编辑 ,原因:
雪    币: 1360
活跃值: (2093)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xdnice 2020-2-13 13:33
6
0
谢谢分享这么好的插件。
雪    币: 7816
活跃值: (1068)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
jltxgcy 2 2020-2-13 14:30
7
0
支持android C++源码调试么,比如调试art虚拟机?
最后于 2020-2-13 14:30 被jltxgcy编辑 ,原因:
游客
登录 | 注册 方可回帖
返回