C#逆向教程(2)Reflector使用
上节课没看懂或者跳过的不要紧,这节课会讲人人都会用,人人都能懂的Reflector神器------------------------------------------------------------------------------------------------------------
上节课的例子代码,打开看一下界面
用Reflector打开进行分析
File Open也可以,直接拖拽进来也行
加载后,在左边列表最上级的地方,右键,选择GO TO ENTER POINT(到达程序入口点)
到入口点后,看到RUN(窗体),点击FORM1
点击InitializeComponent();
这个是用来初始化窗体控件的
找到提交按钮,点击进入提交按钮的方法button1_Click
来到了关键判断的地方
打开插件Reflexil(1.6~1.8版本皆可)
看到对应的IL代码
刚开始的时候把精力和注意点都放在跳转上就可以了
这段IL中一共有2个跳转
brtrue.s (17)nop 如果值为true,非空或非零,则将控制转移到目标指令,即(17)nop
br.s (22)ret 无条件的将控制转移到目标指令,即(22)ret
此处brture就是关键判断,之前的方法比对了注册码是否是xuepojie,如果是就为1,不是就是0,然后在和0比较,值相等为1,不等则为0
所以这个地方,如果注册码是正确的话,那就是Equality的结果为1,然后和0比较,不等为0,所以brture不实现,弹窗注册成功
这个地方如果暂时理解不了,想着修改成相反的就能实现逆向也是可以的
把brtrue改成brfalse,只要注册码不是www.xuepojie.com,都能注册成功
当然这样不够完美,如果注册码正好输入是www.xuepojie.com怎么办呢
那么可以用第二种分析方法修改brtrue.s的跳转位置,让他跳到下一句(11)nop,这样无论这个判断是否生效,下一句执行的都是(11)nop
具体用插件的修改方法看图
需要修改的命令上右键,EDIT
如果要修改brtrue为brfalse,直接编辑修改,要改跳转位置,列表中选择
改完之后update
然后在程序的左边目录最上级,右键保存,SAVE AS
好了,这课就到这里了
很好的一个教程!
感谢楼主的原创作品,讲解很细致,希望能推出系列教程~{:6_208:}
学习了,说得很详细 Reflector在哪里啊? 感谢楼主 [吾爱汇编论坛52HB.COM]-谢谢前来学习一下,nice,谢谢,给力非常感谢逆向思路 谢谢大佬分享,大佬万福 谢谢大佬分享 谢谢大佬的热心分享