当前位置: 首页> 健康> 美食 > 新160个crackme -044-tsrh-crackme

新160个crackme -044-tsrh-crackme

时间:2025/7/9 6:27:38来源:https://blog.csdn.net/qq_41483767/article/details/141781944 浏览次数:0次

运行分析

在这里插入图片描述

  • 提示去除NAG

在这里插入图片描述

  • 不去除NAG也能进入主窗口,需要破解Name和Serial

PE分析

在这里插入图片描述

  • ASM程序,32位,壳未知

去除NAG

在这里插入图片描述

  • ida搜索字符串,发现NAG弹窗标题字符串,双击进入函数

在这里插入图片描述
在这里插入图片描述

  • 找到了messagebox,即NAG位置00401079

在这里插入图片描述

  • 打开x64dbg,定位到该位置

在这里插入图片描述

  • ctrl + 9 使用NOP填充

在这里插入图片描述
在这里插入图片描述

  • 点击菜单栏下方的修补按钮
  • 在弹出来的窗口中点击修补文件,另存为1.exe

在这里插入图片描述

  • 打开1.exe,发现NAG去除成功

静态分析&动态调试

在这里插入图片描述

  • 回到ida最底部,对关键函数进行分析,注释如上,还需要对几个未知函数进行分析

在这里插入图片描述

  • sub_4011F3作用是给String赋值
  • String = ‘tsrh-’ + (Name_length+2003) + ‘-’

在这里插入图片描述

  • sub_40122E作用是,将Name每个字符进行计算,结果拼接在String后面

在这里插入图片描述

  • sub_401287的作用是,将Name每个字符串进行和String11位以后得字符进行计算,结果赋值给String第9位之后

在这里插入图片描述

  • sub_4012D8作用是判断Seirl和String前(10+length(Name))位是否相等

算法分析

Name = 'concealbear'
String = 'tsrh-' + str(len(Name) + 2003) + '-'# sub_40122E
for i in range(len(Name)):v4 = ord(Name[i]) + 12String += hex((v4 + v4 - 17 - len(String)) ^ v4)[2:].upper()# sub_401287
Strings = [ord(i) for i in String]
i = 1
while i != 16:if i == 1:j = Strings[i + 11] ^ (ord(Name[i - 1]) + 1)else:j = ord(Name[i - 1]) + 1while j < 65:j += 8while j > 90:j -= 3v2 = i + 9Strings[v2] = ji = v2 - 8if i == len(Name) + 1:breakSerial = "".join([chr(Strings[i]) for i in range(len(Name) + 10)])	      # 取String的前(len(Name) + 10)位print(Name + '的Serial为:\n' + Serial)

在这里插入图片描述
在这里插入图片描述

  • 需要注意的是,验证时要重启程序,否则会因之前内存导致验证失败
  • 重启程序,输入Name和Serial,验证成功
关键字:新160个crackme -044-tsrh-crackme

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: