mcevilrock 发表于 2014-7-8 13:57

Reflector 之reflexil使用

本帖最后由 mcevilrock 于 2014-7-8 19:57 编辑

{:17_1067:}潜水潜了那么久,上来换口气..
昨天和小伙伴一起玩一个CrackMe(C#),打算一起来写KeyGen,他用的是爆破的方法,我修复程序后发现里面常量各种溢出...无奈,只能用reflexil注入方法,然后写出KeyGen.
分享下使用reflexil常用的几个方法..


Reflector 之reflexil使用 先写个简单的控制台程序 工具,添加插件. 选中reflexil 1.6 (1.7从来没附加成功过.不知道为啥..) 一 直接修改操作数 可以直接编辑IL Update 后在程序集中右键 另存程序. 执行刚保存的程序 还可以直接添加IL 接着让后面继续输出二 直接注入IL右键,新建(new Create),填写对应的操作码,选择类型,值得注意的是右边的按钮,append(添加),接着是插入在选择之前,然后是插入在选择之后;别选错了. 注意    注入的时候操作数的类型别选错了.然后继续参照上面的,将程序另存一次. 三 替换代码如果不想折腾IL,直接选择 替换所有代码. 不过这意味着你要重写所有代码(大多数时,我都会用在重写某个方法上)…然后提交一下,他会自动编译, 然后继续参照上面的,将程序另存一次. 提交完成后会自动编译,并且再右侧区域会生成对应的IL.然后继续参照上面的,将程序另存一次. 执行下… 四注入方法 别选错地方了.是你要将方法注入到某个类中,不是注入class所以,一定是在类上右键 暂时只能注入返回值为void的方法 对了,点击OK后会有个该死的提示,这提示的大致意思是:当你在执行,增加,删除,重命名,等动作时,你不会直接看见相应的操作,他们是不同步的.你必须要重新加载程序集才可以看见. 当然,你还需要将程序另存一次.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!然后你需要关闭程序集,接着重新打开刚才另存的现在方法已经注入进去了. 然后我需要给它添加点内容.. 让方法输出个InjectedMethod字符串在方法中添加IL 接着修改Main方法,并且调用刚才注入的方法. 另存下..执行结果. Ps:   如果是替换代码的话,先更改injectmethod时不用实现main方法,只需要修改injectmethod()方法,然后再去修改Main方法.调用时因为injectmethod方法不是static所以需要实例化Program 接下来说说添加有参数,有返回值的方法:先在参数(parameter)标签,中添加一个参数. 然后在属性标签中修改返回值为string. 接着使用替换代码的功能 可以看见方法已经带有参数并且有返回值.修改下这个方法 打印下传进来的名字,并且打印当前时间修改主函数调用 编译,然后不要忘记另存…. Good Job . Have Fun .By McevilRock9-7/2014
打包附件:word文档教程+程序.插件有点大.还是大家自行下载吧.

贱贱的回复可见百度盘(教程+插件)..   http://pan.baidu.com/s/1i320ZHF{:17_1069:}CB,热心..你们在哪里?



Owner_Cracker 发表于 2014-7-9 16:54

mcevilrock 发表于 2014-7-9 16:43
一般我都会把程序直接拆解成文件,然后手动修复拆解出来的错误,这样绝大多数情况下重新编译后不会出问题, ...

正是因为拆解成文件是出错才想直接修改IL的,结果也不行。
导出文件是报:.+: Goto statement target does not exist.
   在 €..(IMethodDeclaration mD, IMethodBody mB, Boolean handleExpressionStack)
   在 €..(IMethodDeclaration mD, IMethodBody mB)
   在 ˆ..(IMethodDeclaration value)
   在 ..(IMethodDeclarationCollection methods)
   在 ˆ..(ITypeDeclaration value)
   在 ƒ..TranslateTypeDeclaration(ITypeDeclaration value, Boolean memberDeclarationList, Boolean methodDeclarationBody)
   在 €..(ITypeDeclaration typeDeclaration, String sourceFile, ILanguageWriterConfiguration languageWriterConfiguration)
导致关键的两个窗口未生成

mcevilrock 发表于 2014-7-9 16:43

Owner_Cracker 发表于 2014-7-9 14:45
你好,请问用Reflexil修改后保存时提示:Reflexil is unable to save this assembly:Writing mixed-mode as ...

一般我都会把程序直接拆解成文件,然后手动修复拆解出来的错误,这样绝大多数情况下重新编译后不会出问题,不过这样是个很累人的事情..

mcevilrock 发表于 2014-7-8 14:06

{:17_1053:}   - - 粘了几个图片还挂了...

9456-XN 发表于 2014-7-8 14:07

膜拜会玩.net的大神,.net相关教程实在少

先前也尝试破解.net写的某全球性节奏游戏,搞的非常蛋疼啊

mcevilrock 发表于 2014-7-8 14:12

9456-XN 发表于 2014-7-8 14:07
膜拜会玩.net的大神,.net相关教程实在少

先前也尝试破解.net写的某全球性节奏游戏,搞的非常蛋疼啊

确实,国内的.net教程都很少..

吾爱新生 发表于 2014-7-8 14:33

很多.net加签名后怎么用这个啊?

mcevilrock 发表于 2014-7-8 14:36

吾爱新生 发表于 2014-7-8 14:33
很多.net加签名后怎么用这个啊?

先去掉强名.这说的不是怎么去强名和去混淆...只是一个插件的使用方法.

索马里的海贼 发表于 2014-7-8 19:07

图全挂了.. 楼主再整理下吧.

mcevilrock 发表于 2014-7-8 20:07

索马里的海贼 发表于 2014-7-8 19:07
图全挂了.. 楼主再整理下吧.

之前太忙了,等有空又发现52打不开了..
现在已修复.

mcevilrock 发表于 2014-7-8 22:41

{:17_1079:}
看来没人喜欢.net破解啊...

吾爱新生 发表于 2014-7-9 14:43

本帖最后由 吾爱新生 于 2014-7-9 14:44 编辑

mcevilrock 发表于 2014-7-8 22:41
看来没人喜欢.net破解啊...
你好,期待继续出NET作品,谢谢!
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: Reflector 之reflexil使用