Matt Pietrek访谈,谈他对.NET的看法及Numega工作情况(英文)

Matt_Pietrek's_PE_Tutorial 很详细的一个PE格式文件说明,喜欢逆向分析的朋友可以看看, 立即下载

 

What do you think about possibility of porting .NET Framework to non-Windows platform? It is

technically possible now? Or there are issues must be solved for this? Do you think we'll see

such port say on Linux. What are your predictions about this?

I think that .NET could be ported to other platforms now, if somebody was so inclined. After all,

MS says they’re considering submitting part or all of it (I forget the exact details) to a

standardization body.

 

If you look at .NET from the standpoint of its runtime classes, its execution engine, and so

forth, you’ll see that there are huge chunks that aren’t tied to any specific CPU and/or OS. A

string class is a string class (hopefully!)

Sure, .NET has things that may not be portable, such as classic COM interoperability. Those

things might not get ported if somebody other than MS was to provide a .NET implementation. That

’s life. Don’t use those features if you’re concerned about writing .NET code that may run on

some non-MS implementation in the future. And truthfully, the same issues exist today with Java

and Unix. If you start using certain cool features specific to some implementation, portability

may bite you.

Will we see .NET on Linux? Truthfully, I don’t know. However, based upon projects such as WINE,

it would surprise me if there were some group of people who really want to put the effort into

making a .NET implementation run on Linux. If so, more power to them.

I was wondering what your opinion is of the future course of Windows CE in light of .Net. I've

taken notice of the fact that Compuware/Numega doesn't seem to have any particular support for

Windows CE in its tools. Some products don't make sense if you can't recover the investment you

make in them, and CE has been a small market I think, but I was wondering what you think the

future holds for CE as a target platform. Will it just be a host for the "compact" version of the

CLR whenever that comes out?
Hmm… good question. Knowing Microsoft, they’ll probably come out (or help hardware vendors)

produce devices that are 100% .NET from the ground up. At the same time, they’ll probably keep

pushing CE for at least awhile. Thinking of it as having two horses in the race. If CE eventually

becomes a big player, then they’d be stupid to drop it. I can also see a case for a future

version of CE hosting a compact CLR implementation. Who knows?

As for Compuware/NuMega support of CE, I know there is/was support for CE in BoundsChecker.

Granted, it probably isn’t everything that CE gearheads could ever want, but at least some

effort was put into it. I’m sure it’s not a surprise that market demands and market share drive

where a company like Compuware/NuMega put their efforts.

I heard that .NET supports COM and Windows API.. And as I think about C# and CLR as I have read

its document,(.NET development environment) it could also support platform independence...

Platform Independence is very important issue and C# aims for it . And other things in .NET also

look like aiming Platform Independence...(XML, SOAP etc...)
Then how can you explain about two contradictory features of .NET framework..?? Platform

Independence versus COM, Windows API support...

I don’t see much of a contradiction. C# is a language. You can write portable code in a

language, and you can write platform specific code in the same language. This has been the story

with the C language for 30 years. There’s nothing in the C# language definitions that I’ve seen

in C# that ties it to Windows. Yet, you can choose to use and/or write C# classes that rely on

features of Windows, or on the underlying hardware platform.

The same basic story goes for the CLR. I can absolutely see it being hosted someday without

Windows underneath it. Yet it has “escape hatches” that let you use Windows, COM, and pretty

much whatever else you need. Microsoft was smart to put them in there, because otherwise they’d

have a huge effort to get people to abandon their existing code. Heck, Microsoft themselves has

this problem. Can you see all of the Office products, and all of the Back Office products being

hosted entirely on .NET within the next year? Without using anything like Pinvoke and COM

interop?

The short answer: You have to be smart about what features you use, if you want portability. This

concept certainly isn’t new with .NET.

What I'd love to hear about is the early days when NuMega was a small shop and you and the team

were scrambling to get the next version out. I know that this isn't really a question, but I've

been using BoundsChecker for ever, and I'd love to hear you recount some interesting stories

about how everything got started. When did you join NuMega? Where you a founder? How did your

role there change over time. I have this impression that you started off writing all the code,

and then somewhere along the line moved into more of a pure research role.
Ah… excellent questions! Let me answer them somewhat out of order.

I joined NuMega in 1993, after being laid off from Borland. I certainly was not one of the

founders, but was well within the first 10 people.

When I joined, there were the two founders, two programmers (one of them off-site), an office

manager, and a sales/marketing guy. A few more great people joined shortly after I did, but it

was still pretty small for the first two years.

The two founders, Jim and Frank, are great guys. I still see them semi-regularly, and live in the

same small town as they do. I wasn’t even formally interviewed. I just talked to them on the

phone on two separate occasions, with most of conversation being about what I’d do to improve

SoftIce. I was totally shocked when they called with a job offer. I certainly felt under

qualified.

The great thing about the early days of NuMega was that it was a very family oriented company. It

seemed that all the families knew each other, and we were always doing things together. We didn’

t work horrible hours either, like most startups do these days. We were all pretty good at what

we did, and we worked pretty normal hours (say, 9-5). If you have good products, and a high

barrier to entry, you don’t have the same pressures that it seems everybody’s under today. As I

recall, we didn’t even bother to track vacation time. Everybody just intrinsically knew that as

long as the job got done, having a lot of formal procedures just got in the way.

When I joined, the primary products were SoftIce for DOS & Windows, and BoundsChecker for DOS. I

jumped right into the middle of the first BoundsChecker for Windows release (you have to recall,

in 1993, this would have been for 16 bit Windows 3.1) My first big job was to write the parameter

validation system. The team was basically Frank, the SoftIce for Windows guru, and myself. You

wouldn’t believe how much of the code was stolen from the DOS products.

After BoundsChecker 1.0 was released, I took over, and was the “lead” for BoundsChecker 2.0.

Saying “lead” is a bit of a stretch, because it was basically myself and the off-site

programmer. The SoftIce/W guy went back to his primary role.

One slightly humorous story is tech support. Back then, if somebody called for support on the DOS

products, they talked to one of the founders. If somebody called for support for the Windows

products, they talked to SoftIce for Windows guy or myself. Later we got dedicated support

people, but it was great getting first hand feedback from the customers on what you did right or

wrong.

When it came time to start the Win32 version, I did all the original core work, and brought Frank

in later to help with his symbol table code. On the UI side, the off-site guy did a ton of work

to convert the 16 bit UI code to 32 bits. Over time, many more great people (including John

Robbins) were hired on, and had the misfortune of working with my code J

I’ve pretty much stayed with BoundsChecker throughout my career at NuMega. Starting with the 16

bit code, through the 32 bit code, and more recently, with my 64 bit work. Luckily, I had 5 years

to learn from my previous mistakes, so most of my recent work has been on a revamped “engine”

for BoundsChecker. It’s this engine that will be used in future 32 and 64 bit versions of

BoundsChecker. This same engine also includes .NET support. It’s great being able to start from

a clean sheet of paper!

Besides my BoundsChecker related work, I’ve also moved into other areas, including research. The

engine I just mentioned started out as a research project. Other research areas might include

technology assessments, competitive analysis, and pretty much any area where I can provide

reasonable value to the company. I still think of myself as a coder at heart, though.

How do you manage to stay ahead of the curve?
Can a regular programmer guy like myself that works most of the day at work, and has a full

home-life, with a wife, and a commute to work, and a yard to mow, stay ahead of the curve like

you do?

It’s funny that you’d think I’m ahead of the curve, since I feel perpetually behind it. I try

to have a “normal” family life with my wife, 2 year old, and house. To try to balance my life,

I don’t work 14 hour days at work, and try to stay off the computer when I’m at home. Sure,

sometimes I have to focus intently at home (when writing a column for instance), but I certainly

don’t live in front of the computer like I used to.

So… I have to pick my battles carefully. I realize that there are just some areas that I won’t

have the time to learn. I know my strengths, and try to keep myself up to speed in at least those

areas. I also have the advantage of being an “architect” at NuMega. Because I’m supposed to be

keeping up with what’s coming down the pike in the future, I can usually leverage that knowledge

to help guide me in my outside activities such as my columns.

What kind of topics do you think you will cover in the future if .NET takes off. Will you

(un)cover IL and the JIT, for example? How important do you feel Win32 will be in the future?

Will there always be a place for those who know the Win32 API like the back of their hand?
Good questions! I’m already basically up on the underpinnings of .NET, but still have a lot to

learn. A lot of great info (such as the IL) is already documented. You just have to dig a little

to find what you’re after. There’s just so much to try to understand at once!

A lot of what I do is just taking existing documentation, and putting my own spin on things.

Unlike somebody who’s trying to write documentation for an entire API, I have the luxury of

picking an area to focus on. I can choose what I feel the important points are, and focus on

making those points as clear as possible. So, yes, I do figure I’ll be covering JITting and IL,

but it won’t be till I know enough to talk intelligently about them. I also don’t want to jump

the gun, and be writing about things that are in flux, and that many people may just not be ready

for.

As for the Win32 API, I think it will continue to be important. It’s not so much the API, as it

is the knowledge of all the layers in a system, and how they integrate. I’ve said this before,

but it bears repeating again: Software is written in layers. The more you understand about the

layers, the more valuable you’ll be, both as a coder, and when it comes time to debug. I don’t

consider myself a particularly great coder. What I do know is how most of the system fits

together.

PEDUMP - Matt Pietrek PEDUMP - Win32/Win64 EXE/OBJ/LIB/DBG file dumper - 2001 Matt Pietrek PE 文件分析器,包含两个版本的源代码. 本文件来自网上. 立即下载

相关推荐

逆向与破解-windows异常处理机制

以前看到过的很棒的一个讲解SEH的,非常的详细和简单易懂,不需要特别纠结具体的结构和处理的方法,初期对过程有一定的掌握就可以。以下为原文 深入解析结构化异常处理(SEH) - by Matt Pietrek 尽管以前写过一篇SEH相关的文章《关于SEH的简单总结》, 但那真的只是皮毛,一直对Windows异常处理的原理似懂非懂, 看了下面的文章 ,一切都豁然开朗.1997年文章,Window...

iamsongyu的博客 2920

Matt Pietrek 讲解SEH的巨牛文章,留下来慢慢研究

A Crash Course on the Depths of Win32 Structured Exception Handling Matt Pietrek 著 董岩 译原文:http://www.microsoft.com/msj/0197/exception/exception.aspx 在Win32操作系统提供的所有功能中,使用最广泛而又没有公开的恐怕要数结构化异常处理(Struct...

weixin_34414650的博客 327

深入解析结构化异常处理(SEH) - by Matt Pietrek

深入解析结构化异常处理(SEH) - by Matt Pietrek

dvlinker的技术专栏 5万+

Windows XP下的向量异常处理

Windows XP下的向量异常处理   作者:Hume/冷雨飘心·发布日期:2002-8-9· 原作名称: Vectored

xyblack技术地带 589

中断和异常

中断和异常 本文是MattPietrek在1997年月10月的MSJ杂志UnderTheHood专栏上发表的文章。中断和异常在DOS时代是整个系统的灵魂,但Windows已将其隐藏到了系统深处。MattPietrek详细剖析了Windows下的中断和异常及其处理机制以及内核模式与用户模式代码之间调用的问题。作者还提供了一个比较有意思的实验程序。 注:附...

weixin_34319111的博客 490

Matt Pietrek访谈他对.NET看法Numega工作情况英文()

Matt Pietrek访谈他对.NET看法Numega工作情况英文()[@more@] What do you think about possibility of porting .NET framewo...

cuiji1279的博客 117

Matt Pietrek先生的《深入探索PE文件结构》

<br />网址:http://www.360doc.com/content/10/0113/14/59579_13431451.shtml<br /> <br />译者是姜庆东先生

百里鹤的专栏 3066

Windows程序调试----第三部分 调试技术----第8章基本调试技术

第三部分调试技术 第8章基本调试技术     本章回答了很多Windows下调试程序的常见问题,主要是基本的调试技术。所以它看起来可能有点像Windows调试常见问题解答,其中很多是我在调试新闻组里见到的问题。 8.1普通调试技术 我应该采取什么步骤使得我调试代码的能力最大?     请釆取以下步骤:     •重定位你的程序的可执行代码以防止虚拟地址空间冲突。关于虚拟地址空间冲突和重

tiewen的专栏 3118

Matt Pietrek

http://www.glamenv-septzen.net/view/768  Matt Pietrek氏MSJ私家版PDF Matt Pietrek氏のMicrosoft System Journalの記事で、個人的にPDFに変換した記事:  Jan 1997, SEH(構造化例外処理)のコンパイラレベル・OSレベルでの内部動作紹介 http://w

thtfpcuser的专栏 1094

NT 中的异常帧结构和异常嵌套

冲动是魔鬼本文是《对于结构化异常处理(SEH)的进一步探索》的姊妹篇。所以,如果不先看看那篇文章的话,本文八成会给人不知所云的感觉。但是,那篇文章也是基于 Matt Pietrek 的 《深入研究 Win32 结构化异常处理》的,所以在那篇文章的开头也会强烈建议先看看 Matt Pietrek 的文章——那么我就在这里先打个招呼,免的首先翻到这篇文章的同志有可能会觉得我不厚道 :-p 我本想写完那

Victor 的专栏 1752

Windows系列

 Windows系列:Windows程序设计:SDK,MFC,VxD,COM 程序设计1.Windows程序设计:C,Win32API,SDK 等;2.Windows面向对象程序设计:C++,Visual C++,MFC 等;3.Windows操作系统:Win3.X,Win9X,WinNT,Win2000 等;4.Windows设备驱动程序设计:VxDs,WDM 等;5.Windows组件程序

ncsidy0324的专栏 985

转贴一篇Matt Pietrek的关于SEH的文章

2007年02月10日 19:26:00 全文比较长,链接在这里:http://www.microsoft.com/msj/0197/exception/exception.aspxTrackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1507128

秦梦瑶的专栏 637

.NET新特性·第17篇】EF Core 10 与 Aspire 13.1

EFCore 10 引入复杂类型JSON映射、命名查询过滤器、批量操作增强等特性,提升数据访问效率与灵活性;Aspire 13.1深化Azure/AWS集成,支持Redis作为LLM缓存,Dashboard可观测性升级,助力云原生与AI应用开发。

hanzhixintianxia的博客 247

微软技术日报 2026-09-10:Project Zenith 开发者设备亮相,.NET 11 RC1 可投产

今天的微软把重心放在「开发者的一公里」:设备端(Project Zenith)、运行时(.NET 11 RC1)、模型层(Copilot 多模型矩阵)三层同时发力,开发者环境从"自己搭"走向"买来就能写"。参考来源:微软官方博客(Project Zenith)、.NET 官方发布说明、TechRepublic、腾讯新闻科技频道、第一财经、IT之家。本文由 AI 辅助整理,仅覆盖技术动态,不含财务信息。

海盗Sharp的博客 442

基于.NETWindows窗体编程之WinForms自定义控件(1)

本文介绍在.NET WinForms开发中如何创建自定义控件,重点讲解用户控件(UserControl)的实现。通过封装一个可清除文本框(ClearableTextBox),演示了属性公开、事件转发与逻辑封装的完整流程。该控件包含标题、输入框和清除按钮,支持外部访问属性与事件响应,实现复用性与维护性提升。示例展示了控件在窗体中的应用及联动逻辑,适用于复杂界面组件的模块化设计,为后续扩展控件与自定义控件学习奠定基础。

绳锯木断,水滴石穿,专心写文,无问西东!!! 412

.NET 9.0 项目升级到 .NET 10.0

关于.NET项目升级到.NET10的步骤,包括改目标框架、重新生成、升级NuGet包、处理版本冲突等。 本文介绍.NET项目升级至.NET10.0的完整流程:修改目标框架、重新生成、升级NuGet包,并处理包版本依赖冲突问题。提供详细操作指南与参考文章,帮助开发者顺利完成升级。

csdn_aspnet的专栏,请点击博客主页右上角三个点中的私信联系 428

找不到指定的SDK(Microsoft.NET.Sdk.Web“)

应对既将开始的U9客开始的工作,重新安装主机的操作系统,配套了U9的demo环境。不小心装成了x86 32位的系统,带来2个问题。1、网卡驱动有问题。2、VS在创建新项目时,竟然出现标题所示的错误提示,项目也不能正常创建成功。如果 PATH 中 x86 路径排在前面,系统会调用 x86 版本的 dotnet.exe,而该目录下可能没有 SDK,就会报找不到 SDK。如果 PATH 中 x86 路径排在前面,系统会调用 x86 版本的 dotnet.exe,而该目录下可能没有 SDK,就会报找不到 SDK。

yujunl的专栏 174
cccc2002
博客等级 码龄25年 1粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值