Dean 发表于 2014-10-20 11:34

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

好了,这课就到这里了

能隐能显 发表于 2014-10-20 12:50

很好的一个教程!

Shark恒 发表于 2014-10-20 12:54

感谢楼主的原创作品,讲解很细致,希望能推出系列教程~{:6_208:}

aska 发表于 2015-6-9 19:17

学习了,说得很详细

小明 发表于 2015-8-7 22:08

Reflector在哪里啊?

凌夏随缘 发表于 2022-5-17 10:17

感谢楼主

zg2600 发表于 2022-6-5 00:59

[吾爱汇编论坛52HB.COM]-谢谢前来学习一下,nice,谢谢,给力非常感谢逆向思路

天使替我爱你 发表于 2022-6-5 01:14

谢谢大佬分享,大佬万福

凌夏随缘 发表于 2022-6-8 14:03

谢谢大佬分享

天使替我爱你 发表于 2022-6-8 21:08

谢谢大佬的热心分享
页: [1] 2 3
查看完整版本: C#逆向教程(2)Reflector使用