吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12640|回复: 21
收起左侧

[原创] 关于Visual C++编程全能词典词典防复制的破解-20150620

[复制链接]
lizhirui 发表于 2015-6-20 10:21
我之前破解Visual C++编程全能词典,之前破解的是注册码部分,帖子连接如下:

使用的朋友会发现,其中文本资料的内容不能复制,复制会出现如下提示:
image001.png

这便是切入点
首先用OD载入,不知道为什么ODWin7 64位旗舰版不能正确加载这个软件,加载到20%多就卡死,于是我用VM虚拟机挂上了XP破解的,破解后的程序经测试在XPWin7 64位旗舰版均可正常使用

OD载入后界面如下:
image003.png
点击运行启动程序,程序启动后随便选择一篇文章,如下所示
image005.png
这时打开OD MessageBoxA MessageBoxExA MessageBoxIndirectA MessageBoxExWMessageBoxW MessageBoxIndirectW MessageBoxW 以及rtcMsgBox设置断点

然后随意选定一段内容,会发现OD暂停在77D3A082,可见这是系统领空,并且停在了MessageBoxIndirectA API
image007.png
Ctrl+F9执行到返回,程序会弹出刚才的对话框,按一下确定,返回到OD,然后按一次F8,会到达733FF6B2
image009.png
此处依旧是系统领空,因此按Ctrl+F9然后按一次F8
返回到733FF52E处,依旧是系统领空,重复操作
返回到733FF829处,系统领空,继续重复操作
返回到733F3BF0处,系统领空,继续重复操作
返回到7346D07A处,系统领空,继续重复操作
返回到009185FD处,终于到达用户领空了
image011.png
我们看上一行即009185FD处,会发现这就是刚才弹出对话框的地方rtcMsgBox,不知道为何设置的VB API未被触发

继续往上翻,会看到大量的VB API调用,现在我们先把程序运行起来,然后不停地从刚才那一行向上设置断点,你会发现当设置到009181FC处时程序自动暂停运行,显示跳转已实现
image013.png
我们有必要对这里产生怀疑,于是我们关闭这里的断点,由于在这里设置断点使得我们无法操作,根据程序裸机,我们在它的下一行即00918202处设置断点,然后运行,打开软件,选定一段内容,你会发现00918202处断点被触发
image015.png
这说明009181FC处的跳转不成立,这说明了什么?
这说明,009181FC处便是我们要找的关键跳转,为了防止地址在运行时自己改变或者其它不可预料的错误,我们这次给出一种新的修改方法,向上看一行即009181FA处,那里有一句test edx,edx,在这里我们介绍一下testcmp指令,普及一下汇编知识,以下内容摘自网络,已经过我的大脑审核>_<
--------------------------------------------------------网络摘自开始----------------------------------------------------
首先看看:状态寄存器(即标志寄存器)
PSW(Program Flag)程序状态字(即标志)寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,
如下所示:
15  14    13    12  11   10    9   8    7    6   5    4    3   2   1   0
               OF   DF  IF   TF   SF ZF     AF     PF CF
条件码:
OF(Overflow Flag)溢出标志,溢出时为1,否则置0.标明一个溢出了的计算,:结构和目标不匹配.
SF(Sign Flag)符号标志,结果为负时置1,否则置0.
ZF(Zero Flag)零标志,运算结果为0时置1,否则置0.
CF(Carry Flag)进位标志,进位时置1,否则置0.注意:Carry标志中存放计算后最右的位.
AF(Auxiliary carry Flag)辅助进位标志,记录运算时第3(半个字节)产生的进位置。
    有进位时1,否则置0.
PF(Parity Flag)奇偶标志.结果操作数中1的个数为偶数时置1,否则置0.
控制标志位:
DF(Direction Flag)方向标志,在串处理指令中控制信息的方向。
IF(Interrupt Flag)中断标志。
TF(Trap Flag)陷井标志。
为举例方便说一下jnzjz
    测试条件
JZ  ZF=1
JNZ ZF=0
Jzjump if zero (结果为0则设置ZF零标志为1,跳转)
Jnzjump if not zero
,接着来看testcmp
*******************************************************************************
test属于逻辑运算指令
功能: 执行BITBIT之间的逻辑运算
     测试(两操作数作与运算,仅修改标志位,不回送结果).
Test对两个参数(目标,源)执行AND逻辑操作,并根据结果设置标志寄存器,结果本身不会保存。TESTAX,BX AND AX,BX 命令有相同效果
语法: TEST r/m,r/m/data
影响标志: C,O,P,Z,S(其中CO两个标志会被设为0)
运用举例:
1.Test用来测试一个位,例如寄存器:
test eax, 100b;          b后缀意为二进制
jnz ******;             如果eax右数第三个位为1,jnz将会跳转
我是这样想的,jnz跳转的条件是ZF=0,ZF=0意味着ZF(零标志)没被置位,即逻辑与结果为1.
2.Test的一个非常普遍的用法是用来测试一方寄存器是否为空:
test ecx, ecx
jz somewhere
如果ecx为零,设置ZF零标志为1,Jz跳转
*******************************************************************************
CMP属于算术运算指令
功能: 比较两个值(寄存器,内存,直接数值)
语法: CMP r/m,r/m/data
标志位: C,P,A,Z,O
CMP比较.(两操作数作减法,仅修改标志位,不回送结果).
cmp实际上是只设置标志不保存结构的减法,并设置Z-flag(零标志).
零标志很像carry,也是内部标志寄存器的一位.
例如:
Cmp eax, 2;       如果eax-2=0eax2就设置零标志为1
Jz ****;          如果设置了零标志就跳转
*******************************************************************************
我得出的结论
test逻辑与运算结果为零,就把ZF(零标志)1;
cmp 算术减法运算结果为零,就把ZF(零标志)1.
--------------------------------------------------------网络摘自结束----------------------------------------------------

根据上面的说明,我们知道,je条件成立与否也就是edx是否为0,若edx0,则je成立,根据这一点,你会发现这条指令是两个字节85D2,我们可以修改成cmp edx,edx edx-edx在任何情况下都等于0,这一点大家都能理解吧,就像a-a=0 a为任意数一样,此时je就会永恒成立,相当于无条件跳转,同样,cmp edx,edx也是两个字节3BD2
image017.png
我们右键选择修改的这一行,选择“复制到可执行文件->选择”
弹出这样的窗口
image019.png
右键这一行选择保存文件,保存即可,我们来看一下最终的效果,以下在win7环境下测试

首先我们打开它
image021.png
同样打开一篇文章,选定一段文本
image023.png
你会发现成功选定,然后复制,你会发现按右键不会弹出菜单,没关系,按Ctrl+C复制,我们打开WinWord

我们看到了什么?
image025.png
image027.png
由这次破解我得到了一些经验,首先是对于Ctrl+F9F8键跳出系统领空进入程序领空的经验,以及破解VB程序的经验,并且对VB的消息循环和事件机制在汇编的体现有了一定的了解,感谢大家的支持,求管理加精,文件在附件中,四年了,现在破解技术越来越好了,这次破解只用了一个小时,以下是我本次破解时做的记录,有正确的和错误的,大家可以参考一下:
--------------------------------------------------------笔记开始--------------------------------------------------------
733FF520 信息框函数
009185F7
rtcMsgBox 防复制调试
009183EE 防复制决策
00916C60 检测事件
009180D8
009181FC 防复制事件决策点
将其上的test edx,edx改成cmp edx,edx即可

--------------------------------------------------------笔记结束--------------------------------------------------------
下载连接.txt (48 Bytes, 下载次数: 216)

免费评分

参与人数 4威望 +1 热心值 +4 收起 理由
mysky999 + 1 1-7的补丁无法下载,安装后提示更新,更新.
Hmily + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
zhuguoqing1983 + 1 谢谢@Thanks!
liushuchang + 1 我很赞同!

查看全部评分

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

mysky999 发表于 2015-6-23 14:16
1-7的补丁无法下载  win7 32系统安装后 打上补丁提示更新,更新后无法运行程序  下载和安装用了很长时间  居然不能用 郁闷啊
zhuguoqing1983 发表于 2015-6-20 20:17
本帖最后由 zhuguoqing1983 于 2015-6-20 20:20 编辑
lizhirui 发表于 2015-6-20 12:30
忘了说使用方法了,先去我之前的帖子下载我发的软件本体和第一版的破解文件,然后下载本帖的下载文件,放到 ...
捕获.PNG
楼主我的安装失败,win7 64位,请问怎么回事?
616935591 发表于 2015-6-20 10:33
LoongKing 发表于 2015-6-20 11:12
编程还得C++
Amala 发表于 2015-6-20 11:27
支持学习了,感谢分享
 楼主| lizhirui 发表于 2015-6-20 12:30
忘了说使用方法了,先去我之前的帖子下载我发的软件本体和第一版的破解文件,然后下载本帖的下载文件,放到软件安装目录或者覆盖原来的主程序即可
liushuchang 发表于 2015-6-20 12:33
感谢分享
安于此生 发表于 2015-6-20 15:30
谢谢分享!
zhuguoqing1983 发表于 2015-6-20 17:57
感谢分享。学vc不用愁了。
 楼主| lizhirui 发表于 2015-6-20 21:17
你用管理员权限运行了吗
如果是的话试试WINXP兼容模式
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-17 00:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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