逆向第二课(逆向第一个.NET程序)

注:本文只演示如何破解,并不讲解原理,原理以及具体名词将在后续文章中详细讲解

一、编写第一个.NET程序(HelloWorld.exe)

既然要逆向.NET程序,我们就首先要有这个.NET程序,通过以下的步骤,将详细介绍如何编写一个.NET程序,并逆向分析其内部实现原理!

1.首先在开始编写程序前,需要安装.NET 2.0框架,框架下载地址:http://www.cr173.com/soft/25219.html

2..NET2.0框架安装完成之后,打开一个记事本,在里面写入如下代码,并且保存为HelloWorld.cs到桌面上

using System;
class Program
{
public static void Main()
{
Console.WriteLine("HelloWorld");
Console.ReadLine();
}
}

3.运行cmd工具,输入”cd C:\Windows\Microsoft.NET\Framework\v2.0.50727”并敲回车

4.输入”csc ”并且将说面上我们刚才创建的HelloWorld.cs文件拖放到cmd窗口,如图

5.敲回车,之后我们的程序就编译完成了

6.编译后的程序,在路径”C:\Windows\Microsoft.NET\Framework\v2.0.50727”下,名称为”HelloWorld.exe”

7.我们双击运行该程序,将在界面上输出“HelloWorld“字样

二、逆向HelloWold.exe

1.打开目录” C:\Program Files\MicrosoftSDKs\Windows\v7.0A\bin”下面的Ildasm.exe文件

2.将刚才编写的”HelloWorld.exe”文件拖入Ildasm中

3.点击文件—转储,之后会弹出转储选项,直接点击确定,将转储后的IL文件,保存到桌面的新建文件夹里。

4.用记事本打开我们的”HelloWorld.il”文件,找到”HelloWorld”

5.修改”HelloWorld”为,”这是我破解的第一个程序”,并且保存文件

6.在cmd中输入”cd C:\Windows\Microsoft.NET\Framework\v2.0.50727”

7.输入” ilasm /resource=”之后将文件”HelloWorld.res”和” HelloWorld.il”拖入CMD窗口中最后如图所示

8.敲回车,提示我们successfully证明成功了

9.IL代码所在的文件夹中会为我们新生成一个”HelloWorld.exe”文件。运行我们重新生成的”HelloWorld.exe”,输出了”这是我破解的第一个程序”

 

By:凉游浅笔深画眉 QQ:381400744

       2015.03.06

时间: 2024-11-16 06:50:14

逆向第二课(逆向第一个.NET程序)的相关文章

【C++探索之旅】第一部分第三课:第一个C++程序

 内容简介 1.第一部分第三课:第一个C++程序 2.第一部分第四课预告:内存的使用 第一个C++程序 经过上两课之后,我们已经知道了什么是编程,编程的语言,编程的必要软件,C++是什么,我们也安装了适合自己的一个IDE(Integrated Development Environment,就是"集成开发环境"的意思). 如果你真的要开始在Linux下编写程序,除了使用IDE之外(IDE集成了文本编辑器,编译器,调试器,运行程序等),也可以选择另一种难一些的方式:自己用某一种文本编辑

《Netty In Action中文版》第二章:第一个Netty程序

注:本篇内容出自<Netty In Action>一书:         注:本人原创译文,转载请注明出处! 本章介绍 获取Netty4最新版本 设置运行环境来构建和运行netty程序 创建一个基于Netty的服务器和客户端 拦截和处理异常 编写和运行Netty服务器和客户端 本章将简单介绍Netty的核心概念,这个狠心概念就是学习Netty是如何拦截和处理异常,对于刚开始学习netty的读者,利用netty的异常拦截机制来调试程序问题很有帮助.本章还会介绍其他一些核心概念,如服务器和客户端的

软件测试第二次作业 - 写一个Java程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示。

题目一: 1. 写一个Java程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示.(单词之间用空格隔开,如“Hello World My First Unit Test”): 2. 编写单元测试进行测试: 3. 用ElcEmma查看代码覆盖率,要求覆盖率达到100%. Demo类: 1 import java.util.HashMap; 2 import java.util.Iterator; 3 import java.util.Map; 4 import java.

Android逆向实例笔记—破解第一个Android程序_crackme02

本实例来源于<Android软件安全与逆向分析>这本书,作者是看雪的非虫,感谢提供这么好的书和实例. 一.工具 干什么都得一个好工具对吧. 1.apkIDE 反编译呢,我这里使用的是apkIDE(apk改之理),工具的话自己百度吧.个人不喜欢留一些不需要的东西在网盘里,难得整理,百度一大堆.我这里就给一个官网吧,免得有些童鞋找错了地方.现在这下下载网站一不小心,什么全家福都来了.好了,扯得有点远了.我用的就是最新版,我个人就喜欢最新版.(最新版可能有些问题) http://www.popotu

管理者的角色修炼-第二课总结

一.前言 第二课历时两天,主要讲了团队从招人到高绩效的各个阶段的特征,有什么问题,如何解决!结合我自己的亲身经历,反思后印证着去看,还是很有收获. 二.开场的一件小事 第二课换了一个有着男性名字的女老师,其实大家对老师的男女没什么太多的想法.但老师在开场做自我介绍后,大家对其的第一印象和行为就出现了比第一课老师不一样的东西. 问题就出在这个自我介绍上.老师介绍完的自己的名字后,说其有20多年的工作经验了:08年之前在一个外企工作,这中间,正好遇上了奥运会需要培训3000名员工和志愿者:这之后,跳

JavaWeb学习总结第二篇--第一个JavaWeb程序

JavaWeb学习总结第二篇—第一个JavaWeb程序 最近我在学院工作室学习并加入到研究生的项目中,在学长学姐的带领下,进入项目实践中,为该项目实现一个框架(用已有框架进行改写).于是我在这里记录下我JavaWeb学习的过程,加油! 我们在第一篇中提到了开发JavaWeb程序需要的一些工具,在安装完成后(请朋友们自行网上查找安装步骤和配置),接下来我以图片形式介绍编写JavaWeb程序. 一:创建Web项目 1.打开IntelliJ IDEA->File->New Project 项目创建完

Winform and WPF 第二遍双击快捷方式或应用程序打开原来的应用程序而不新建一个实例[进程通信 1]

private void Window_Loaded(object sender, RoutedEventArgs e)         {             Process[] pro = Process.GetProcesses();             int n = pro.Where(p => p.ProcessName.Equals("进程名称")).Count();             if (n > 1)             {      

学习 Python 第二课:用户交互程序

Author:uljfangbr/>E-mail:[email protected]Mentor:Liu YouyuanTime:2018-3-25 要求:1.用户输入相关信息2.打印出如下格式: ----------INFO: NAME ----------NAME:AGE:JOB:SALARY: #! usr/bin/env python #Author:uljfang #E-mail:[email protected] #Mentor:Liu Youyuan #Time:2018-3-25

【C语言探索之旅】 第三部分第二课:SDL开发游戏之创建窗口和画布

内容简介 1.第三部分第二课: SDL开发游戏之创建窗口和画布 2.第三部分第三课预告: SDL开发游戏之显示图像 第三部分第二课:SDL开发游戏之创建窗口和画布 在上一课中,我们对SDL这个开源库做了介绍,也带大家配置了SDL的开发环境.请大家按照上一课的步骤创建一个SDL工程,能够初步运行. 如果遇到问题,可以百度,Google相关平台SDL的配置.或者联系小编. 当然了,有些朋友可能会说开发C语言游戏还可以用GTK+这个库,但是个人认为GTK+没有SDL那么适合开发游戏,其创建图形界面的能