某档案管理软件 installshield安装程序序列号不完全分析
本帖最后由 pk8900 于 2018-2-28 09:37 编辑先附上软件:某档案管理软件 链接: 链接: https://pan.baidu.com/s/1mj6Zbtu 密码: 5nr4
【更新分享注册机及补丁】链接:链接:http://pan.baidu.com/s/1pLK1TJd 密码:xwb7
相关工具软件:setup.inx文件反编译(sexy installshielddecompiler)
下载地址:http://www.greenxf.com/soft/75759.html
最近有个单位上班的朋友想让我找一个档案管理软件,于是我在网上开始寻找,试了很多,都不太理想,后来下载了一个KY档案管理软件,于是想安装看看,打开安装包,安装需要序列号,百度一下,没找到,又不甘心,便开始研究了一下。软件安装包采用的是InstallShield Installshield 封装,以前不太研究安装程序,对于InstallShield Installshield也不是太熟悉,OD调试安装程序,发现安装程序运行后,会调用一个新线程Ikernel.exe程序执行安装脚本,于是上网查相关资料,无意中看到关于安装文件 setup.inx的介绍的一个贴子,有个工具软件可以反编译,于是下载了一个【setup.inx文件反编译(sexy installshield decompiler) 】(地址:http://www.greenxf.com/soft/75759.html),打开setup.inx,反编译:
菜单【view】-【message references】,查看消息引用:
找到注册码输入后的错误提示“序列号格式为XXXXX-XXXXX-XXXXX-XXXXX-XXXXX………”,双击找到代码位置:
@00008347:0007 local_string4 = (global_string16 + "123456789012345678901234567890");
@00008372:0020 CalcSerialNo(local_string4); // dll: GetSerialNo.dll
@0000837B:0029 StrSub(global_string16, global_string16, 0, 29);
@0000838F:0029 StrSub(local_string4, local_string4, 0, 29);
@000083A3:000E local_number4 = (global_string16 != local_string4);
@000083B0:0004 if(local_number4) then // ref index: 2
@000083BC:0021 MessageBox("序列号格式为XXXXX-XXXXX-XXXXX-XXXXX-XXXXX,全部为大写字母或数字,\n\n请检查字母的大小写。", -65535);
@00008420:0006 local_number3 = 0;
@0000842C:000D local_number4 = (local_number2 = 3);
@0000843B:0004 if(local_number4) then // ref index: 1
@00008447:0002 abort;
@0000844B:0001 endif;
@0000844B:0001 label_844b:
大致分析一下代码:global_string16 ;安装界面输入的序列号DLL文件GetSerialNo.dll中有一个函数为:CalcSerialNo(字符串变量),此函数计算生成序列号,生成的序列号取前29位:即XXXXX-XXXXX-XXXXX-XXXXX-XXXXX格式,输入的序列号取前29位,进行对比,一样的话就能进行下一步,不一样的话MessageBox一个提示框。看到这里应该就有很多办法了,可以分析CalcSerialNo函数,得到序列号的生成算法,也可以写个程序调用CalcSerialNo函数,直接生成一个序列号:打开AU3(用着比较顺手,小程序用它方便快捷),写好代码:随便用“AAAAA-BBBBB-CCCCC-DDDDD-EEEEE”代入:Dim $b
$a=DllOpen ( "GetSerialNo.dll" )
MsgBox (0,0,$a)
$b="AAAAA-BBBBB-CCCCC-DDDDD-EEEEE" & "123456789012345678901234567890"
Local $stString = DllStructCreate("char")
DllStructSetData($stString, 1, $b)
$c=DllCall($a,"none","CalcSerialNo","ptr",DllStructGetPtr($stString)) ;调用DLL 函数
MsgBox (0,0,@error) ;调用是否成功
MsgBox (0,0,DllStructGetData($stString, 1)) ;返回结果
ClipPut(DllStructGetData($stString, 1));将结果置入剪贴板s【GetSerialNo.dll在安装软件运行时,系统临时目录里就有。】得到一个序列号:VQAAA-19YBB-ZMCCC-CZRDD-KBV6M,粘入安装程序,可以下一步继续安装了,哈哈,看来这个序列号不是太严格。软件安装完成后打开,有提示框,看来还在这等着呢。
OD载入:OEP:0040276C >/$68 94E44A00 push ArchiveM.004AE494
00402771|.E8 EEFFFFFF call <jmp.&MSVBVM60.#ThunRTMain_100>
00402776|.0000 add byte ptr ds:,al
00402778|.0000 add byte ptr ds:,al
0040277A|.0000 add byte ptr ds:,al
0040277C|.3000 xor byte ptr ds:,al
0040277E|.0000 add byte ptr ds:,al
00402780|.3800 cmp byte ptr ds:,al
VB编的程序,采用加密狗限制使用,试用次数应该是计入一个数据库文件,OD查找字符串,一目了然。
关键代码:
代码很清晰,改改条件,可以无限使用了,具体改法就不在这里写了,相信只要是论坛里呆上个把月,都不是问题,软件大概的试用了一翻,功能很多,操作不太人性化,这样的软件报价7K多,也不知道值不值这个价钱。说些题外话,接触逆向也有些年头了,无奈锁事太多,心无法静下来,到现在也还是一个菜鸟,最近一段时间打算下点功夫好好学习一下,毕竟不在年轻了,玩游戏的时代也过了,艺多不压身,会的东西多才能吃饱饭。写的不好,将就着看吧,等写的多了会好一点。
应网友回复要求,我制作了注册机和补丁分享给大家,百度云地址:链接:链接:http://pan.baidu.com/s/1pLK1TJd 密码:xwb7 本帖最后由 hanxuliu 于 2020-3-11 16:04 编辑
您好,软件破解打开后,需要输入密码,请问是多少能告知一下吗?谢谢
密码已经找到,isa,经过测试,软件不稳定,在录入文件时有任一条目录入不符合规范,随即无法保存到数据库,然后系统提示数据库连接错误,请退出软件,关于软件BUG较多,希望可以研究一下最新版管理软件,再破解分享,谢谢。 谢谢,思路分析很清楚,就是获取注册码,失败。
已破解。 有玩游戏的时间不如学学编译,正如楼主说的技多不愁! 纯属热心恢复,看了支持回帖。 到底注册码是多少啊兄弟
谢谢楼主哦 我也想找这类的软件,可惜我还不如你。我是纯小白,如果你破译出来,能否传一份用用{:1_899:} 小白奢望破解版 希望早日研究明白! {:1_928:}思路挺清晰的,虽然这软件我不用,哈哈哈,借鉴学习 用了楼主的序列号 打开exe会提示输入密码?这是什么原理 楼主谢谢了