Frida在windows上的玩法

公众号: 奋飞安全 等级 1280 0 0
标签: https

一、目标

frida玩了很久,andriod和ios下都玩的不错。不过飞哥其实是混windows出道的,那frida能不能分析winPE呢?

今天介绍下Windows下的玩法,要点如下:

  • Hook Windows Api
  • 修改参数和返回值
  • 主动调用Windows Api

二、步骤

打开心爱的MFC

写个demo小程序,密码是 1234 ,输入正确提示 "密码正确"。

Hook MessageBoxA

var pMessageBoxA = Module.findExportByName("user32.dll", 'MessageBoxA')

Interceptor.attach(pMessageBoxA, {
    onEnter: function (args, state) {
        console.log("[+] MessageBoxA");
        console.log("¦- hWnd: " + args[0]);
        console.log("¦- lpText: " + Memory.readAnsiString(args[1]));     
        console.log("¦- lpCaption: " + Memory.readAnsiString(args[2]));    
        console.log("¦- uType: " + args[3] + "\n");
    },

    onLeave: function (retval, state) {
    }

});

迫不及待了,好久没有玩windows,跑一下,我们输入 "1234"

Frida在windows上的玩法

修改入参和返回值

console.log("[!] Hooking lpText: 真的对吗");
this.lpText = Memory.allocAnsiString("真的对吗"); // Allocate new heap ANSI string
args[1] = this.lpText; // Replace lpText pointer

在跑一下,真的对吗?

Frida在windows上的玩法

修改返回值就比较简单了,这个例子修改返回值也没啥用。

console.log("retval: " + retval.toInt32());

retval.replace(0);       
console.log("retval modify: " + retval.toInt32());

主动调用Windows Api

我们来试试如何主动调用 MessageBox,首先按照函数原型,创建对应的 NativeFunction 函数,然后创建好入参,就可以调用了。

var pMessageBoxW = Module.findExportByName("user32.dll", 'MessageBoxA')
var lpText = Memory.allocAnsiString("I'm New MessageBox");
var funMsgBox = new NativeFunction(pMessageBoxW, 'uint32',['uint32','pointer','pointer','uint32']);

// 调用
funMsgBox(0,ptr(lpText),ptr(lpText),0);

完美搞定~

Frida在windows上的玩法

启动命令

最后说一下启动的命令,因为一开始我也犯难,习惯了启动Android和Ios App了,不知道如何启动 winPE了。

frida C:\Users\35085\Desktop\demo\fridawin.exe -l nt.js --no-pause        // spawn 模式
frida *fridawin* -l nt.js        // attach模式

其实都差不多,跨平台工具的好处是,经验可以复用。

三、总结

Windows其实更好玩,只是时代变了,不过就像《神鞭》里说的, 辫子剪了,神留着,一变还是绝活

frida里面的数据类型和各个平台下的类型对应关系要熟练掌握。

Frida在windows上的玩法

朕岂可亲系草鞋之绳

TIP: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。

关注微信公众号: 奋飞安全,最新技术干货实时推送

收藏
评论区

相关推荐

