吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 25759|回复: 108
收起左侧

[原创] 一次糊里糊涂的破解

  [复制链接]
肥牛 发表于 2018-4-9 16:46
有个朋友发来一个软件,让我看一下,新峰进销存。网址http://www.63733.com,最新版本10.0 (2018.0404.5224)
而这个软件的破解过程,简直可以用糊里糊涂、莫名其妙来形容。因为我摆开了架子准备大干一场,结果对方直接就举了白旗。搞得我一点儿成就感都没有。
因为这个软件基本上可以说完全不设防,适合新手研究用。我把整个过程写出来,大家跟着我看吧。


这个软件安装好以后,是注册给新峰公司自己的,如果修改公司名,就会提示注册码不正确。而公司名会带到各种报表的表头中,所以破解的话,就得输入正确的注册码
1.png
在这张图里,我们看到,输入注册码并且弹出对话框的那个窗体标题是“公司信息及系统设置”。所以我们要从这个窗体下手。
按照正常的思路分析,点击保存按钮以后,弹出错误信息,说明是在保存按钮的点击事件里进行了注册码的判断。
所以,现在的关键就是要找到这个事件的代码。


照例,先用ExeInfo查看主程序Xinfeng_Jxc10.exe,未加壳,VB程序。
2.png

我对VB的程序很头疼,因为我总觉得VB程序不是真编译,它的反编译代码看起来非常繁琐。所以,还是用VB Decompiler试试吧。
打开以后,逐个窗体查看,还好,第三个窗体就是我们要找的窗体。
3.png


窗体的代码向下拉,找保存按钮。
4.png
于是,我们就知道保存按钮的名字叫cmdok,那么按照VB的习惯,这个按钮的点击事件应该就是cmdok_click了。
在VB Decompiler左面树状中找到窗体frm_xt_dwxx下面的cmdok_click事件,如下图:
5.png

这个就是这个按钮的点击事件了。这段代码往下拉,就能看到注册失败的提示信息:
6.png
因为VB Decompiler的反编译实在是不靠谱,我们不能拿这个反编译代码来做什么分析。但是直接分析汇编代码,我对VB的汇编又很头疼。所以还是回去用OD吧。


用OD加载主程序Xinfeng_Jxc10.exe,然后F9直接运行。在软件中,点击软件设置,到了“公司信息及系统设置”窗体时,切回到OD,点击暂停键(或者按F12)。
因为我们前面已经用VB Decompiler分析过代码,所以就不需要再费劲找入口了,直接跳转到相应的地址就好了。
刚才那张图我们看到,“注册码不正确”的字符串对应的地址是007566D8,那么我们就在OD中,直接CTRL+G,输入地址007566D8,于是就跳转到相应的代码了。


我把OD的代码贴到下面:
[Asm] 纯文本查看 复制代码
0075651E   . FF15 30144000  CALL DWORD PTR DS:[<&MSVBVM60.#619>]     ;  msvbvm60.rtcRightCharVar
00756524   . 8B95 0CF4FFFF  MOV EDX,DWORD PTR SS:[EBP-0xBF4]
0075652A   . 52             PUSH EDX
0075652B   . 8D85 F8FDFFFF  LEA EAX,DWORD PTR SS:[EBP-0x208]
00756531   . 50             PUSH EAX
00756532   . 8D8D 08FEFFFF  LEA ECX,DWORD PTR SS:[EBP-0x1F8]
00756538   . 51             PUSH ECX
00756539   . 8D95 E8FDFFFF  LEA EDX,DWORD PTR SS:[EBP-0x218]
0075653F   . 52             PUSH EDX
00756540   . FFD6           CALL ESI
00756542   . 50             PUSH EAX
00756543   . FF15 30104000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrVa>;  msvbvm60.__vbaStrVarMove
00756549   . 8BD0           MOV EDX,EAX
0075654B   . 8D4D C0        LEA ECX,DWORD PTR SS:[EBP-0x40]
0075654E   . FFD7           CALL EDI
00756550   . 50             PUSH EAX
00756551   . FF15 E0114000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCm>;  msvbvm60.__vbaStrCmp
00756557   . F7D8           NEG EAX
00756559   . 1BC0           SBB EAX,EAX
0075655B   . 40             INC EAX
0075655C   . F7D8           NEG EAX
0075655E   . 8985 C4F5FFFF  MOV DWORD PTR SS:[EBP-0xA3C],EAX
00756564   . 8D45 C0        LEA EAX,DWORD PTR SS:[EBP-0x40]
00756567   . 50             PUSH EAX
00756568   . 8D4D C4        LEA ECX,DWORD PTR SS:[EBP-0x3C]
0075656B   . 51             PUSH ECX
0075656C   . 8D55 C8        LEA EDX,DWORD PTR SS:[EBP-0x38]
0075656F   . 52             PUSH EDX
00756570   . 8D45 CC        LEA EAX,DWORD PTR SS:[EBP-0x34]
00756573   . 50             PUSH EAX
00756574   . 6A 04          PUSH 0x4
00756576   . FF15 7C134000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeS>;  msvbvm60.__vbaFreeStrList
0075657C   . 8D8D D0FEFFFF  LEA ECX,DWORD PTR SS:[EBP-0x130]
00756582   . 51             PUSH ECX
00756583   . 8D95 D4FEFFFF  LEA EDX,DWORD PTR SS:[EBP-0x12C]
00756589   . 52             PUSH EDX
0075658A   . 6A 02          PUSH 0x2
0075658C   . FF15 70104000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeO>;  msvbvm60.__vbaFreeObjList
00756592   . 8D85 E8FDFFFF  LEA EAX,DWORD PTR SS:[EBP-0x218]
00756598   . 50             PUSH EAX
00756599   . 8D8D 08FEFFFF  LEA ECX,DWORD PTR SS:[EBP-0x1F8]
0075659F   . 51             PUSH ECX
007565A0   . 8D95 F8FDFFFF  LEA EDX,DWORD PTR SS:[EBP-0x208]
007565A6   . 52             PUSH EDX
007565A7   . 8D85 18FEFFFF  LEA EAX,DWORD PTR SS:[EBP-0x1E8]
007565AD   . 50             PUSH EAX
007565AE   . 6A 04          PUSH 0x4
007565B0   . FF15 50104000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeV>;  msvbvm60.__vbaFreeVarList
007565B6   . 83C4 34        ADD ESP,0x34
007565B9   . 66:83BD C4F5FF>CMP WORD PTR SS:[EBP-0xA3C],0x0
007565C1   . 0F84 36020000  JE Xinfeng_.007567FD
007565C7   . 8B0B           MOV ECX,DWORD PTR DS:[EBX]
007565C9   . 53             PUSH EBX
007565CA   . FF91 00050000  CALL DWORD PTR DS:[ECX+0x500]
007565D0   . 50             PUSH EAX
007565D1   . 8D95 D4FEFFFF  LEA EDX,DWORD PTR SS:[EBP-0x12C]
007565D7   . 52             PUSH EDX
007565D8   . FF15 3C114000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaObjSe>;  msvbvm60.__vbaObjSet
007565DE   . 8B85 D4FEFFFF  MOV EAX,DWORD PTR SS:[EBP-0x12C]
007565E4   . C785 D4FEFFFF >MOV DWORD PTR SS:[EBP-0x12C],0x0
007565EE   . 8985 20FEFFFF  MOV DWORD PTR SS:[EBP-0x1E0],EAX
007565F4   . C785 18FEFFFF >MOV DWORD PTR SS:[EBP-0x1E8],0x9
007565FE   . 6A 03          PUSH 0x3
00756600   . 8D85 18FEFFFF  LEA EAX,DWORD PTR SS:[EBP-0x1E8]
00756606   . 50             PUSH EAX
00756607   . 8D8D 08FEFFFF  LEA ECX,DWORD PTR SS:[EBP-0x1F8]
0075660D   . 51             PUSH ECX
0075660E   . FF15 30144000  CALL DWORD PTR DS:[<&MSVBVM60.#619>]     ;  msvbvm60.rtcRightCharVar
00756614   . 8D95 08FEFFFF  LEA EDX,DWORD PTR SS:[EBP-0x1F8]
0075661A   . 52             PUSH EDX
0075661B   . FF15 08124000  CALL DWORD PTR DS:[<&MSVBVM60.#561>]     ;  msvbvm60.rtcIsNumeric
00756621   . F7D0           NOT EAX
00756623   . 66:8985 6CF5FF>MOV WORD PTR SS:[EBP-0xA94],AX
0075662A   . 8D8D D4FEFFFF  LEA ECX,DWORD PTR SS:[EBP-0x12C]
00756630   . FF15 88144000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeO>;  msvbvm60.__vbaFreeObj
00756636   . 8D85 08FEFFFF  LEA EAX,DWORD PTR SS:[EBP-0x1F8]
0075663C   . 50             PUSH EAX
0075663D   . 8D8D 18FEFFFF  LEA ECX,DWORD PTR SS:[EBP-0x1E8]
00756643   . 51             PUSH ECX
00756644   . 6A 02          PUSH 0x2
00756646   . FF15 50104000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaFreeV>;  msvbvm60.__vbaFreeVarList
0075664C   . 83C4 0C        ADD ESP,0xC
0075664F   . 66:83BD 6CF5FF>CMP WORD PTR SS:[EBP-0xA94],0x0
00756657   . 0F84 5E050000  JE Xinfeng_.00756BBB
0075665D   . 6A 0D          PUSH 0xD
0075665F   . 8D95 18FEFFFF  LEA EDX,DWORD PTR SS:[EBP-0x1E8]
00756665   . 52             PUSH EDX
00756666   . 8B3D E0124000  MOV EDI,DWORD PTR DS:[<&MSVBVM60.#608>]  ;  msvbvm60.rtcVarBstrFromAnsi
0075666C   . FFD7           CALL EDI                                 ;  <&MSVBVM60.#608>
0075666E   . 6A 0D          PUSH 0xD
00756670   . 8D85 F8FDFFFF  LEA EAX,DWORD PTR SS:[EBP-0x208]
00756676   . 50             PUSH EAX
00756677   . FFD7           CALL EDI
00756679   . 6A 0D          PUSH 0xD
0075667B   . 8D8D C8FDFFFF  LEA ECX,DWORD PTR SS:[EBP-0x238]
00756681   . 51             PUSH ECX
00756682   . FFD7           CALL EDI
00756684   . 6A 0D          PUSH 0xD
00756686   . 8D95 A8FDFFFF  LEA EDX,DWORD PTR SS:[EBP-0x258]
0075668C   . 52             PUSH EDX
0075668D   . FFD7           CALL EDI
0075668F   . B9 04000280    MOV ECX,0x80020004
00756694   . 898D 60FDFFFF  MOV DWORD PTR SS:[EBP-0x2A0],ECX
0075669A   . B8 0A000000    MOV EAX,0xA
0075669F   . 8985 58FDFFFF  MOV DWORD PTR SS:[EBP-0x2A8],EAX
007566A5   . 898D 70FDFFFF  MOV DWORD PTR SS:[EBP-0x290],ECX
007566AB   . 8985 68FDFFFF  MOV DWORD PTR SS:[EBP-0x298],EAX
007566B1   . C785 C0F8FFFF >MOV DWORD PTR SS:[EBP-0x740],Xinfeng_.00>;  UNICODE "软件开发商电话:0755-89808745"
007566BB   . BF 08000000    MOV EDI,0x8
007566C0   . 89BD B8F8FFFF  MOV DWORD PTR SS:[EBP-0x748],EDI
007566C6   . 8D95 B8F8FFFF  LEA EDX,DWORD PTR SS:[EBP-0x748]
007566CC   . 8D8D 78FDFFFF  LEA ECX,DWORD PTR SS:[EBP-0x288]
007566D2   . FF15 D4134000  CALL DWORD PTR DS:[<&MSVBVM60.__vbaVarDu>;  msvbvm60.__vbaVarDup
007566D8   . C785 F0F8FFFF >MOV DWORD PTR SS:[EBP-0x710],Xinfeng_.00>;  UNICODE "注册码不正确,请与软件开发商联络!!"
007566E2   . 89BD E8F8FFFF  MOV DWORD PTR SS:[EBP-0x718],EDI
007566E8   . C785 E0F8FFFF >MOV DWORD PTR SS:[EBP-0x720],Xinfeng_.00>;  UNICODE "如果您需要正式注册请您与软件开发商联络获得注册码!"
007566F2   . 89BD D8F8FFFF  MOV DWORD PTR SS:[EBP-0x728],EDI
007566F8   . C785 D0F8FFFF >MOV DWORD PTR SS:[EBP-0x730],Xinfeng_.00>;  UNICODE "如果您只需要试用本软件则无需更改注册码信息!!"
00756702   . 89BD C8F8FFFF  MOV DWORD PTR SS:[EBP-0x738],EDI
00756708   . 8D85 58FDFFFF  LEA EAX,DWORD PTR SS:[EBP-0x2A8]


按照一般编程的思路,应该先去做注册码的校验判断,错误的话就弹出错误提示。而一般来说,注册码的判断要么是字符串比较,要么是值的比较
于是从错误提示倒着往回找,找各种的CMP命令。于是找到了一处
[Asm] 纯文本查看 复制代码
00756551 . FF15 E0114000 CALL DWORD PTR DS:[<&MSVBVM60.__vbaStrCm>; msvbvm60.__vbaStrCmp

这里是一处字符串比较,谁跟谁比不知道,但是按照正常的思路,这里很可疑。于是在这里F2下断点。按F9执行。
在软件中,随便输入一个注册码,点击保存。OD截获这个断点,停在这里。
7.png
等等,那个EAX里是啥东西?这么一串字符串,看起来很可疑啊,复制下来。取消断点,再F9执行。回到软件中,注册码输入刚才的那串字符串“znt]XGzdZRA`y]Z`UEpqYoF]s]CfwQIca567”。
呃,注册成功。
8.png
什么鬼?这就完了?
timg (1).jpg
好无聊啊!好没有成就感啊!
糊里糊涂啊!莫名其妙啊!
作为一名合格的程序员,你怎么能用注册码的明码进行比较呢?你好歹也要转换一下啊!


好吧,I 服了 You。
所以,这个破解的帖子,其实到现在就完了,什么分析过程啊,破解思路啊,全都没有。因为已经结束了。
注册机?拉到吧,我破解这个软件的目的就是想用,既然已经有注册码了,我还费劲去分析注册算法?
它都把注册码用明码显示出来了,直接用内存注册机就好了嘛!
内存注册机可以在吾爱破解工具箱里找到,用法我就不介绍了
9.png
10.png
11.png

免费评分

参与人数 27威望 +2 吾爱币 +39 热心值 +26 收起 理由
qqwwerty12 + 1 + 1 热心回复!
shaunkelly + 1 + 1 我赶紧做一个注册机,照葫芦画瓢一下
mspe + 1 + 1 我很赞同!
Excalibursx + 1 + 1 用心讨论,共获提升!
Poner + 2 + 10 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
jgs + 1 + 1 谢谢@Thanks!
xiaofeiyang + 1 + 1 学习学习
九门提督定风波 + 1 + 1 热心回复!
月落123 + 1 + 1 用心讨论,共获提升!
IceWind + 1 + 1 用心讨论,共获提升!
梦入神机 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zl9801 + 1 + 1 谢谢@Thanks!
june_fj + 1 + 1 谢谢@Thanks!
朱朱你堕落了 + 3 + 1 向大神学习!
swl1934 + 1 + 1 谢谢@Thanks!
直抒胸臆 + 1 本想学习一下的,在sandboxie5.24里安装了一下,打开公司信息设置及注册,.
liuynm + 1 + 1 热心回复!
liyuaism + 1 + 1 我很赞同!
xinkui + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
很快再相见123 + 1 用心讨论,共获提升!
610100 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
黑的思想 + 2 + 1 用心讨论,共获提升!
荀枚sS + 2 + 1 热心回复!
WYWZ + 1 + 1 用心讨论,共获提升!
liphily + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
莫奇 + 1 + 1 来自底层的仰望
青春丿易逝 + 1 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

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

huiyi1 发表于 2018-11-23 17:08
感谢楼主提供的思路和提供的软件   
  本人百分百小白 从来没有接触过任何编程和破解  最近三天才来学习的  本来想根据你的步骤走一次破解  但是好像软件更新了   用你的办法不行然后自己就慢慢琢磨吧
     找着找着突然发现
007A4D9B   /74 79           je short Xinfeng_.007A4E16
007A4D9D   |B9 04000280     mov ecx,0x80020004
007A4DA2   |894D 94         mov dword ptr ss:[ebp-0x6C],ecx
007A4DA5   |B8 0A000000     mov eax,0xA
007A4DAA   |8945 8C         mov dword ptr ss:[ebp-0x74],eax
007A4DAD   |894D A4         mov dword ptr ss:[ebp-0x5C],ecx
007A4DB0   |8945 9C         mov dword ptr ss:[ebp-0x64],eax
007A4DB3   |C785 04FFFFFF 5>mov dword ptr ss:[ebp-0xFC],Xinfeng_.012>
007A4DBD   |C785 FCFEFFFF 0>mov dword ptr ss:[ebp-0x104],0x4008
007A4DC7   |C785 14FFFFFF 0>mov dword ptr ss:[ebp-0xEC],Xinfeng_.004>; UNICODE "你的电脑当前日期不正确,请修改电脑日期(双击电脑右下方的时间,即可修改正确日期)."
根据JMP        这是一个无条件跳转指令,即总是跳转到指定的地址
JE或者JZ        若相等则跳;如果零标志位Z不为0则跳转,即,要求操作的结果为零
我就把JE改成JMP  然后发现可以无限试用了

AngrybirdK 发表于 2018-4-9 16:58
哎哟哥哥嗨你好 发表于 2018-4-9 17:13
tywhc 发表于 2018-4-9 17:14
楼主杀人还想见血
53060476 发表于 2018-4-9 17:19 来自手机
我看看,其实叶不太懂
Talisman 发表于 2018-4-9 17:19 来自手机
楼主!你用到的破解工具是叫什么名字?可以发来分享一下吗?我也想学一学!
成航先森 发表于 2018-4-9 17:24
虽然看着结果很有趣,但是这些思路还是不太了解啊
 楼主| 肥牛 发表于 2018-4-9 17:29
Talisman 发表于 2018-4-9 17:19
楼主!你用到的破解工具是叫什么名字?可以发来分享一下吗?我也想学一学!

查看文件信息的是ExeInfo(ExeinfoPe.zip),VB反编译是VB Decompiler(VB.Decompiler.Pro.v10.1.Cracked.by.yoza[RET].rar),跟踪调试工具是OD(吾爱破解专用版Ollydbg.rar)。在吾爱破解的网盘里都有的。

免费评分

参与人数 1热心值 +1 收起 理由
610100 + 1 热心回复!

查看全部评分

innovator 发表于 2018-4-9 17:41
666,这个程序员是不是十几年前穿越过来的,居然明文比较
南谷夏野 发表于 2018-4-9 17:49
都是明码没有加密。适合新手学习破解。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-22 16:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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