使用Frida实现内存注入主动调用函数

上篇文章中,我演示如何使用OllyDbg逆向一个简单的C语言程序,找到HOOK的内存地址和参数汇编指令。最后使用Frida框架编写了一个HOO脚本实现内存注入(远程线程插入)。当C语言函数被调用时,HOOK脚本会监听对应的函数,读取ESP寄存器中的函数参数,并打印在屏幕上。

本文将更深一步的研究如何使用Frida通过内存注入的方式,主动调用应用程序在内存中的函数。大致原理就是在内存中申请一个新的区域,在这个新内存片段中写入自己定义的汇编指令。最后注入到已经运行的应用中,从而实现在内存中调用应用内部方法。本文根据《使用OllyDbg逆向查找HOOK地址和寄存器使用》中逆向获取的内存地址和寄存器操作,使用Frida模拟调用应用中的方法。因此在继续本文内容之前,建议先阅读一下这篇文章,否则阅读源代码过程中可能会有困难。
Read more

使用Frida编写HOOK实现内存注入

上文中我们使用C语言编写了一个简单的程序,并且使用OllyDbg逆向查看每一个函数的入口地址。并且使用调用堆栈查看调用每一个函数前的汇编指令。通过观察在调用每一个函数前汇编语言是如何操作和准备输入参数的,我们就可以编写HOOK程序,截取函数调用过程中的数据。本文将以《使用OllyDbg逆向查找HOOK地址和寄存器使用》中的C语言作为样例,编写一个HOOK程序实现内存注入,截取函数h()的两个参数,并打印在屏幕上。
Read more

使用OllyDbg逆向查找HOOK地址和寄存器使用

之前写过一篇文章,主要是使用OllyDbg逆向微信寻找HOOK地址。由于微信复杂很多,这里我们就自己简单写了一个C语言程序,通过使用OllyDbg逆向这个C语言函数,从而一步一步地介绍如何使用OllyDbg分析和寻找HOOK地址。另外需要注意的是,在第一次接触逆向过程中网上很多案例中使用OD(OllyDbg),所以本文也是以OD作为样例的。目前原版OD不支持调试64代码。在stackoverflow上有网友推荐x64dbg,有兴趣的朋友可以试试。
Read more

安卓ADB命令行工具使用指南

最近准备清理手边的电子产品发现好几台老旧手机,包括iPhone4S和几台安卓低端机器。iPhone4S是之前的爱姬,放了好久以后电池也不行了。唯独有一台Android的低端机还能用。记得之前也用这台机器完了一把刷机并写了一篇文章《记一次安卓刷机的小结》。由于这台机器的配置非常低,系统也被裁剪的几乎只能打电话发短信。即没有安卓商店,也没有浏览器。所以如何安装app就变成了首要任务。最后发现也只能够把apk下载下来通过SD卡安装或者使用ADB(Android Debug Bridge)命令行工具实现。通过SD卡安装没什么困难,这里就说一说安卓命令行工具ADB的一些使用技巧。
Read more

Redis服务器磁盘满导致连接失败

在默认情况下,Redis是开启磁盘备份功能的。并且当磁盘备份发生故障以后会暂停写入操作。因此,当Redis配合MySQL等关系型数据库作为高速缓存服务器使用是,我们可以完全禁用磁盘备份功能。如果没有其他持久层的支持,那么磁盘备份功能就必不可少,除非里面的数据没有保存的必要(可能性不大)。本案例中就出现由于磁盘空间不足,导致Redis服务磁盘备份失败,自动暂停了写入操作,所有连接Redis服务器进行写操作失败。
Read more

基于Twisted的Scrapy异步调度器

Scrapy是非常有名的一款爬虫开发框架。如果是小型项目或者简单爬取一些数据,可以基于Scrapy迅速搭建一个从爬取到数据解析清晰的全流程方案。Scrapy的核心是基于Twisted的事件驱动。因此整个数据爬取、入栈、出栈、提取和清洗都是基于异步事件的。在研究Scrapy的调度机制之前,首先需要了解Twisted,特别是Twisted的几个非常重要的概念。否则,Scrapy的调度器代码看起来真的是非常吃力,很难理解。
Read more

数据可视化提高PDF表格识别准确度

上篇文章《上市公司公告和基金公告PDF数据解析》中提到使用pdfplumber解析基金公告中的表格。然而由于各种各样的原因,在开发的过程中需要微调代码,从而提高PDF中表格的识别精确度。因此如果能够通过可视化的方式,即所见即所得的方式,进行表格提取单步调试,可以事半功倍地提升工作效率。
Read more

替换Homebrew镜像源

最近在电脑上运行brew操作的速度实在是太慢了,主要是brew需要连接到github上同步信息。因此考虑配置Homebrew的源地址,可能会好很多。之前在《CentOS镜像配置指南》文章中顺便也找到Homebrew镜像,那么就暂时先用一下吧。本文的内容主要是从阿里云社区Homebrew镜像搬砖而来,细节可以看原文(如果还存在的话)。
Read more

上市公司公告和基金公告PDF数据解析

最近关注股票和基金的朋友比较多,可能是由于股市表现和基金走势都非常好,所有关注基金的朋友也越来越多。每年的一月份都是个大基金公司披露四季报和年报的时间点。所以有朋友托我看看能不能帮助分析一下上市基金的四季报。目前的情况是有一堆的PDF类型的公告,如何把这些基金公告转换成Excel的数据表,这样就方便统计和分析了。市场上PDF解析工具非常多,也有很多项目支持PDF的表格解析。于是,本人就挑选了一个比较有知名度第三方工具:pdfplumber
Read more

基于微信好友和微信公众号的用户管理

很多微商通过微信渠道带货卖货,一般都是加好友后在微信朋友圈发布新货信息,包括照片和优惠信息等。或者直接发送私信给潜在用户,通过私聊的方式沟通。一般来说,这种运营方式已经足够满足微商的日常需求。但是如果客户多了以后,以一种纯手工的方式管理就非常累人了。特别是需要记住每一个客户的微信号,姓名,电话,收货地址,订单信息等等。

目前很多商家使用微信公众号或者小程序管理,例如有赞。但是微信公众号和小程序会为每一个用户提供一个openID,这个openID是独立的。例如在麦当劳小程序中的用户openID和在麦当劳微信公众号中同一个用户的openID是不一样的。如果需要在同一个微信开放平台帐号下的移动应用、网站应用、公众号和小程序追踪用户信息,就需要使用UnionID。如果小程序和公众号绑定到同一个开放平台,那可以获取相同的UnionID,但需要用户授权。但是无论是openID或者unionID都无法直接对应到微信用户。当然这也是为了保护用户隐私,但如果真要为了更加高效地管理用户或者精准营销,还是和通过一些方式实现的。以下以微信公众号为例,简要讨论以下如何在微信公众号中找到对应的微信号。
Read more