eXeScope 注册机制破解
第一次看到这个界面还是在十多年前,当时的我并不明白这些数据的含义。
现在为它写一篇博客,算是一种纪念吧。
用x64dbg加载exescope,来到0x401000。搜索当前模块中的字符串 在结果中搜索关键字“reg"。
来到004CA44 ,这就是判断注册是否合法的函数。
1 004C2A44 | 55 | push ebp | 2 004C2A45 | 8BEC | mov ebp,esp | 3 004C2A47 | 33C9 | xor ecx,ecx | ecx:EntryPoint 4 004C2A49 | 51 | push ecx | ecx:EntryPoint 5 004C2A4A | 51 | push ecx | ecx:EntryPoint 6 004C2A4B | 51 | push ecx | ecx:EntryPoint 7 004C2A4C | 51 | push ecx | ecx:EntryPoint 8 004C2A4D | 51 | push ecx | ecx:EntryPoint 9 004C2A4E | 53 | push ebx | 10 004C2A4F | 56 | push esi | esi:EntryPoint 11 004C2A50 | 57 | push edi | edi:EntryPoint 12 004C2A51 | 8BD8 | mov ebx,eax | 13 004C2A53 | 33C0 | xor eax,eax | 14 004C2A55 | 55 | push ebp | 15 004C2A56 | 68 A12B4C00 | push 0x4C2BA1 | 16 004C2A5B | 64:FF30 | push dword ptr fs:[eax] | 17 004C2A5E | 64:8920 | mov dword ptr fs:[eax],esp | 18 004C2A61 | A1 5CFC4C00 | mov eax,dword ptr ds:[0x4CFC5C] | 19 004C2A66 | 8038 00 | cmp byte ptr ds:[eax],0x0 | 20 004C2A69 | 74 0F | je 0x4C2A7A | 21 004C2A6B | C783 4C020000 02000000 | mov dword ptr ds:[ebx+0x24C],0x2 | ebx+24C:L"練" 22 004C2A75 | E9 FF000000 | jmp 0x4C2B79 | 23 004C2A7A | 8D55 FC | lea edx,dword ptr ss:[ebp-0x4] | edx:EntryPoint 24 004C2A7D | 8B83 F8020000 | mov eax,dword ptr ds:[ebx+0x2F8] | 25 004C2A83 | E8 F4F8FAFF | call 0x47237C | 26 004C2A88 | 8B55 FC | mov edx,dword ptr ss:[ebp-0x4] | edx:EntryPoint 27 004C2A8B | A1 E8FE4C00 | mov eax,dword ptr ds:[0x4CFEE8] | 004CFEE8:"T.M" 28 004C2A90 | E8 4F1FF4FF | call 0x4049E4 | 29 004C2A95 | 8D55 F8 | lea edx,dword ptr ss:[ebp-0x8] | edx:EntryPoint 30 004C2A98 | 8B83 FC020000 | mov eax,dword ptr ds:[ebx+0x2FC] | 31 004C2A9E | E8 D9F8FAFF | call 0x47237C | 32 004C2AA3 | 8B55 F8 | mov edx,dword ptr ss:[ebp-0x8] | edx:EntryPoint 33 004C2AA6 | A1 4CFE4C00 | mov eax,dword ptr ds:[0x4CFE4C] | 004CFE4C:"X.M" 34 004C2AAB | E8 341FF4FF | call 0x4049E4 | 35 004C2AB0 | 8B15 4CFE4C00 | mov edx,dword ptr ds:[0x4CFE4C] | edx:EntryPoint, 004CFE4C:"X.M" 36 004C2AB6 | 8B12 | mov edx,dword ptr ds:[edx] | edx:EntryPoint 37 004C2AB8 | A1 54FC4C00 | mov eax,dword ptr ds:[0x4CFC54] | 38 004C2ABD | 8B00 | mov eax,dword ptr ds:[eax] | 39 004C2ABF | E8 B8940000 | call 0x4CBF7C | 40 004C2AC4 | 84C0 | test al,al | 41 004C2AC6 | 0F84 8D000000 | je 0x4C2B59 | 42 004C2ACC | A1 E8FE4C00 | mov eax,dword ptr ds:[0x4CFEE8] | 004CFEE8:"T.M" 43 004C2AD1 | 8B00 | mov eax,dword ptr ds:[eax] | 44 004C2AD3 | E8 7821F4FF | call 0x404C50 | 45 004C2AD8 | 85C0 | test eax,eax | 46 004C2ADA | 7E 7D | jle 0x4C2B59 | 47 004C2ADC | 8D55 F0 | lea edx,dword ptr ss:[ebp-0x10] | edx:EntryPoint 48 004C2ADF | A1 FCFE4C00 | mov eax,dword ptr ds:[0x4CFEFC] | 49 004C2AE4 | 8B00 | mov eax,dword ptr ds:[eax] | 50 004C2AE6 | E8 11FCFCFF | call 0x4926FC | 51 004C2AEB | 8B45 F0 | mov eax,dword ptr ss:[ebp-0x10] | 52 004C2AEE | 8D4D F4 | lea ecx,dword ptr ss:[ebp-0xC] | ecx:EntryPoint 53 004C2AF1 | BA B82B4C00 | mov edx,0x4C2BB8 | edx:EntryPoint, 4C2BB8:".ini" 54 004C2AF6 | E8 2570F4FF | call 0x409B20 | 55 004C2AFB | 8B4D F4 | mov ecx,dword ptr ss:[ebp-0xC] | ecx:EntryPoint 56 004C2AFE | B2 01 | mov dl,0x1 | 57 004C2B00 | A1 2CBE4300 | mov eax,dword ptr ds:[0x43BE2C] | 0043BE2C:"x綜" 58 004C2B05 | E8 D293F7FF | call 0x43BEDC | 59 004C2B0A | 8BF0 | mov esi,eax | esi:EntryPoint 60 004C2B0C | A1 E8FE4C00 | mov eax,dword ptr ds:[0x4CFEE8] | 004CFEE8:"T.M" 61 004C2B11 | 8B00 | mov eax,dword ptr ds:[eax] | 62 004C2B13 | 50 | push eax | 63 004C2B14 | B9 C82B4C00 | mov ecx,0x4C2BC8 | ecx:EntryPoint, 4C2BC8:"Name" 64 004C2B19 | BA D82B4C00 | mov edx,0x4C2BD8 | edx:EntryPoint, 4C2BD8:"Reg" 65 004C2B1E | 8BC6 | mov eax,esi | esi:EntryPoint 66 004C2B20 | 8B38 | mov edi,dword ptr ds:[eax] | edi:EntryPoint 67 004C2B22 | FF57 04 | call dword ptr ds:[edi+0x4] | 68 004C2B25 | A1 4CFE4C00 | mov eax,dword ptr ds:[0x4CFE4C] | 004CFE4C:"X.M" 69 004C2B2A | 8B00 | mov eax,dword ptr ds:[eax] | 70 004C2B2C | 50 | push eax | 71 004C2B2D | BA D82B4C00 | mov edx,0x4C2BD8 | edx:EntryPoint, 4C2BD8:"Reg" 72 004C2B32 | B9 E42B4C00 | mov ecx,0x4C2BE4 | ecx:EntryPoint, 4C2BE4:"ID" 73 004C2B37 | 8BC6 | mov eax,esi | esi:EntryPoint 74 004C2B39 | 8B38 | mov edi,dword ptr ds:[eax] | edi:EntryPoint 75 004C2B3B | FF57 04 | call dword ptr ds:[edi+0x4] | 76 004C2B3E | 8BC6 | mov eax,esi | esi:EntryPoint 77 004C2B40 | E8 9B10F4FF | call 0x403BE0 | 78 004C2B45 | A1 5CFC4C00 | mov eax,dword ptr ds:[0x4CFC5C] | 79 004C2B4A | C600 01 | mov byte ptr ds:[eax],0x1 | 80 004C2B4D | C783 4C020000 01000000 | mov dword ptr ds:[ebx+0x24C],0x1 | ebx+24C:L"練" 81 004C2B57 | EB 20 | jmp 0x4C2B79 | 82 004C2B59 | 6A 00 | push 0x0 | 83 004C2B5B | 8D55 EC | lea edx,dword ptr ss:[ebp-0x14] | edx:EntryPoint 84 004C2B5E | B8 F02B4C00 | mov eax,0x4C2BF0 | 4C2BF0:"无效的 ID 或名字" 85 004C2B63 | E8 680D0000 | call 0x4C38D0 | 86 004C2B68 | 8B45 EC | mov eax,dword ptr ss:[ebp-0x14] | 87 004C2B6B | 66:8B0D 202C4C00 | mov cx,word ptr ds:[0x4C2C20] | 88 004C2B72 | B2 01 | mov dl,0x1 | 89 004C2B74 | E8 2F4BF7FF | call 0x4376A8 | 90 004C2B79 | 33C0 | xor eax,eax | 91 004C2B7B | 5A | pop edx | edx:EntryPoint 92 004C2B7C | 59 | pop ecx | ecx:EntryPoint 93 004C2B7D | 59 | pop ecx | ecx:EntryPoint 94 004C2B7E | 64:8910 | mov dword ptr fs:[eax],edx | edx:EntryPoint 95 004C2B81 | 68 A82B4C00 | push 0x4C2BA8 | 96 004C2B86 | 8D45 EC | lea eax,dword ptr ss:[ebp-0x14] | 97 004C2B89 | BA 03000000 | mov edx,0x3 | edx:EntryPoint 98 004C2B8E | E8 211EF4FF | call 0x4049B4 | 99 004C2B93 | 8D45 F8 | lea eax,dword ptr ss:[ebp-0x8] | 100 004C2B96 | BA 02000000 | mov edx,0x2 | edx:EntryPoint 101 004C2B9B | E8 141EF4FF | call 0x4049B4 | 102 004C2BA0 | C3 | ret | 103 004C2BA1 | E9 CE17F4FF | jmp 0x404374 | 104 004C2BA6 | EB DE | jmp 0x4C2B86 | 105 004C2BA8 | 5F | pop edi | edi:EntryPoint 106 004C2BA9 | 5E | pop esi | esi:EntryPoint 107 004C2BAA | 5B | pop ebx | 108 004C2BAB | 8BE5 | mov esp,ebp | 109 004C2BAD | 5D | pop ebp | 110 004C2BAE | C3 | ret |
其中
004C2AC6 | 0F84 8D000000 | je 0x4C2B59
跳过了一大段,根据经验不能让它跳。
但是这里不直接更改跳转。跟进
004C2ABF | E8 B8940000 | call 0x4CBF7C
这个call,修改如下
004CBF7C | 33C0 | xor eax,eax | 004CBF7E | 40 | inc eax | 004CBF7F | C3 | ret |
直接对eax置1 然后返回,F9让程序跑起来
已经注册成功了。
那么为什么不直接更改跳转指令呢?
这个软件除了在验证注册码的时候有校验,启动的时候会根据 .ini 中的信息再一次校验,直接patch校验注册的函数 让它return TRUE 可以一次性bypass所有的认证
如果单单改那个跳转,每次打开exescope就得重新注册一次。
转载于:https://www.cnblogs.com/BD1A489/p/9825382.html
eXeScope 注册机制破解相关推荐
- 学会软件破解,让注册机制形同虚设
一. 修改注册表文件,清除软件使用次数限制. 打开软件,首先跳出来一个注册的框,其中用户名可以随便填写.左下角红色的字显示还可以试用的次数.点击试用以后,可以进入软件.但是试用总共有100次.我 ...
- C#实现软件授权,限定MAC运行(软件license管理,简单软件注册机制)
一个绿色免安装软件,领导临时要求加个注册机制,不能让现场工程师随意复制.事出突然,只能在现场开发(离开现场软件就不受我们控了).花了不到两个小时实现了简单的注册机制,稍作整理. 基本原理:1.软件一 ...
- C#软件license管理(简单软件注册机制)
最近做了一个绿色免安装软件,领导临时要求加个注册机制,不能让现场工程师随意复制.事出突然,只能在现场开发(离开现场软件就不受我们控了).花了不到两个小时实现了简单的注册机制,稍作整理. ...
- 软件加密技术和注册机制加密基础(转)
软件加密技术和注册机制加密基础 本文是一篇软件加密技术的基础性文章,简要介绍了软件加密的一些基本常识和一些加密产品,适用于国内软件开发商或者个人共享软件开发者阅读参考. 1.加密技术概述 一个密码系统 ...
- MIDP2.0引入了Push注册机制
Push MIDP2.0引入了Push注册机制,作为一种允许应用被自动启动的方法,由预先设置的警告或者经inbound连接收到的消息. 通过这种方法,MIDlets可以用来设置处理规则事件,如定时从服 ...
- TensorFlow中的设备管理——Device的创建与注册机制
背景 [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 作为一款优秀的异构深度学习算法框架,TensorFlow可以在多种设备上运行算 ...
- MySQL安装+Navicat11注册机破解
这篇博客用来纪念逝去的半个月,这半个月完全荒废堕落了,没有好好敲代码,心没有静下来.我们作为一个合格的程序员就应该不断地学习不断地写代码.然而本来找了一份办公系统的代码来玩又发现了是些"假& ...
- Android逆向移花接木之添加注册机制
前言 我们知道借助apktool对apk的反编译几乎是无损源码级别的,所以要想在无源码的情况下,让某个软件实现想要的显示或者功能,只需要先写个简单的具有该显示和功能的DEMO,然后将关键的代码镶嵌到目 ...
- vue-router 源码阅读 - 文件结构与注册机制
文章目录 0. 前备知识 1. 文件结构 2. 入口文件 2.1 rollup 出口与入口 2.2 Vue.use 3. 路由注册 3.1 install 3.2 VueRouter 前端路由是我们前 ...
- Citrix XenDesktop 中VDA向DDC注册机制解析
直接切入正题吧,至于什么是VDA?什么是DDC之类的我就不用做过多介绍了. 众所周知用户如果需要使用虚拟桌面,那么必须将虚拟桌面部署在DDC的交付组中并将虚拟桌面交付给用户.而且虚拟桌面在DDC中是已 ...
最新文章
- php http传参数,http - PHP的URL传参数(英文句号变成了下划线)的问题,求解释。...
- 2018网站信息系统安全等级保护限期整改通知书的处理解决方案
- Gumble Distribution耿贝尔分布
- 苹果部分机器将转向美国国内生产
- 收藏!2021最新期刊预警名单汇总!
- Miniconda管理多版本python环境
- linux accept 队列,[译] TCP的SYN队列和Accept队列
- 求两个数的最大公约数的3种办法
- SAP Cloud Platform上Fiori launchpad tile的读取原理
- IOS基本数据类型之枚举
- java was datasource_mybatis默认的数据源连接池(PooledDataSource和UnPooledDataSource)
- OS X EI Capitan 安装mysql-5.7.9
- idea下载github代码及切换分支
- 读书笔记之inside JVM(5)
- c++ 实现一个object类_一个Java类就能实现微服务架构的权限认证
- php排序orderby,云优CMS如何按orderby排序上一条下一条信息
- 公文处理助手 【全自动文档排版插件 For Word(32/64)】
- 转载 nat64 流程描述 通俗易懂
- flashfxp中文下载,5步掌握flashfxp中文下载软件的使用技巧
- 手机号获取验证码、验证验证码是否正确
热门文章
- linux下blast设计引物,下面是我设计的引物的BLAST结果,请大虾帮我解释一下。谢谢...
- ps html插件初始化失败,解决PSCC2019无法安装扩展插件怎么办?
- 光纤跳线接口_你知道光纤接头、尾纤、终端盒的作用与接法嘛?读懂这篇足够...
- CS231n 课程笔记翻译
- 跟涛哥(张开涛)聊聊技术人的发展
- pdf合并成一个pdf软件下载?pdf合并成一个pdf软件合成器工具
- 张宇1000题高等数学 第九章 一元函数积分学的计算
- MathorCup数模竞赛,为你的保研之路添砖加瓦~
- Prescan学习笔记
- macOS官方镜像下载