吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4565|回复: 1
收起左侧

[原创] Smart Install Maker安装文件爆破与算法

[复制链接]
qun285928725 发表于 2015-10-26 00:45
本帖最后由 qun285928725 于 2017-2-23 14:17 编辑

【文章标题】: Smart Install Maker安装文件爆破与算法
【文章作者】: qun285928725
【软件名称】: Smart Install Maker
【软件大小】: 1.53M
【下载地址】: 自己搜索下载
【加壳方式】: 无壳
【保护方式】: 无
【编写语言】: Borland Delphi
【使用工具】: OD
【操作平台】: win7
【软件介绍】: 快速将文件打包为安装文件并且可以设置密码
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
--------------------------------------------------------------------------------
【详细过程】
  判断安装文件是否为Smart Install Maker打包用OD载入找到004233EC 看后面的字符串是否为MART INSTALL MAKER
  
只针对安装包有密码的!
QQ图片20151026005116.png
  
  整个算法代码我参考的这个帖子
  http://www.52pojie.cn/thread-307577-1-1.html
  
  OD载入用Smart Install Maker打包的安装文件运行找到00422D25算法关键字下断,F7单步步入跟进去输入,假密1234
     00422D25  |.  BE 01000000   mov esi,0x1                              ;  esi=00000001
     00422D2A  |>  8B0424        /mov eax,dword ptr ss:[esp]              ;  假设密码=1234
     00422D2D  |.  0FB64430 FF   |movzx eax,byte ptr ds:[eax+esi-0x1]     ;  eax=31,第1位密码ascii码的16进制数
     00422D32  |.  8BD0          |mov edx,eax                             ;  edx=eax=上面这一句的值
     00422D34  |.  8B4C24 08     |mov ecx,dword ptr ss:[esp+0x8]          ;  ecx=7,密码的总位数
     00422D38  |.  2BCE          |sub ecx,esi                             ;  ecx=7-1=6,密码总位数-esi的值
     00422D3A  |.  0FAFCF        |imul ecx,edi                            ;  ecx=ecx*edi=0
     00422D3D  |.  03D1          |add edx,ecx                             ;  edx=edx+ecx=31+0=31,当前密码+上面一句的值
     00422D3F  |.  03FA          |add edi,edx                             ;  edi=edi+eax=0+31=31,计算出新的EDI值
     00422D41  |.  8BD8          |mov ebx,eax                             ;  ebx=31,第1位密码
     00422D43  |.  0FAFDF        |imul ebx,edi                            ;  ebx=ebx*edi=31*31=961
     00422D46  |.  03DE          |add ebx,esi                             ;  ebx=ebx+esi=961+1=962
     00422D48  |>  8BC3          |/mov eax,ebx                            ;  eax=ebx=962  eax是被除数
     00422D4A  |.  B9 5A000000   ||mov ecx,0x5A                           ;  ecx=0x5a 除数
     00422D4F  |.  33D2          ||xor edx,edx
     00422D51  |.  F7F1          ||div ecx                                ;  eax=eax/ecx=962/5a=1A edx=余数
     00422D53  |.  6BC0 5A       ||imul eax,eax,0x5A                      ;  ax=eax*5a=1A*5A=924
     00422D56  |.  2BD8          ||sub ebx,eax                            ;  ebx=962-924=3e 结果出来了
     00422D58  |.  83FB 30       ||cmp ebx,0x30                           ;  ebx=3e和0x30比较,如果>0x30就跳转
     00422D5B  |.  73 03         ||jnb XSetup.00422D60
     00422D5D  |.  83C3 30       ||add ebx,0x30
     00422D60  |>  83FB 2F       ||cmp ebx,0x2F                           ;  ebx=3e和0x2f比较,如果<0x2f就跳转
     00422D63  |.^ 76 E3         ||jbe XSetup.00422D48
     00422D65  |.  83FB 5B       ||cmp ebx,0x5B                           ;  ebx=3e和0x5b比较,如果>0x5b就跳转
     00422D68  |.^ 73 DE         |\jnb XSetup.00422D48
     00422D6A  |.  8B4424 04     |mov eax,dword ptr ss:[esp+0x4]          ;  eax=924,上面除5A乘5A后的结果
     00422D6E  |.  E8 D90DFEFF   |call Setup.00403B4C                     ;  !!
     00422D73  |.  885C30 FF     |mov byte ptr ds:[eax+esi-0x1],bl        ;  bl=3E ('>'),assii码1加密后的assii码
     00422D77  |.  46            |inc esi
     00422D78  |.  4D            |dec ebp                                 ;  密码长度
     00422D79  |.^ 75 AF         \jnz XSetup.00422D2A                     ;  接着循环下一位密码
  
  我所分析出的算法假码为1234   加密后>ZBB
  第一次运算字符为1
                                                         
  A     31=1            把输入字符转为16进制                                    
  B      3=4-1          密码总数减去当前所运算的位数        
  C     31=31*1         1乘以A的值(第1位字符运算默认为1)                       
  D     62=31+31        C的值加上A的值
  E     31=31+0         0加上A的值(第1位字符运算默认为0)
  F    961=31*31        E的值乘以A的值
  G    962=961+1        F的值加上当前运算密码的位数
  H     1A=962/5A       G的值除以5A (5A为算法固定值)  
  I    924=1A*5A        H的值乘以5A            
  J     3E=962-924      G的值减去I的值
  K     3E=3E+0         J的值大于等于30跳过小于30加上30(30为算法固定值)
  L     3E=3E+0         K的值大于等于5A就等于5A (5A为算法固定值)
  M      >=3E           十六进制转字符   
  
  第N次运算字符为2
  
  A     32=2            把输入字符转为16进制
  B      2=2-2          密码总数减去当前所运算的位数
  C     62=31*2         上一个E的值乘以当前B的值
  D     94=62+32        C的值加上A的值   
  E     C5=94+31        上一个E的值加上当前D的值   
  F   267A=C5*32        E的值乘以A的值
  G   267C=267A+2       F的值加上当前运算密码的位数
  H     6D=267C/5A      G的值除以5A (5A为算法固定值)
  I   2652=6D*5A        H的值乘以5A
  J     2A=267C-2652    G的值减去I的值
  K     5A=2A+30        J的值大于等于30跳过小于30加上30(30为算法固定值)
  L     5A=5A+0         K的值大于等于5A就等于5A (5A为算法固定值)
  M      Z=5A           十六进制转字符
  
  第N次运算字符为3              
  
  A     33=3            把输入字符转为16进制
  B      1=4-3          密码总数减去当前所运算的位数
  C     C5=C5*1         上一个E的值乘以当前B的值
  D     F8=C5+33        C的值加上A的值   
  E    1BD=F8+C5        上一个E的值加上当前D的值
  F   58A7=1BD*33       E的值乘以A的值
  G   58AA=58A7+3       F的值加上当前运算密码的位数
  H     FC=58AA/5A      G的值除以5A (5A为算法固定值)
  I   5898=FC*5A        H的值乘以5A
  J     12=58AA-5898    G的值减去I的值
  K     42=12+30        J的值大于等于30跳过小于30加上30(30为算法固定值)
  L     42=42+0         K的值大于等于5A就等于5A (5A为算法固定值)
  M      B=42           十六进制转字符
  
  最后一次运算字符为4
  
  A     34=4            把输入字符转为16进制
  B      0=4-4          密码总数减去当前所运算的位数
  C      0=1BD*0        上一个E的值乘以当前B的值
  D    1F1=1BD+34       C的值加上A的值
  E    255=1F1+34       D的值加上A的值(当C值为0时不读取上一个E的值)
  F   64F4=1F1*34       D的值乘以A的值(当C值为0时不读取上一个E的值和当前E的值)
  G   64F8=64F4+4       F的值加上当前运算密码的位数
  H    11F=64F8/5A      G的值除以5A (5A为算法固定值)
  I   64E6=11F*5A       H的值乘以5A
  J     12=64F8-64E6    G的值减去I的值
  K     42=12+30        J的值大于等于30跳过小于30加上30(30为算法固定值)
  L     42=42+0         K的值大于等于5A就等于5A (5A为算法固定值)
  M      B=42           十六进制转字符
  
  从上面分析表明代码总数的第一位后最后一位算法不一样,中间的数值算法都是固定的。(测试过12位密码)
  当我想把这个算法逆转回去时发现不可能!!,(洗洗睡吧)!
  
  既然算法不可逆转那就爆破把!
  
  00403A6D  |.  39D9          |cmp ecx,ebx           先用OD载入用Smart Install Maker打包文件 运行在此下断(完全运行后下断 并非是在运行途中下断谨记)                     
  
  00403A6F      75 18         jnz short Setup.00403AC9        把00403AC9改为00403A89  
  
  00403A72  |.  74 15         je short Setup.00403A89
  
  00403A93  |. /74 22         je short Setup.00403AB7          把JE改成JMP   取消断点 运行 输任意字符直到下一步可点
  
  如果想知道密码的位数可以在004223EE下断运行EDX的值例如为ASCII">R6J4H"那么密码总长度为6.
  
  本人是个新手接触破解才一个月如果有哪里不对的地方请个路高手指出。
  
  分享Smart Install Maker打包工具   http://pan.baidu.com/s/1i3jNF9b    3uhn

  如有违规请版主删帖Tks.
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于qun285928725, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2015年10月26日 0:43:57

免费评分

参与人数 1热心值 +1 收起 理由
Hmily + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.

查看全部评分

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

chyq20 发表于 2016-5-25 17:28
支持原创
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-17 13:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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