算法分析方法,算法分析是什么

  算法分析方法,算法分析是什么

  1.下载并检查外壳

  64位无外壳

  2.拖动到IDA中进行具体分析

  (1)shift F12查找键字符串。

  关键字符串“很好!”被发现了。根据经验,这是验证成功后的提示。

  (2)找到引用关键字符的函数。

  (3)看代码就知道流程了:要求用户输入一个字符串,存储在S中,S的地址作为参数传递给sub_4006FD,sub_4006FD的返回值是调用sub_4006FD函数的if判断条件。如果返回值不为零,会提示“密码不正确!”,所以让sub_4006FD的返回值为0。

  (4)跟进sub_4006FD功能

  看代码可知,只有满足for中的if条件才会返回非零1,但我们要的是返回,所以要让if条件在这11个循环中失败,就要检查条件。

  (char)(v3[I % 3]2(I/3))-(char *)(I a1)!=1

  每个周期v3对应的数组的值加2 (i/3)作为地址,取地址的值。

  每次减去(i a1)地址的值,判断减法的结果是否为1。如果不是1,就继续循环。如果是1,它将返回1。然后我们必须让它在11次后循环回0。仔细看这里的a1,这是我们输入进出main函数的字符串的地址值。所以重点是,我们的目的是如果条件成立就写。

  (char)(v3[I % 3]2(I/3))-(char)(I a1)==1

  对应于如此计算的地址的(i a1)的值是正确的值。

  然后直接写剧本。

  #包括

  int main()

  {

  int I;//[RSP 14h][RBP-24h]int n=0;_ _ int 64 v3[4];//[RSP 18h][RBP-20h]int a1[11]={ 1 };v3[0]=(_ _ int 64) Dufhbmf ;v3[1]=(_ _ int 64)“pg ` imos”;v3[2]=(_ _ int 64) ewUglpt ;for(I=0;i=11I){ for(size _ t n=0;n 222n){ if(*(char *)(v3[I % 3]2 *(I/3))-n==1)a1[I]=n;} } for(size _ t I=0;i i ){ printf(%c ,a1[I]);}}

  变量n定义为我们输入的每个字符对应的ASCLL码值,n的最大ASCLL码值设置为200。通过不断判断(char)(v3[i% 3] 2 (i/3))-n==1,将符合条件的n存放在我们正确的标志数组中。

  3.结果

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: