吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 339|回复: 5

[求助] 请大神帮忙看看这个算法

[复制链接]
发表于 2017-10-12 23:55 | 显示全部楼层
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
求助软件脱壳或者破解思路时,请务必在主题帖中描述清楚你的分析思路与方法,否则会当作求脱求破处理;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类改成【已解决】
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人。
signed __int32 __fastcall sub_232C(signed __int32 key, int a2)
{
  int s4; // [sp+0h] [bp-14h]@1
  char *key_1; // [sp+4h] [bp-10h]@1
  int i; // [sp+8h] [bp-Ch]@1
  signed __int32 j; // [sp+Ch] [bp-8h]@2

  key_1 = (char *)key;
  s4 = a2;
  for ( i = 0; i < s4; ++i )
  {
    for ( j = 0; ; ++j )
    {
      key = strlen(key_1);
      if ( key <= j )
        break;
      key_1[j] = sub_2494(key_1[j], 1);
    }
  }
  return key;
}


int __fastcall sub_2494(unsigned __int8 a1, int a2)
{
  int v3; // [sp+8h] [bp-8h]@1
  int i; // [sp+Ch] [bp-4h]@1

  v3 = a1;
  for ( i = 0; i < a2; ++i )
  {
    v3 *= 2;
    if ( v3 & 0x100 )
      v3 |= 1u;
  }
  return (unsigned __int8)v3;
}


int sub_2224()
{
  char key; // [sp+4h] [bp-5Ch]@1
  int s4; // [sp+54h] [bp-Ch]@1
  signed __int32 len; // [sp+58h] [bp-8h]@1
  signed __int32 i; // [sp+5Ch] [bp-4h]@1
  char vars0; // [sp+60h] [bp+0h]@2

  s4 = 4;
  printf("Input key : ");
  scanf("%s", &key);
  len = strlen(&key);
  sub_232C((signed __int32)&key, s4);
  for ( i = 0; i < len; ++i )
  {
    if ( (unsigned __int8)*(&vars0 + i - 92) != byte_3004[i] )
    {
      puts("Wrong Key! ");
      return 0;
    }
  }
  puts("Correct Key! ");
  return 0;
}



; _BYTE byte_3004[29]
__data:00003004 byte_3004       DCB 0x44, 0xF6, 0xF5, 0x57, 0xF5, 0xC6, 0x96, 0xB6, 0x56
__data:00003004                                         ; DATA XREF: sub_2224+84o
__data:00003004                                         ; __text:off_2320o
__data:00003004                 DCB 0xF5, 0x14, 0x25, 0xD4, 0xF5, 0x96, 0xE6, 0x37, 0x47
__data:00003004                 DCB 0x27, 0x57, 0x36, 0x47, 0x96, 3, 0xE6, 0xF3, 0xA3
__data:00003004                 DCB 0x92, 0



自己分析了一下,但是还是没有完全搞懂,反推出来的结果不对,请大神看看,指点一下!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-10-13 01:07 | 显示全部楼层
sub_2494 : 就是对 a1 循环左移 a2 次
sub_232C : 就是对字符串 key 每个字节循环左移 a2 次

比较的话: &vars0 - 92 就是 key 的首址,也就是说对输入的字符串每个字节循环左移4次(高4位低4位对调)然后跟byte_3004比较

输入应该是:Do_u_like_ARM_instructi0n?:)

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
泽雨天下 + 1 + 1 算法大神,学习了

查看全部评分

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

 楼主| 发表于 2017-10-13 02:06 | 显示全部楼层
yemoon 发表于 2017-10-13 01:07
sub_2494 : 就是对 a1 循环左移 a2 次
sub_232C : 就是对字符串 key 每个字节循环左移 a2 次

感谢回复,答案正确,原来这个代码是实现了左移.4次和输入看懂了,就是这里没搞懂,大神果然历害!
v3 *= 2;
    if ( v3 & 0x100 )
      v3 |= 1u;

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

 楼主| 发表于 2017-10-13 02:14 | 显示全部楼层
本帖最后由 gunxsword 于 2017-10-13 02:26 编辑
yemoon 发表于 2017-10-13 01:07
sub_2494 : 就是对 a1 循环左移 a2 次
sub_232C : 就是对字符串 key 每个字节循环左移 a2 次

另外一处就是这个^vars0这个,我也没搞懂,没看到他有处理这个变量,但是我猜他可能是利用了地址访问,但是我把这个,-92当成计算的一部分了,我还写了一个程序,用笨方法去暴力破解,但是结果不对,刚刚看了大神的指点,我修改了一下,结果就正确了!

int __fastcall sub_2494(unsigned __int8 a1, int a2)
{
  int v3; // [sp+8h] [bp-8h]@1
  int i; // [sp+Ch] [bp-4h]@1

  v3 = a1;
  for ( i = 0; i < a2; ++i )
  {
    v3 *= 2; ///因为这段没分析明白,所以直接就套用,正向暴力....
    if ( v3 & 0x100 )
      v3 |= 1u;
  }
  return (unsigned __int8)v3;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int key[29]={0x44,0xF6,0xF5,0x57,0xF5,0xC6,0x96,0xB6,0x56,
                0xF5, 0x14, 0x25, 0xD4, 0xF5, 0x96, 0xE6, 0x37, 0x47,
                0x27, 0x57, 0x36, 0x47, 0x96, 3, 0xE6, 0xF3, 0xA3,0x92,0};
    for (int i=0;i<29;i++)
    {
        for (int k=0x0;k<0xfe;k++)
        {
            int t=k;
            for (int s=0;s<4;s++)
            {
                 t=sub_2494(t,1);
            }
            if (t == key)//之前写的是 t+i-92........看了大神解说,把多余的去掉了,就得到了正确的结果!
            //为啥发在这里后,KEY后面的数组标记的代码没有了....key[....i....]
            Memo1->Text =Memo1->Text+(char)k;
        }

    }
}
再次感谢指点,至于这段代码是怎么实现左移的,我再学习学习!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

 楼主| 发表于 2017-10-13 02:20 | 显示全部楼层
*(&var0+i-92)这个也明白了,之前没仔细看,也没想明白,他这个是指针,所有括号内都是地址的一部分!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-10-13 07:40 | 显示全部楼层
单片机啊.... ...毁青春

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则


免责声明:
吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Service@52PoJie.Cn

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2017-12-13 09:17

Powered by Discuz!

© 2001-2017 Comsenz Inc.

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