首页
社区
课程
招聘
[原创].net jokeme 2
发表于: 2007-5-20 22:34 9956

[原创].net jokeme 2

2007-5-20 22:34
9956

joke me用来揭示一些.net中很有意思的特性,难者不会,会者不难。知道了这些特性,可以让你在软件调试的过程中少走一些弯路。
上一篇:http://bbs1.pediy.com/showthread.php?t=41424&highlight=joke,指出了.net中非法元数据引起反编译软件错误。这是第二个joke me。

难度:低

说明:程序运行会显示一个MessageBox,并显示文本“.net is cool!”。把这段文本改为“.net is very cool!”(将字符串的长度加长)

提示:通常修改.net文件有两种方法,(1)直接修改;(2)反编译后再编译


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (12)
雪    币: 1969
活跃值: (46)
能力值: (RANK:550 )
在线值:
发帖
回帖
粉丝
2
tankaiha的东东当然要试试
附件好像无法正常下载,请楼主检查一下。
2007-5-20 23:02
0
雪    币: 5275
活跃值: (456)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
3
原先是通过网通线路上传的附件,无法下载,这下OK了
2007-5-21 06:24
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
4
运行出错``

显示"应用程序初始化失败...."
不是".net is cool!"
2007-5-21 08:55
0
雪    币: 1969
活跃值: (46)
能力值: (RANK:550 )
在线值:
发帖
回帖
粉丝
5
只会反编译后再编译进行修改 ,直接手工修改没搞定
2007-5-21 10:52
0
雪    币: 5275
活跃值: (456)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
6
提示了直接修改,但是要把字符串长度加大,直接修改有点麻烦,所以再编译比较好。

问题就在再编译里。
2007-5-21 21:17
0
雪    币: 1969
活跃值: (46)
能力值: (RANK:550 )
在线值:
发帖
回帖
粉丝
7
直接修改确实是麻烦,老是顾到了这里就顾不了那里,当然如果不加长的话还是直接修改来的方便快捷。本来还想看看tankaiha怎么手工修改的呢

直接反编译后再编译会报错,但是根据提示可以很轻松地搞定。
// Microsoft (R) .NET Framework IL Disassembler. Version 2.0.50727.42
// Copyright (c) Microsoft Corporation. All rights reserved.

// Metadata version: v2.0.50727
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 2:0:0:0
}
.assembly extern System.Windows.Forms
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 2:0:0:0
}
.assembly joke2
{
// --- 下列自定义属性会自动添加,不要取消注释 -------
// .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 )
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
.custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
.hash algorithm 0x00008004
.ver 0:0:0:0
}
.mresource public
{
// Offset: 0x00000000 Length: 0x0000000E
}
.module joke2.exe
// MVID: {394B36B5-9A54-4870-AE75-533D734AC4EB}
.imagebase 0x00400000
.file alignment 0x00001000
.stackreserve 0x00100000
.subsystem 0x0002 // WINDOWS_GUI
.corflags 0x00000001 // ILONLY
// Image base: 0x04960000

// =============== CLASS MEMBERS DECLARATION ===================
.class private auto ansi beforefieldinit tankaiha.joke2.Class1
extends [mscorlib]System.Object
{
.method public hidebysig static void Main() cil managed
{
.entrypoint
// 代码大小 12 (0xc)
.maxstack 8
IL_0000: ldstr ".net is cool!"
IL_0005: call valuetype [System.Windows.Forms]System.Windows.Forms.DialogResult [System.Windows.Forms]System.Windows.Forms.MessageBox::Show(string)
IL_000a: pop
IL_000b: ret
} // end of method Class1::Main
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// 代码大小 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method Class1::.ctor
} // end of class tankaiha.joke2.Class1

// =============================================================
// *********** 反汇编完成 ***********************
// 警告: 创建了 Win32 资源文件 H:\joke2\dump.res
将上面代码中蓝色的部分注释掉,并且根据要求将红色的部分改成".net is very cool!"后再重新编译即可
2007-5-21 22:49
0
雪    币: 29235
活跃值: (7759)
能力值: ( LV15,RANK:3306 )
在线值:
发帖
回帖
粉丝
8
原来如此。。偶还以为那工具不好使咧(第1次用 ),试半天没试出来。。
2007-5-21 23:34
0
雪    币: 370
活跃值: (15)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
9
.mresource public
{
// Offset: 0x00000000 Length: 0x0000000E
}

幸亏程序比较小,反反复复看代码总能发现猫腻在这里
主要还是不了解.net的PE格式
2007-5-22 00:24
0
雪    币: 5275
活跃值: (456)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
10
呵呵,是啊,有提示总能找到问题的。

程序中加入了一个内置资源文件,文件名改为不可见字符,所以在反编译时无法生成这个文件,自然编译时也就报错了。

虽然这个.net特性不难,也不隐蔽,但会给大型程序的反编译再编译带来一定麻烦。以后程序调试过程中注意既可。
2007-5-22 19:13
0
雪    币: 1969
活跃值: (46)
能力值: (RANK:550 )
在线值:
发帖
回帖
粉丝
11
受教了
期望能尽快见识到楼主的joke3 joke4 ...... joken
2007-5-22 20:52
0
雪    币: 7114
活跃值: (4050)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
内置资源文件是什么加进去的?是手工往PE文件里加的?
2009-11-30 15:07
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
用reflector看是不是这个东西?干吗用的?
上传的附件:
2009-12-1 07:13
0
游客
登录 | 注册 方可回帖
返回
//