Henry's Blog
  • CobaltStrike系列
    • CobaltStrike的基本操作
    • CobaltStrike会话管理
    • CobaltStrike重定向服务
    • CobaltStrike钓鱼攻击
    • 凭据导出与存储
    • Beacon的常用操作
    • DnsBeacon详解
    • 权限提升
    • 简单的内网信息收集
    • Cross2生成LinuxShell
    • CNA插件开发
    • Profile编写规则
    • BOF开发
    • execute-assembly原理
    • Vps搭建可能遇到的问题
  • OPSEC(免杀)
    • BypassPPL
    • Certutil绕过技巧
    • DLL劫持技术(白+黑)
    • PEB伪装
    • PpidSpoofing
    • Python反序列化免杀
    • WebShell绕过技巧
    • mimikatz免杀
    • 利用CobaltStrikeProfile实现免杀
    • 利用Windows异常机制实现Bypass
    • 削弱WindowsDefender
    • 模拟Powershell实现Bypass
    • 浅谈CobaltStrikeUDRL
    • 添加用户和计划任务(Bypass)
    • 移除NtDll的hook
    • 定位修改MsfShellcode特征码实现免杀
    • 利用COM接口实现进程断链执行.md
    • 免杀工具篇
      • Invoke-Obfuscation
      • Shellter
    • 流量检测逃避
      • CobaltStrike流量逃避.md
      • MSF流量加密.md
      • NC反弹Shell流量加密.md
  • Shellcode加密
    • 前置知识
    • XOR加密
    • AES加密
  • Shellcode加载器
    • 常见的加载方式
    • 分离加载
    • 创建纤程加载
    • 动态调用API加载
    • 基于APC注入加载
    • 基于反调试加载
    • 基于回调函数加载
    • 基于线程池加载
    • 模块踩踏
    • 进程镂空注入(傀儡进程)
    • 反射dll注入(内嵌式)
  • Web渗透
    • 信息收集
    • 各类Webshell
    • 基本漏洞利用
    • 远程命令执行漏洞
    • sql注入
    • sqlmap的使用方法
  • 内网渗透
    • 内网渗透前置知识
    • BadUsb制作
    • Linux反弹Shell总结
    • 内网渗透技术总结
    • 横向移动
      • GoToHttp
      • MS14-068
      • PassTheHash
      • PassTheTicket
      • Psexec
      • RustDesk
      • SMB横移
      • WMI横移
      • 用户枚举与爆破
    • 流量加密
      • CobaltStrike流量加密
      • MsfShell流量加密
      • OpenSSL加密反弹shell
  • 协议分析
    • TCP_IP协议
  • 权限提升
    • 土豆提权原理
    • UAC提权
  • 蓝队技术
    • 应急响应流程总结
  • 进程注入
    • Conhost注入
    • session0注入
    • 内核回调表注入
    • 剪切板注入
  • 逆向技术
    • HOOK技术
    • IDA遇到的坑
    • Shellcode的原理与编写
    • Windbg的使用
    • 使用Stardust框架编写Shellcode
    • PeToShellcode
    • 破解系列
      • PUSH窗体大法
      • VM绕过技巧(易语言)
      • Crackme_1
      • 反破解技术
      • 按钮事件特征码
      • 逆向调试符号
      • 破解实例
        • IDA逆向注册码算法
  • 钓鱼技术
    • Flash网页钓鱼
    • LNK钓鱼
    • 自解压程序加载木马
  • 隧道应用
    • 隧道应用前置知识
    • BurpSuite上游代理
    • DNS隧道传输
    • EarthWorm内网穿透
    • Frp内网穿透
    • ICMP隧道传输
    • MsfPortfwd端口转发
    • Neo-reGeorg内网穿透
    • NetCat工具使用
    • Netsh端口转发
    • SSH端口转发
    • 正向连接与反向连接
  • 基础学习
    • C和C++
      • C++编程
      • C程序设计
    • Linux学习
      • Linux Shell编程
      • linux基础
    • Python基础
      • python之Socket编程
      • python之多线程操作
      • python基础
      • python算法技巧
    • Qt基础
      • Qt笔记
    • 逆向基础
      • PE结构
      • Win32
      • 汇编语言
  • 漏洞复现
    • Web漏洞
      • ApacheShiro反序列化漏洞
    • 系统漏洞
      • Linux漏洞
        • ShellShock(CVE-2014-6271)
  • 靶场系列
    • Web靶场
      • pikachu靶场
      • sqli-labs
      • upload-labs
    • 内网靶场
      • Jarbas靶场
      • SickOS靶场
      • W1R3S靶场
      • prime靶场
      • vulnstack靶场系列一
      • vulnstack靶场系列二
      • vulnstack靶场系列四
  • 代码审计
    • PHP代码审计基础
  • 一些杂七杂八的
    • 开发工具与环境
      • Github的使用
      • JSP环境搭建
      • Pycharm设置代码片段
      • VS2017安装番茄助手(破解版)
      • VisualStudio项目模板的使用
      • WindowsServer搭建IIS环境
      • 安装Scoop
      • c++安装vcpkg
      • dotnet-cnblog的安装与使用
      • gitbook使用教程
      • kali安装burpsuite
      • 配置win2012域服务器
      • VSCode配置MinGW
    • 踩坑记录
      • BurpSuite导入证书
      • Powershell禁止执行脚本
      • centos7没有显示ip
      • kali安装pip2
      • oracle12没有scott用户
