初吻给奶嘴耶 发表于 2019-1-23 16:25

64位CM

成功图

附件里面有2个版本 一个是带debugger检测 一个普通的cm

带debugger检测的 不会提示也不会退出 检测到调试器后改变算法

无壳64位CM


理论上应该没多少人愿意做我混个脸熟也好 {:1_909:}

梦游枪手 发表于 2019-1-24 13:18

本帖最后由 梦游枪手 于 2019-1-24 15:31 编辑

能力有限,逆向的是不检测调试器的,程序启动后会调用两次GetTickCount相减,然后加上当前分钟,结果记为val吧


之后读取输入的整数,并减去这个val,截断成char,对’su_ _e_ _‘进行补全,上面得出的char会填入前面两个空,后面两个空是对char+0x10后再填入(也就是's'),所以结果等于0x63(‘c‘)就算成功,这个也可以从后面的判断看出来


所以,只要输入的数字减去val的结果的最后一个字节等于0x63就行了,只不过每次都要去调试器拦截val的值才能得出结果

初吻给奶嘴耶 发表于 2019-1-23 17:54

{:1_900:}挂个一些时日到时候把 实现原理贴上来代码不多(杂七杂八 80行左右) 主要是用了一些开源的宏

刚刚自己分析找到了一处爆破点

明明是我先 发表于 2019-1-24 13:00

很不错的分享啊,十分感谢感谢了

初吻给奶嘴耶 发表于 2019-1-24 13:28

梦游枪手 发表于 2019-1-24 13:18
能力有限,逆向的是不检测的调试器的,程序启动后会调用两次GetTickCount相减,然后加上当前小时,结果记为 ...

厉害了老哥 完全正确可能是你结构体没看对 SYSTEMTIME的分钟

检测调试器的其实并没有什么套用之前的AntiDbg的库而已
主要是加了个骚操作 是初始化失败 改变了一下val值检测到了又改变一次   其他不变
你既然这个分析出来了 那个其实是一样的

大神666

梦游枪手 发表于 2019-1-24 15:01

初吻给奶嘴耶 发表于 2019-1-24 13:28
厉害了老哥 完全正确可能是你结构体没看对 SYSTEMTIME的分钟

检测调试器的其实并没有什么套用之前 ...

哈哈,那里确实看错了,我编辑一下,大神还是不敢当:lol

堂前燕 发表于 2019-1-24 15:07

唉,搞不定,只能改呀改,
页: [1]
查看完整版本: 64位CM