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

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

2018-10-22 21:18
1372

不太清楚下边这个函数是怎样确定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



[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 1526
活跃值: (434)
能力值: ( LV4,RANK:52 )
在线值:
发帖
回帖
粉丝
ilanlanya 2018-10-22 21:19
2
0
真的特别感谢
雪    币: 211
活跃值: (103)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
孤山散人 2018-10-22 22:39
3
0

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