Wim快速窗口隐藏精灵两种方法破解
本教程由学逆向Thx赞助播出(“哎呀我摔倒了要你们评分Thx给我才能起来{:5_187:}”)逆向前言:程序永远没有表面那么简单
逆向正文:
一来的话就有这个信息框,不多说话先返回去看看代码,,,
这时候第一反应,不要以为是Demo,先不要下是Demo的结论好吧?因为没这么Demo给你用,,
应该来说,放demo版的作者还是占少数,如果你运气真的不好,遇到了demo那我真没什么可说
首先来说,你第一反应,不应该以为是demo,而应该以为真正的代码还在上一层或者上两层,,这是经验
所以,继续跟retn返回即可
像这个代码就正常了嘛,,
所以,他这个程序实际上是有两个判断点
第一个判断是否有注册信息,第二个又判断是否到期,这里的“过期”是我自己手动注释的
讲道理像我这种英语水平低的人,因为这个程序走了太多弯路
我根本没想过“Expired”是过期的意思,,我一直以为它是错误的意思
所以,吾爱汇编论坛必须好好学英语,,真心话,,相信我没错
这时候先不方,先在这几个cmp里面都下好断点,然后看一下eax+10和eax+D的值到底是什么
然后再看下一个
两者刚好都为0,这时候分析代码
005B0CB2|.8078 0D 00 cmp byte ptr , 0x0 ////1
005B0CB6|.75 22 jnz short 005B0CDA
005B0CB8|.A1 ECE25B00 mov eax, dword ptr
005B0CBD|.8078 10 00 cmp byte ptr , 0x0 ////2
005B0CC1|.75 17 jnz short 005B0CDA
005B0CC3|.8D4D FC lea ecx,
005B0CC6|.33D2 xor edx, edx
005B0CC8|.B8 300D5B00 mov eax, 005B0D30 ; NotReggedInfo
005B0CCD|.E8 7EC8F6FF call 0051D550
005B0CD2|.8B45 FC mov eax,
005B0CD5|.E8 BAFFFCFF call 00580C94
005B0CDA|>A1 ECE25B00 mov eax, dword ptr
005B0CDF|.8078 10 00 cmp byte ptr , 0x0 ////3
005B0CE3|.74 17 je short 005B0CFC
这时候先看1,假设1跳了,那么如果在别的地方有验证2,那么单纯改1也没用,要改的话得两者一起
所以先这样想,首先是1是判断是否有注册信息,那么2和3,应该是判断是否过期
大概的思路要理清晰,这样你才好下手改,对吧
那么我们大概知道了,,所以,应该先去找这个程序所有调用eax+10和eax+D的点,看一下里面的代码是否都是和这里的差不多
比如他这里是eax+10是否为0,如果为0则jnz不跳,就到了过期
所以,主要我们是看别的调用点下面是否也是jnz,如果是je的话,那我们这样一改就完,,还是逆向失败
然后我们先从程序最初访问这个地址的点开始,,把握住最好的修改时机
下内存访问断点这个我就不多说了,,不懂的去找我以前的帖子看
下面这个过期时间点,我等会再解释,先看逆向吧,这里有被mov,但是当我们改1的时候,这里又发生了这样的事
他这里很明显,我们改1的话,这里又过不去,,因为你改1,两者值不相等,就提示你到期了,,
可是这里的话,应该就必须要跳了,所以这里改1
当我们走到之前那个分析的点的时候,上面不是有两个判断嘛?
005B0CB2 8078 0D 00 cmp byte ptr , 0x0 ///就是说这里eax+D的值要为1,那么下面的jnz就会跳
005B0CB6 75 22 jnz short 005B0CDA
005B0CB8 A1 ECE25B00 mov eax, dword ptr
005B0CBD 8078 10 00 cmp byte ptr , 0x0 ///这里的话我们先暂时不动,就eax+10的值先不改,看看会发生什么
005B0CC1 75 17 jnz short 005B0CDA
005B0CC3 8D4D FC lea ecx, dword ptr
005B0CC6 33D2 xor edx, edx
005B0CC8 B8 300D5B00 mov eax, 005B0D30 ; NotReggedInfo
005B0CCD E8 7EC8F6FF call 0051D550
005B0CD2 8B45 FC mov eax, dword ptr
005B0CD5 E8 BAFFFCFF call 00580C94 ; 过期
005B0CDA A1 ECE25B00 mov eax, dword ptr
005B0CDF 8078 10 00 cmp byte ptr , 0x0
005B0CE3 74 17 je short 005B0CFC
然后发现界面的10天后过期没了,,接着使用里面的功能
这里是功能验证的一个点
箭头这里的10天后过期没了
功能用法:先在这里随便勾选一个窗口,我选择的是windows 任务管理器,然后点添加选定类
再去箭头中的隐藏的窗口,点一下隐藏按钮即可
如果没问题的话,窗口直接被隐藏了,再点一下显示窗口又可以显示了
然后这个程序就被我们这样改一处搞定了,本来是有两处判断,但是我们只改了一处,另外一处不管
如果有问题的话,再用内存访问断点一个一个去排除,因为软件功能单一,所以排查起来很简单的
接着我们来解决一下我刚刚埋的坑,程序过期点
之前也说了,这个程序他提示10天后过期,那么也就是说试用时间只有10天
但是我们又不能直接等10天的,等他过期对吧?所以我们先发制人,,看看是否可能直接Patch这个10天呢?
说干就干,先找到字符串
我对这个字符串起疑,一开始是因为我去查了那个Expired是过期的意思,然后这个程序有一个10天后过期
接着,刚好这个单词又有一个daysleft,虽然我英语水平不高,但是大概觉得跟时间有关,所以刚好来测试一下
这里注意,你数据窗口要用unicode查看,看ascll是看不出的,,
**** Hidden Message *****
新年快乐~~ 开始还说自己不会做图文教程,现在图文教程比谁做的都好。{:5_121:} Shark恒 发表于 2017-1-6 20:30
新年快乐~~ 开始还说自己不会做图文教程,现在图文教程比谁做的都好。
只会吹牛逼不会做图文 有点意思 图文教程最好的大力支持你! 谢谢了支持啊 感谢楼主分享 这个看了学学还是不错的 我倒不赞成楼主说的需要学英语,比如我的英语就不行,现在逆向照样玩,哈哈,逆向这东西主要是多练,呵呵 挺吊的样子最近感觉论坛人少了没有评分了 好像一处给值就完美爆破了