WinEdt 10.2 Build 20170413 (32和64位)破解方法

    参考了52pojie上的文章 https://www.52pojie.cn/thread-595351-1-1.html,该文注重分析WinEdt的注册算法,而我下面要写的是修改关键跳转点的爆破方法。
    (当然,还是要把思杰马克丁这种流氓公司拉出来批判一番:
    https://bbs.kafan.cn/thread-2091302-1-1.html
    https://bbs.kafan.cn/thread-2095728-1-1.html )

    先以32位版为例,用IDA打开安装路径下的WinEdt.exe,未注册版的WinEdt会在标题栏中显示(Unregistered Copy),在IDA中按Alt+T搜不出“Unregistered Copy”,只能用Unregistered来搜,结果如下

 


双击(前三个结果中的任意一个)进入sub_ 662E38,在IDA中可以看到如下结构,


 
最上面的那个分支就是一个关键分支(662E60  jnz  short loc_662EC7),再经过几次分叉后一共有5种情形: Expired Copy, Unregistered Copy: Expired Trial Period, Unregistered  Copy: Extended Trial, Unregistered Copy以及“已注册”,很明显,把662E60处的jnz  short loc_662EC7改为jmp  short loc_662EC7即可,十六进制的75 65变成EB 65.

    31天的试用期结束后,在启动时会出现如下弹窗,而且,很重要的一个细节是,弹窗的同时也会有一个提示音,若不是当时我的电脑没处于静音模式,我肯定难以发现这条关键线索。


 

    这个提示音是user32中的MessageBeep函数发出的,


 
可以看到一共有9处call MessageBeep,前面7个call MessageBeep的前一条指令都是push 0,第8个call MessageBeep的前一条指令是push 30h,第9个call MessageBeep的前一条指令是push esi. 我对这9个call MessageBeep都下了断点之后,发现第8个call MessageBeep是关键的,push 30h中30h的含义是MB_ICONEXCLAMATION. 

 


 

    有两处调用了push 30h所在的函数sub_7B1AB0,先看第一个7D0AB0+32B=7D0DDB,


 
在7D0D90处,我们希望跳转到loc_7D0E4D,而不希望执行call sub_7B1AB0. 所以,将从7D0D90开始的6个字节0F 85 B7 00 00 00改为E9 B8 00 00 00 90(有两个字节没有改变),指令由jnz  loc_7D0E4D变成jmp  loc_7D0E4D。

    再看start(885EE4)+C1=885FA5,


 
自然不希望执行“Trial Exit”部分的代码,把885F87处的jnz  short loc_885FCE改成jmp  short loc_885FCE,十六进制的75 45变成EB 45. 

    下图是修改位置的汇总


原始的WinEdt.exe的MD5值是81DC95A2A5E4B849961C58CBE25F5CFB,修改后的WinEdt.exe的MD5值是F2ECEF0FC8FCA3F2995EFF65024F436C。

64位的WinEdt的分析方法差不多,下面直接给结果


 
原始的WinEdt.exe的MD5值是7757CBD992210738CCAFC250A8E776C7,修改后的WinEdt.exe的MD5值是9EC33B10555B62CEF37E10E457C02F44。

破解文件下载地址(包含32位和64位): https://pan.baidu.com/s/1Z5nFS-DaARMmx5VSlWqdAQ 提取密码: 7v4r.


如果破解文件有问题,请在评论区告诉我。

猜你喜欢

转载自blog.csdn.net/pijianzhirui/article/details/79645115