buoy 发表于 2018-4-13 22:11

CM破解首试

本文旨在使用Reflector来去除原程序的限制,不在于获得源代码。
使用工具:带Reflexil的Reflector v9.0
使用材料:一个.NET CM分析(ReWrit__s_Crackme__8)
https://www.52pojie.cn/thread-19324-1-1.html
(出处: 吾爱破解论坛)

破解要求:
①去除NAG的定时弹框
②显示正确密码到灰色文本框中

破解步骤:
1.使用Reflector的字符串搜索功能定位着手处。
2.从着手处分析代码,处理逻辑,使用Reflexil修改IL指令。
3.运行原程序,分析密码获取逻辑和显示逻辑,结合代码阅读,改变其逻辑,达到破解的要求即可。

详细说明:
1.打开Reflector后,将原程序拖入Reflector,并展开代码,点击搜索工具,选择字符串搜索,在搜索框输入需要搜索的关键字NAG,在匹配列表定位你所要的匹配。定位的匹配即为入手处。


2.在入手处分析代码,可知只需去掉弹框的代码,就可以完成要求①,我们可以使用Reflexil工具修改弹框代码对应的IL指令,使用Nop大法替换掉即可,注意,最后的ret指令不要替换。


3.运行原程序,结合代码阅读,我们不难分析出,密码原本的处理逻辑是》输入正确的密码,显示后续业务,输入不正确,显示Wrong Password。
我们的目的是直接获得密码并显示密码到灰色文本框,这是题目要求②。
那么,我们需要知道两件事情:随机密码在哪里获得和显示密码去哪里显示。
结合运行程序,可知,textBox1就是密码输入框,那么毫无疑问,textBox2就是密码显示框,代码里已经告诉我们num就是正确密码。
现在,已经具备所有要知道的事情了,那么就是开始干了。
怎么干?
还是要用到神器Reflexil工具,使用它,可以轻松改变IL指令,获得我们想要的结果。






4.修改好所有的IL指令后,使用Reflexil工具保存一份Patch即可。

5.运行破解后的Patch程序,验证破解是否达到要求的效果。

运行正常,去掉了NAG弹框效果,点击OK正确显示密码到灰色文本框处。

6.最后,我们还可以去看一下,我们修改后的程序的实际代码,即IL指令修改后的C#代码。




7.附上材料包,包含未破解前的CrackMe和破解后的UnCrackMe。


52lxw 发表于 2019-5-27 10:47

学习 学习
页: [1]
查看完整版本: CM破解首试