发表于 2021-9-25 14:49

申 请 I D:dbgcode【申请通过】

1、申 请 I D:dbgcode
2、个人邮箱:366944811@qq.com
3、原创技术文章:
Installshield安装包的序列号逆向操作系统:Windows7
IS版本:   6.X
工具:      sid,isd,7zip,exeinfo
      IS安装包制作工具一直是各大公司的首选,当然现在也有很多公司使用Inno setup和NSIS,但IS在安装包制作领域的地位我就不说了,一直和VS合作,也是微软指定合作商。网上IS安装包的破解资料比较零散,让很多新手看完后有点不知所云,这其中也包括我。最近研究了下,顺便总结后发出来和大家共同交流,大神就忽视吧,只是入门级。

此文通过反编译IS脚本,跳过安装过程中要输入的序列号的选项
1、确定安装包,找到安装包脚本。
2、反编译脚本,找到关键代码。
3、修改代码。

一、查看安装包是什么工具制作,早期的IS安装包都是一个个Disk文件夹。
现在大多是单个exe文件,可以通过右键属性-详细信息查找蛛丝马迹,但个别软件修改比较彻底,看不到安装包信息,就只能用exeinfo工具了。

确定了安装包是IS制作,下一步就是拆包,让exe变为Disk文件夹的早期状态,直接用7zip右键解包成一个文件夹即可,完成后如下图,如果解包失败证明是高版本,用ISX命令后工具解压,今天破解的是低版本,7zip可以直接解压,解压后可以看到有个setup.inx的文件。

二、反编译脚本,这里用isd,win+run打开后输入cmd,打开命令行,把setup.inx拷贝到isd所在目录,命令后切换到isd目录(这里是C:\isd)"cd C:\isd",然后输入isd.exe setup.inx(注意中间有空格,英文状态输入,最好带上文件扩展名),其实可以直接用sid编译,只是sid编译的文件不方便查找查看。编译后会生成一个setup.txt文档。

IS生成的安装包,一般是欢迎窗口,协议窗口,用户信息窗口(注册码窗口),我们需要定位到用户信息这里。运行安装包随便输入个序列号,找到关键信息(此处是序列号serial)。一般会有提示信息,如果没有,可以通过先定位协议窗口(一般要加载licence.txt),或者通过查看公司名产品名,比较函数等信息辅助查找关键信息。

打开setup.txt,通过serial,看看能不能找到验证信息的地址,此处可以找到,记录此处地址00005742。

三、打开sid,菜单栏goto-code start快速定位到代码段。根据setup.txt关键信息地址找到对应地址,完成修改。

最后执行工具栏file-patch changes,保存修改内容,完成。

Hmily 发表于 2021-9-26 17:59

请教一下

isd.exe setup.inx

7z解压出来的inx直接调用程序就能编译出来了?

通过修改脚本来爆破好重新编译回去?这个算法校验怎么实现的?

发表于 2021-9-27 00:31

Hmily 发表于 2021-9-26 17:59
请教一下




请教不敢当,据我测试IS6.X生成的Inx文件时可以直接用ISD反编译成Txt文件的,ISD没有编译回去的功能,只是查看代码,然后用Sid修改后保存成Inx文件就好,
7zip解压后的安装包文件夹可以直接双击setup.exe运行的,当然想把这个包含修改的INx文件的文件夹打包成单个exe也可以,用Winrar或者IS6.X自带的PFTW3.0可以重新打包回去。
测试修改的结果就更简单了,Sid改好后保存后,直接运行setup就可以了,不成功就继续改。

发表于 2021-9-27 00:47

Hmily 发表于 2021-9-26 17:59
请教一下




请教不敢当。。。
7z解压出的INX文件直接用ISD可以反编译成可以阅读的TXT文件,只是为了查看。
编译的修改是用Sid,ISD没发现有编译回去的功能。SID可以支持边修改边调试。修改后保存补丁改变就好,然后执行安装就能测试结果。
这个安装包算法校验没有注意查找,IS生成的校验方式只有三种,一种最简单的在信息界面的脚本内加个代码比对就,另一种复杂一点的自定义对话框后编写脚本,前两种网上都有现成的代码,最后一种是自己生成DLL文件来校验密码。
据我估计这个应该属于第二种,这种早期的只有固定的密码安装包,没有啥子加密解密生成密码的过程。。。

Hmily 发表于 2021-9-27 10:03

游客 117.24.27.x 发表于 2021-9-27 00:47
请教不敢当。。。
7z解压出的INX文件直接用ISD可以反编译成可以阅读的TXT文件,只是为了查看。
编译的 ...

那能不能分析下具体是哪种方法,完整逆向下算法过程,单独的爆破有些过于简单了。

发表于 2021-9-27 19:38

Hmily 发表于 2021-9-27 10:03
那能不能分析下具体是哪种方法,完整逆向下算法过程,单独的爆破有些过于简单了。

那就只能上代码分析了。软件在公司还在使用,万一被有人看到比较尴尬,只能定义字符串打码了,不过不影响分析结果。

label_25:
/* 00005728: 0007 */    n1 = n1 + 1;
/* 00005737: 0005 */    goto label_23;

// : Jump Referenced(1):
// :00005682,
label_26:
/* 00005742: 000D */    n3 = n2 == 0;                //判断序列号内部循环的标志位,为0则弹窗序列号错误
/* 00005751: 0004 */    if(! n3) goto label_27;                        // normal if
/* 0000575D: 0021 */    function_242("ERROR_SERIAL");
/* 00005772: 0006 */    s3 = LAST_RESULT;
/* 0000577C: 0021 */    function_272(s3, -65534);
/* 0000578A: 0027 */    // -- Start Return Code -- //
/* 0000578E: 0023 */    return 0;

// : Jump Referenced(1):
// :00005751,
label_27:
/* 00005799: 0007 */    n0 = n0 + 1;        //序列号下标外循环一次完成+1.直到比对6此后结束。
/* 000057A8: 0005 */    goto label_22;

// : Jump Referenced(1):
// :0000564D,
label_28:
/* 000057B3: 0027 */    // -- Start Return Code -- //
/* 000057B7: 0023 */    return 1;
/* 000057C0: 0026 */    // -- Create Local Variables -- //
end;
整个验证过程大致这样,读取序列号前六位和后6位和内部定义两个字符串数组的第一位比对。

Hmily 发表于 2021-10-11 10:38

I D:dbgcode
邮箱:366944811@qq.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。

ps:登陆报道后可以把文章重新编辑发布到脱壳破解区。

dbgcode 发表于 2021-10-12 16:03

谢谢通过,来报道了。。。
页: [1]
查看完整版本: 申 请 I D:dbgcode【申请通过】