首页
社区
课程
招聘
未解决 [求助]不太清楚这个函数是怎样确定i值的范围的,求大侠帮个忙,真的非常感谢
发表于: 2018-10-22 21:18 1501

未解决 [求助]不太清楚这个函数是怎样确定i值的范围的,求大侠帮个忙,真的非常感谢

2018-10-22 21:18
1501

不太清楚下边这个函数是怎样确定i值的(范围从0-20就行),求大侠帮个忙,真的非常感谢

最下面的我写的python脚本  求出来三个值  不知道对不对

__int64 __fastcall sub_400C41(int i)
{
  __int64 result; // rax

  if ( 4 * (i >> 2) != i || 4 * (i >> 4) == i >> 2 || (result = (i >> 3), !result) || i >> 4 )
  {
    puts("invalid username or password");
    exit(0);
  }
  return result;
}

我写的代码
for i in range(1,20):
        if 4 * (i >> 2)== i and 4 * (i >> 4) != i >> 2:
                if i << 4:
                        if i << 3 != 0:
                                print i
#4,8,12



[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 1534
活跃值: (495)
能力值: ( LV4,RANK:52 )
在线值:
发帖
回帖
粉丝
2
真的特别感谢
2018-10-22 21:19
0
雪    币: 211
活跃值: (118)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

defsub_400c41(i):

''' 只有8,12才返回,其他会退出 '''

  if(4*(i>>2) != i or4*(i>>4) == i>>2or i >>4):

#i必须是4的整数倍,但必须大于4,不能是16的整数倍,i必须小于16

    print("invalid username or password");

    return 0

   result = (i>>3)

   if(not result): #,表达式,i>=8,为0,反之为1,当i<8,返回

      print("invalid username or password")

     return0

   return result


for i inrange(20):

  ifsub_400c41(i):

    print(i)

最后于 2018-10-22 23:10 被孤山散人编辑 ,原因:
2018-10-22 22:39
0
雪    币: 211
活跃值: (118)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
4是不对的,
 (result = (i >> 3), !result)     小于8的数,这个表达式就返回1 了。
2018-10-22 23:03
0
雪    币: 1534
活跃值: (495)
能力值: ( LV4,RANK:52 )
在线值:
发帖
回帖
粉丝
5
孤山散人 4是不对的, (result = (i >> 3), !result) 小于8的数,这个表达式就返回1 了。
非常感谢  
2018-10-26 14:03
0
游客
登录 | 注册 方可回帖
返回
//