逆向学习(三)逆向实战

逆向学习(三)逆向实战

2023年7月23日发(作者:)

逆向学习(三)逆向实战APP逆向实战常规hook是被动,hook的函数/⽅法要被动等待触发,不能主动调⽤要hook的代码。⽽rpc可以主动调⽤要hook的代码。rpc:# s = { var sig = ""; get_hello: function(str){ m( function(){ var some = ('XXXX'); sig = _sig() } ) }}# 可以使⽤python主动调⽤。get_hello(str)# 常规写法m( function(){ var some = ('XXXX'); _tation = function(){ // do something } } )抓取分析思路:先分析⽬标产品形态有⼏种(PC,H5,⼩程序,APP);对⽬标产品形态和各功能/界⾯使⽤和了解;确定抓取哪种产品状态。常规抓取分析:先抓包,找到要抓的⽬标URL(通常是列表URL和详情URL)。通过抓包要弄清楚:请求参数的差异和特点、搞清楚哪些参数是固定值,哪些是变化值,哪些可有可⽆、哪些参数是主要控制返回内容的、如何翻页等。写简单程序模拟⽬标URL的请求(从抓包⼯具中复制信息和URL到程序中)。模拟请求分三种: 1、复制抓包header信息,模拟请求能成功。此时需要确定该header信息有⽆时效性,能否⼀直使⽤,时效性是多久。尝试五分钟/⼀⼩时/⼀天的时间间隔,使⽤header信息,再次模拟,检查是否请求成功。如果有时效性,可以结合抓包⼯具,使⽤定时更新header的⽅式进⾏抓取;如果没有时效性,⼀⽀可以⽤,则直接使⽤抓包的参数⼀直抓取。 2、模拟请求不成功。需要逆向分析APP 3、难度是在太⼤,分析APP其他版本的抓取难度(⼤型APP会分版本,lite版,国际版,⼤型节⽇特殊版,⽼版)有的⽼版本还需要指定版本的android系统。复杂抓包:即配置代理后抓不到包的⼏种情况: 1、APP不⾛设置的代理: 表现为:打开抓包软件,抓不到包,但APP能正常访问;关闭抓包软件后APP仍能正常访问。 解决:ProxyDroid APP 全局代理,强制把IP转发到代理端⼝。 2、APP做ssl证书验证: 表现为:打开抓包软件后APP不能正常访问 解决:justtrustme等Hook 校验代码,让APP信任代理证书或不做证书验证。 3、APP做双向证书验证: 表现为:打开抓包软件后,APP不能访问,但抓包软件上会有服务端返回的错误。 解决:抠出APP的SSL证书,导⼊抓包软件 4、APP的⽹络请求库代码有混淆(okhttp HttpURLConnection等): 表现为:打开抓包软件后APP不能访问 解决:⽅法⼀:使⽤升级版JustMePlus姿势配Hook混淆后的⽹络请求库代码(⾃适配okhttp);⽅法⼆:使⽤sll_logger Hook系统ssl_read ssl_write函数,在⼿机上抓包,⽆需配置代理和安装证书。 5、APP不是发的应⽤层http协议,使⽤socket⾛的是⽹络层tcp协议 表现为:打开抓包软件,抓不到饱,但APP正常反问,关闭抓包软件后也能正常访问。 解决:tcpdump或wireshark抓tcp包,找线索hook app代码,抓到发包和解包的代码出。发送的数据通常是私有协议,需要逆向解密。 6、能抓包,但返回数据加过密,看不懂。 解决:找线索HookAPP找到加解密代码。各种APP⽹络请求库由第三⽅提供,HTTP/HTTPS/WebSocket协议、JustTrustMeHook没混淆的⽹络库、JustMePlusHook混淆后的⽹络库(⾮100%)ssl(系统提供,ssl_logger,抓到的包输出为.pcap⽂件,需要⽤专门软件打开。使⽤⽅式:python ssl_ -pcap -verbos v(可以换成进程id))socket(系统提供,Tcp链接)AndroidIOS如何确定APP没⾛HTTP⽽是⾛TCP:1、配置好代理抓包,打开抓包软件,APP能正常访问;2、使⽤抓包软件抓不到想要的请求;3、关闭抓包软件(配置不取消),APP也能正常访问。该现象和APP不⾛代理的现象相似。在⼿机装httpcany APP(可以抓http/https tcp udp),对指定APP进⾏抓包,观察有⽆数据包⽐较⼤的tcp包(10K以上),如果有可以确定APP⾛的TCP连接。wireshark/tcpdump抓⽹卡的tcp/udp包的缺点:数据包太多,不能指定对象抓包,过滤⿇烦。的使⽤原型:(className, callbacks)作⽤:在内存中扫描Java的堆(heap)找到指定类(className)的实例化对象例⼦:('.a', {"onMatch":functnion(instance){}, "onComplete":function(){}})数据--->protobuf数据protobuf协议由:protobuf编译⼯具编译.proto语法⽂件,同时⽣成protobuf处理程序,⽤处理程序来解析/反解析protobuf数据。编写.proto语法⽂件--->.proto⽂件编译成代码--->利⽤编译后的代码对传输数据开始加密。将.proto⽂件编译成python代码:protoc --python_out=.

发布者:admin,转转请注明出处:http://www.yc00.com/web/1690105360a306239.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信