50.逆向破解分析实战17:160crackme之005(01):破解文件校验-汇编语言社区论坛-技术社区-学技术网

50.逆向破解分析实战17:160crackme之005(01):破解文件校验

第一关:文件校验

图片[1]-50.逆向破解分析实战17:160crackme之005(01):破解文件校验-汇编语言社区论坛-技术社区-学技术网

由于不清楚软件到底是什么行为能够注册成功

所以我们只能先自己寻找字符串挖掘线索

图片[2]-50.逆向破解分析实战17:160crackme之005(01):破解文件校验-汇编语言社区论坛-技术社区-学技术网

通过交叉引用,找寻到了成功提示调用的位置

从而发现了一处关键的校验:

result[193] != 0xC34 && result[194] != 0x230D && result[196] == 0xF94

图片[3]-50.逆向破解分析实战17:160crackme之005(01):破解文件校验-汇编语言社区论坛-技术社区-学技术网

分析 0xC34

查找赋值写入的位置

图片[4]-50.逆向破解分析实战17:160crackme之005(01):破解文件校验-汇编语言社区论坛-技术社区-学技术网

图片[5]-50.逆向破解分析实战17:160crackme之005(01):破解文件校验-汇编语言社区论坛-技术社区-学技术网

发现两处写入的位置实则为一个函数体内

图片[6]-50.逆向破解分析实战17:160crackme之005(01):破解文件校验-汇编语言社区论坛-技术社区-学技术网

ASSIGN

  • ASSIGN() 是 Delphi 中的 AssignFileAssign 函数,对应:
AssignFile(F, '路径字符串');
  • v10 是 Delphi 的一个 TextFileFile of ... 类型变量(或者文件记录结构体指针)
  • ASSIGN(v10, &str_X__ajj_126_c0m_[1]); 是在将文件变量 v10 绑定到一个路径字符串上,路径是 "F:\ajj.126.c0m\j\o\j\o\ok.txt"

图片[7]-50.逆向破解分析实战17:160crackme之005(01):破解文件校验-汇编语言社区论坛-技术社区-学技术网

RESETTEXT

  • ASSIGN(...) → 把文件变量 v10 关联到一个磁盘文件路径。
  • RESETTEXT(...) → 把这个文件以文本读取模式打开,准备从里面读取数据。
  • 常常使用IOResult检查是否打开成功

图片[8]-50.逆向破解分析实战17:160crackme之005(01):破解文件校验-汇编语言社区论坛-技术社区-学技术网

IOResult

如果操作成功,返回值为 0

Delphi 中 IOResult() 返回 0 表示操作成功,非 0 表示错误码。

图片[9]-50.逆向破解分析实战17:160crackme之005(01):破解文件校验-汇编语言社区论坛-技术社区-学技术网

分析二次校验

图片[10]-50.逆向破解分析实战17:160crackme之005(01):破解文件校验-汇编语言社区论坛-技术社区-学技术网

读取 v10 文件里面的字符串

其中 v10 里面是"F:\ajj.126.c0m\j\o\j\o\ok.txt"

也就是读取这个 txt 文件的字符串

最终和str__ajj_____CKme___作比较

图片[11]-50.逆向破解分析实战17:160crackme之005(01):破解文件校验-汇编语言社区论坛-技术社区-学技术网

通过分析得知,文件内容为

ajj写的CKme真烂!+文件末尾 0xFF,0xFF

破解绕过二次校验

思路很简单,在对应的文件夹新建文件,然后写入字符串即可

  • 写入 0xFF 可以用 winhex 工具
  • 注意 txt 文件需要保存为 ANSI 格式

图片[12]-50.逆向破解分析实战17:160crackme之005(01):破解文件校验-汇编语言社区论坛-技术社区-学技术网

破解结果

界面变化了,出现新的转机

图片[13]-50.逆向破解分析实战17:160crackme之005(01):破解文件校验-汇编语言社区论坛-技术社区-学技术网

请登录后发表评论

    没有回复内容