吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2374|回复: 9
收起左侧

[原创] x64dbg 关于用户名和密码文本输入的思考FSCapture9.7

  [复制链接]
ieusr 发表于 2023-12-4 18:13
本帖最后由 ieusr 于 2023-12-6 18:22 编辑

作为新手,学了一段时间逆向,遇到不少困难,之前发过一个求助贴FSCapture9.7,https://www.52pojie.cn/thread-1700709-1-1.html
也得到了高手的指点,其中一个方法就是堆栈暂停回溯法,学到很多东西,引起很多思考。对于这个软件来说,系统暂停后,用户区调用了很多的call才到核心代码。
后来又看论坛了解了,精准型消息断点,x64dbg表达式 打印日志等文章。
针对用户名和密码文本输入的思考有一个想法,对于无法搜索字符串,无法通过文本框下api断点,是不是可以找第一次文本在寄存器中出现的语句下断点?运气好的话可以直接到达关键代码段,就算不能,那也已经非常接近关键代码段,单步跟踪应该也能到达关键代码段。于是做如下尝试:
系统:win7 64
未注册版软件如下
链接:https://pan.baidu.com/s/1_wrHWu9Z7lQc6wlIDQEQ1w?pwd=3oo7
提取码:3oo7

过程如下

1.给注册按钮下精准消息断点

参考文章
偷换windows窗口过程 https://blog.csdn.net/lixiangminghate/article/details/71598164
消息万能断点_win7万能断点  http://bbs.pediy.com/showthread.php?t=98274
精准型消息断点  https://zhuanlan.zhihu.com/p/636555027

首先载入程序,在程序入口自动暂停
屏幕截图 2023-12-04 163926.png


点击运行,弹出过期窗口,点击输入注册码按钮,开始注册
屏幕截图 2023-12-04 164005.png


输入用户名,密码,此处不要点击注册,进入句柄窗口,获取句柄
屏幕截图 2023-12-04 164104.png


进入句柄窗口,点击刷新
屏幕截图 2023-12-04 164240.png


显示了当前程序的所有控件句柄信息,选择注册按钮,
此处我们需要复制注册按钮的父窗体句柄,注册按钮的句柄,后面会用到
屏幕截图 2023-12-04 164535.png



现在开始下精准消息断点,前提要载入user32.dll的符号信息
搜索internalcallwinproc,F2下断点
屏幕截图 2023-12-04 164812.png


进入断点窗口,
精准消息断点参数如下:
模块=user32.dll.__InternalCallWinProc@20
暂停条件   
arg.get(1)==0x父句柄  && arg.get(2)==0x111 && arg.get(4)==0x按钮句柄
举例
arg.get(1)==0x191008 && arg.get(2)==0x111 && arg.get(4)==0xB0DCA

屏幕截图 2023-12-04 165148.png


2.通过内存断点返回用户领空

F9运行程序,程序跑起来了,点击注册按钮,程序断在internalcallwinproc处,检查堆栈参数是否正确
屏幕截图 2023-12-04 165534.png


返回内存布局页面给code下内存断点
屏幕截图 2023-12-04 165623.png


点击F9运行程序,断在用户领空
屏幕截图 2023-12-04 165720.png


3.利用步进直到满足条件功能,打印所有的寄存器日志信息

参考
菜鸟的福音-x64dbg完美追踪方案https://www.52pojie.cn/forum.php?mod=viewthread&tid=1855029&highlight=x64dbg      https://bbs.kanxue.com/thread-279502.htm
X64Dbg 介绍->表达式- iBinary   https://www.cnblogs.com/iBinary/p/16359195.html

此时把断点禁止,以免跟踪时被暂停
屏幕截图 2023-12-04 170155.png

点击菜单栏的跟踪,选择步进直到满足条件功能
屏幕截图 2023-12-04 165755.png


步进直到满足条件的参数设置如下:
日志文本:###{modname@cip}_{a:cip}#{i:cip}--->eax__{a:eax}--ebx__{a:ebx}--ecx__{a:ecx}--edx__{a:edx}--esp__{a:esp}--ebp__{a:ebp}--esi__{a:esi}--edi__{a:edi}
日志条件:mod.party(cip)!=1  意思是仅当用户领空时打印日志

此处的输出有2种,1.如果选择了日志保存位置,会以log文件的形式,输出到指定目录;2,如果不选择目录,会默认输出到日志选项卡
因为输出内容非常多,此处我们选择保存log文件
屏幕截图 2023-12-04 170023.png


点击确定后开始跟踪,指定步数后暂停
屏幕截图 2023-12-04 170324.png

4.找到用户名或者密码的语句

找到保存的log目录
屏幕截图 2023-12-04 170514.png



利用搜索功能,查找用户名或者密码.
找到第一次出现的用户名或者密码,记下地址
屏幕截图 2023-12-06 174849.png


5.用转到表达式功能ctrl+G,定位到代码,下断点。
或者,在到达位置往上找到段的起始位置下断点后跟踪程序
屏幕截图 2023-12-04 170639.png


重新运行程序,断在关键代码区域,开始单步跟踪分析程序
跟踪不久发现相关注册信息

屏幕截图 2023-12-06 175053.png


继续跟踪,发现了关键跳转语句,跳向不同的注册类型。选择某一个类型即可注册成功。
屏幕截图 2023-12-06 175749.png
本文结束



免费评分

参与人数 3威望 +1 吾爱币 +22 热心值 +3 收起 理由
xiaogao66 + 1 + 1 热心回复!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ceyowa + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ceyowa 发表于 2023-12-6 12:47
非常详尽的步骤,值得收藏
oranges 发表于 2023-12-6 16:24
dHuaJiang 发表于 2023-12-6 16:30
lujun19891031 发表于 2023-12-6 16:49
写的非常好
Pwqi 发表于 2023-12-14 01:29
额  我就点了注册暂停看下堆栈 跟了下注册码明文附近随便nop了两个je就提示成功了  我都没反应过来  想重新试下 知道从哪删注册表不
 楼主| ieusr 发表于 2023-12-14 08:44
本帖最后由 ieusr 于 2023-12-14 08:47 编辑
Pwqi 发表于 2023-12-14 01:29
额  我就点了注册暂停看下堆栈 跟了下注册码明文附近随便nop了两个je就提示成功了  我都没反应过来  想重新 ...

注册信息保存在如下3个文件中,全部删除就可以了
C:\ProgramData\FastStone\FSC\用户名\fsc.db
C:\Users\用户名\AppData\Local\FastStone\FSC\fsc.db
C:\Users\用户名\AppData\Roaming\FastStone\FSC\fsc.db
洞见未来 发表于 2023-12-14 17:58
很详细哈,精准消息断点。
不苦小和尚 发表于 2024-8-3 08:49
不错不错,技术点很多
sihaitangzhu666 发表于 2024-8-19 12:22
手把手教了属于 赞一个
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-23 00:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表