CM无壳追码爆破都可以
本帖最后由 xiaoyu2032 于 2021-6-26 13:52 编辑前后分析了6-7个小时,没有成功,先把分析过程写一下,期待大佬指导一下。
1. 根据大佬的提示,找到线程创建位置,发现共创建了3个进程,分别调用的函数入口地址如方框所示,Ctrl+G跳转将后面两个函数在头部Retn掉。这样反调试就干掉了。
2. 跳转到00402F5B,跟踪主进程后,分别得知“请输入注册码”的提示以及获取字符串的函数。
3. 进一步分析,找到了更下一层的函数,跟踪运行过程,可以确定程序在函数00403DC4中完成了字符串的获取和分析,然后密码不正确的时候从指令地址00402F3A处结束进程。file:///Z:/Temp/msohtmlclip1/01/clip_image009.pngfile:///Z:/Temp/msohtmlclip1/01/clip_image010.png
00402F2D和00402F45两个可疑跳转jmp和nop了一下,也没起作用。
4. 跟踪找到了对获取字符串分析的代码位置,单步跟踪发现,此处依次截取字符串的字符,一直到取完后,retn返回到了00402F0F,对返回前存在跳转的代码修改,未找到关键代码。对于此处字符串分析的代码,很疑惑,一般比较字符串是否相同,要么调用函数直接字符串比较,要么依次比较字符,前面的字符相同则进行下一个字符的比较,前面的字符不同的话就直接结束了,而此处不论输入什么字符串,都会从头到位依次截取,感觉逻辑很奇怪。
到这里就没有任何思路了,像这种错误没有任何提示,错误直接结束程序,正确才给提示,但正确也是结束程序,虽然能找到结束程序的代码段在哪里,但是往前找也找不到关键跳转。
提示的字符串是加密的,虽然能查到“请输入注册码”这几个字符串是从内存哪个地址读数据解密出来的,但是因为密码不对,程序根本没有去解密“密码正确”这几个字符串,也是无从下手。在这里找不到提示,也找不到关键函数,大佬能不能给点提示? FuSu_ChunQiu 发表于 2021-6-26 15:54
00402F40这个call,里面有四个call,对应4个判断,需要全部过了才会提示成功
试了一下,将4个JE跳转都改了让四个子函数都执行了,还是不行,另外将第5个跳转也一起改了一下,也不行。是我理解的不对吗?
另外,对于这种将输入正确后的响应分成多次判断,每次完成部分响应的,要按什么思路来分析?其中任何一步没有执行到,可能最终就看不到正确的输出,但是单个子函数的执行过程又没有什么提示信息可以看出来是和正确的输出有关,完全靠猜成功率太低了。 本帖最后由 weikun444 于 2021-6-15 19:52 编辑
随机的反调试?有时F9可以,有时就拜拜了。这个退出把人整疯了{:1_909:}{:1_909:}
本帖最后由 eec 于 2021-6-14 19:43 编辑
weikun444 发表于 2021-6-14 14:35
随机的反调试?有时F9可以,有时就拜拜了。这个退出把人整疯了
正常运行多次:
可能是随机算法写出界了。。(还来得及逆向,仅猜测) 粗略看了下,CreateThread创建线程,跟踪函数,下段,第一个主函数,可详细跟踪验证,第二、三个头部ret……………… 晒晒成果,感谢大佬给出的提示。 就是随便看看 发表于 2021-6-15 07:44
晒晒成果,感谢大佬给出的提示。
厉害呀,真是强悍{:1_921:} 第一个主函数 xiaoyu2032 发表于 2021-6-26 13:50
前后分析了6-7个小时,没有成功,先把分析过程写一下,期待大佬指导一下。
1. 根据大佬的提示,找到 ...
00402F40这个call,里面有四个call,对应4个判断,需要全部过了才会提示成功
页:
[1]
2