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

[原创].net jokeme 2

2007-5-20 22:34
10159

joke me用来揭示一些.net中很有意思的特性,难者不会,会者不难。知道了这些特性,可以让你在软件调试的过程中少走一些弯路。
上一篇:1f6K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0T1M7K6q4Q4x3X3g2H3k6h3c8A6P5g2)9J5k6h3y4G2L8g2)9J5c8Y4y4Z5L8%4N6@1K9s2u0W2j5h3c8Q4x3X3g2H3K9s2m8Q4x3@1k6@1i4K6y4p5y4o6p5@1x3U0c8Q4x3U0k6Z5K9h3N6Z5L8r3W2Y4K9s2c8Q4x3@1c8B7L8$3E0W2i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1$3i4K6S2o6i4K6R3%4i4@1f1#2i4K6R3%4i4@1u0m8i4@1f1@1i4@1u0m8i4K6R3$3i4K6u0W2L8X3g2@1i4@1f1@1i4@1t1^5i4@1q4p5i4@1f1&6i4K6W2p5i4K6W2q4i4@1f1$3i4@1t1K6i4K6V1#2i4@1f1#2i4K6R3#2i4K6R3K6i4@1f1$3i4K6V1#2i4@1t1H3i4@1f1$3i4K6S2p5i4@1q4q4i4@1f1#2i4@1u0o6i4K6V1#2i4@1f1^5i4@1t1#2i4@1t1%4i4@1f1#2i4K6S2r3i4K6S2p5i4@1f1%4i4@1u0o6i4K6V1$3i4@1f1^5i4@1q4r3i4K6V1I4i4@1f1^5i4@1u0p5i4@1q4r3i4@1f1@1i4@1u0n7i4@1t1$3i4@1f1&6i4K6V1@1i4K6V1&6i4@1f1^5i4@1q4r3i4@1q4r3i4@1f1K6i4K6R3H3i4K6R3J5i4@1f1^5i4@1u0r3i4K6V1&6i4@1f1$3i4K6V1^5i4@1q4r3i4@1f1%4i4@1q4o6i4@1q4o6i4@1f1@1i4@1u0m8i4K6S2o6i4@1f1@1i4@1t1^5i4@1q4m8K9X3!0C8k6b7`.`. 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
活跃值: (496)
能力值: (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
活跃值: (496)
能力值: (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
雪    币: 30320
活跃值: (8824)
能力值: ( 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
活跃值: (496)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
10
呵呵,是啊,有提示总能找到问题的。

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

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