由 GitBook 提供支持
在本页
  • 什么是按钮事件特征码
  • 提取特征码
  • 提取特征码的三个原则
  • 实例演示
  • 追踪按钮事件
  • 前言
  • 实例一:按钮事件特征码被修改
  • 实例二:按钮事件特征码被其他控件干扰
  1. 逆向技术
  2. 破解系列

按钮事件特征码

上一页反破解技术下一页逆向调试符号

最后更新于1年前

什么是按钮事件特征码

破解的一个用易语言编写的软件,通常先要搜索到按钮事件特征码,但是并不是说你按钮事件特征码处下断点就一定能精准的捕获按钮事件。例如易语言时钟控件或启动窗口事件都会通过消息派遣至按钮时间特征码处,就算不触发按钮事件,OD也会在按钮事件特征码下的断点处断下

还有一种情况,如果实在是捕获不到按钮事件特征码,那么其可能是被vm掉或者其他一些汇编指令扰乱掉了,但是可以通过对按钮事件特征码附近的汇编指令提取关键特征码,然后再一步步跟到按钮事件特征码

按钮事件特征码:FF 55 FC 5F 5E

提取特征码

提取特征码的三个原则

  • 不能包含绝对地址,若需要用则换成通配符

  • 不能包含call,若要用则需将call的地址换成通配符

  • 不能包含变量,若要用则需换成通配符

实例演示

例如我们要提取如下图所示的关键特征码

向push 16010003这种push的一个绝对地址,提取特征码时绝对地址需要更换成通配符(通配符是问号),所以提取的特征码如下代码所示

55 8B EC 81 EC 08 00 00 00 6A FF 6A 08 68 ?? ?? ?? ??

这种call的是一个绝对地址也不能作为特征码,也需修改成通配符

E8 ?? ?? ?? ??	

call的一个用中括号括起来的地址我们称为常量, 也需修改成通配符

FF15 ?? ?? ?? ??		

追踪按钮事件

前言

前面已经说了按钮事件特征码捕获的事件不只是按钮事件,还有一些其他事件。但是可以通过下条件断点来精准捕获按钮事件

实例一:按钮事件特征码被修改

在od里打开需破解的程序,跳转到按钮事件特征码处(FF 55 FC 5F 5E)下断点,运行程序然后点击按钮发现程序没有被断下,这是因为这并不是真正的按钮事件特征码,真正的按钮事件特征码可能被人为的修改了

但是可以通过提取按钮事件特征码附近的特征码,这里我就用50 8B 4D 08 8B 51 04 52 8B 45 08 8B 08 51这个特征码来跟按钮事件特征码

当跟到按钮事件特征码后,可以发现其多了个90来扰乱捕获,才导致FF 55 FC 5F 5E特征码失效

实例二:按钮事件特征码被其他控件干扰

在这个按钮事件特征码处下断点,当我在编辑框输入内容时,程序突然被断下来了,可以推断出按钮事件特征码被易语言编辑框给干扰了

可以通过下条件断点来解决这种情况,根据右下角的调用堆栈窗口的EBP-4的值来设定条件,此时[ebp-4]的值是4010AC

给这个断点设定条件,[ebp-4]!=0x4010AC,然后再次运行点击按钮,成功在真正的按钮事件特征码处断下

断下后再查看右下角的调用堆栈, [EBP-4]的值变成了401158。

如果你加了一个条件还没断下那就继续加,直到能点击按钮断下为止, 下图是我加了三个条件的断点

image-20220821111819212
image-20220821112203065
image-20220821112316735
image-20220821155726661
image-20220821113559721
image-20220821160323211
image-20220821160828792
image-20220821161320752
image-20220821161458173
image-20220821161711390