再搞个大点的 某小视频App X-Gorgon 分析
一、目标何以解忧,除了烤串啤酒,也只有刷刷小视频了。今天我们的目标就是看看海外版的这个小视频App的 XGorgonTIP: v18.9.4(180904) 二、步骤 Jadx搜索 "XGorgon"居然只有两个结果,很容易就定位到了这里上Frida搞一下var strUtilCls Java.use('com.ss.a.b.a');strUtilCls
Frida + AndroidAsync 实现 RPC
一、目标我们在之前的教程里面使用 python的Flask库启动一个web Server 来实现App函数的RPC调用。今天我们介绍一个新盆友,AndroidAsync, 用AndroidAsync来启动web Server,这样frida就直接搞定,不需要再请Python来帮忙了。 二、步骤 AndroidAsyncAndroidAsync的详细介绍大家可
Frida在windows上的玩法
一、目标frida玩了很久,andriod和ios下都玩的不错。不过飞哥其实是混windows出道的,那frida能不能分析winPE呢?今天介绍下Windows下的玩法,要点如下: Hook Windows Api 修改参数和返回值 主动调用Windows Api 二、步骤 打开心爱的MFC写个demo小程序,密码是 1234 ,输入正确提示 "密码正确"
Frida-syscall-interceptor
一、目标现在很多App不讲武德了,为了防止 openat 、read、kill 等等底层函数被hook,干脆就直接通过syscall的方式来做系统调用,导致无法hook。应对这种情况有两种方案: 刷机重写系统调用表来拦截内核调用 inline Hook SWI/SVC指令我们今天采用第二种方法,用frida来实现 内联汇编SWI/SVC做系统调用, sysc
frida调试不了怎么办?着急,在线等!
一、目标frida越来越流行,针对他的检测也越来越多了,什么特征串检测,TracerPid检测,双进程保护。搞的我们茶饭不思,啤酒都不香了。今天的目标是数字壳的调试,双进程保护。 二、步骤 侦测下火力f spawn模式启动App, 提示:frida U f com.asiainfo.app l test.js nopauseProcess crashed
IOS 联真机签名解决方案
一、目标我们之前介绍过 和 。 那么他们搭配起来能解决什么问题呢?在Android联真机签名方案中,我们提到过Frida rpc方案的缺点: frida不是很稳定,偶尔会崩溃出退 frida启动需要连PC (不过这个缺点已经被 给解决了)那么在Ios下有没有类似Xposed的东东?是的,就是 Tweak。 二、步骤 GCDWebServerGCDWebS
手把手教你在夜神、雷电上搭frida+Xposed
一、目标李老板: 奋飞呀,你天天手把手教这样不好吧?奋飞:老板你想多了,就咱们行业这种男女比例,有啥不好的? 二、步骤 夜神Frida 先adb连上夜神,看看它是嘛系统fenfeiMac:Desktop ff$ adb connect 127.0.0.1:62001already connected to 127.0.0.1:62001fenfeiMac:D
某内容电商App sign签名分析 复习下之前的技巧
一、目标现在内容电商,社交电商,直播电商等等概念多的眼花缭乱,终极目的就一条,卖货给你。正如我们分析他的sign签名一样,套路就一条, jadx + frida这个sign数了数,正好32位,难道是 md5 ? 二、步骤 上jadx先搜索下 "sign" 记得带上引号。结果只有40多个,而且第二个开上去就有眼缘,点进去看看String a m7166a(b
HTTPS上线过程说明
****一、上马HTTPS的原因:**** ===================== ①、苹果App Store强制其平台上的app均要使用HTTPS ②、网站经常被劫持,用户和领导希望使用HTTPS ③、跟随HTTPS的大趋势 ****二、应用上马HTTPS之部门工作:**** ========================= ①、运维:接入
ubuntu 和windows 分别在anaconda上安装tensorflow
windows下 的anaconda安装tensorflow: 在Anaconda Prompt中:conda install tensorflow python=3.5一直下载失败.总结一下原因可能国外的源,网速太慢且不稳定 借鉴http://www.cnblogs.com/nosqlcoco/p/6923861.html 把镜像改为清华大学开源软件
Aio 在 Windows 下的注意事项
由于 windows 的 iocp 和 linux 的 epool 的不同,在开发时我们需要注意一下内容: 1.在 windows 下使用AsynchronousSocketChannel.write 方法无论是采用异步,还是 future 方式,他的数据都仅仅是写入到了缓冲区,并未发送给对方,而在 macos 和 多数linux发行版下,都已经送给了对方
Jmeter在windows上安装和环境配置
一、Jmeter简单介绍 Apache JMeter是Apache组织开发的基于Java的压力测试工具。它可以用于测试静态和动态资源,例如静态文件、Java小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够
NodeJs在windows上安装配置测试
Node.js简介 简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。 安装环境 本机系统:Windo
PlayOnLinux在Linux上轻松安装Windows游戏和软件
![](https://oscimg.oschina.net/oscnet/up-cd81650015d6f2a56bc83f2cd95a7b6cc1e.png) PlayOnLinux提供了一个点击界面,可以在Linux上自动安装和调整Windows软件。 它就像一个程序包管理器,但适用于Windows游戏和Linux上的其他应用程序。 过去,我们已经
Tomcat6配置使用SSL双向认证(使用openssl生成证书)(转)
文章转自:[http://blog.csdn.net/gtuu0123/article/details/5827818](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fblog.csdn.net%2Fgtuu0123%2Farticle%2Fdetails%2F5827818) opens