破竹而入 发表于 2024-2-15 13:34

写了个CrackMe欢迎尝试

要求正确密码,不能改跳转,顺带请各位老师给点思路。
地址:https://wwf.lanpv.com/iJ4pc1ob9w2f

haier8917 发表于 2024-2-21 22:42

上面的大佬已追出了密码,我在这里补充下算法:::
第一个CALL对吾爱两个字,取UNICODE码,如下:::吾3E54爱3172低前高后分别与58(X)异或,得吾543E异或58=5466,低前高后放入内存为6654,汉字为呦,同理爱7231异或58=7269,低前高后放入内存为6972,汉字为物,所以吾爱3E543172算出第三个call需要的前两个汉字为呦物66546972,输入密码的第一位与第二位进行同样的算法再比较,比较成功返回1并把算出的值传出,第三个CALL用
第二个CALL对解密两个字,取UNICODE码,如下:::解E389密C65B低前高后与分别58(X)异或,得解89E3异或58=89BB,低前高后放入内存为BB89,汉字为覻,同理密5BC6异或58=5B9E,低前高后放入内存为9E5B,汉字为实,所以解密E389C65B算出第三个call需要的后两个汉字为覻实BB899E5B,输入密码的第三位与第四位进行同样的算法再比较,比较成功返回1并把算出的值传出,第三个CALL用
第三个CALL把前两个CALL得到的呦物66546972与覻实BB899E5B进行合并,得呦物覻实66546972BB899E5B,不计算,输入密码的第5-8位也不计算,直接与刚合并的字符进行比较,比较成功返回1,

最后密码::::吾爱解密呦物覻实

lies 发表于 2024-2-15 13:34

密码:吾爱解密呦物覻实
不用搜字符串,随便输入一个密码,弹出错误提示
查看堆栈回溯得知调用了user32.MessageBoxW
向上回溯两级即可看到判断处



进入第一个判断 call login.14040D296
看到将字符串“吾爱”进行加密后在 call login.140402B89 进行比较
不用管算法,将“吾爱”输入密码第一个判断校验成功



同样,从第二个 call 得出第二段密码“解密”
到第三个 call 看不到明文的密码,但用的同一个子程序进行比较
找到 call login.140402B89 指令下断点,此时 rcx 就是指向第三段密码的指针
得到第三段密码“呦物覻实”
三段密码组合起来就是“吾爱解密呦物覻实”

奇思妙想 发表于 2024-2-15 17:26

发现是64位的.我没有环境果断放弃.{:5_118:}

学编程的闹钟 发表于 2024-2-16 11:09

为什么搜索字符串可以搜索到错误,而搜索不到正确呢

破竹而入 发表于 2024-2-16 11:49

学编程的闹钟 发表于 2024-2-16 11:09
为什么搜索字符串可以搜索到错误,而搜索不到正确呢


weekmio 发表于 2024-2-16 11:52

可以改EAX赋值不?我只找到吾爱解密{:6_224:}

学编程的闹钟 发表于 2024-2-16 11:59

破竹而入 发表于 2024-2-16 11:49


cnkx就是正确密码吗

破竹而入 发表于 2024-2-16 12:19

weekmio 发表于 2024-2-16 11:52
可以改EAX赋值不?我只找到吾爱解密

真密码在吾爱解密这两个call里可以看到,我把吾爱解密这四个字分成两份加密了下,然后组合起来的。

破竹而入 发表于 2024-2-17 10:18

当字符串不能搜到时,怎么能准确断点在图片中这关键位置!有大佬说一下吗!!
页: [1] 2
查看完整版本: 写了个CrackMe欢迎尝试