Re: Wine disassembly and reverse engineering rules.

2007-08-07 Thread Jesse Allen
On 8/7/07, Jakob Eriksson <[EMAIL PROTECTED]> wrote:
> James Hawkins wrote:
> > On 8/5/07, Jakob Eriksson <[EMAIL PROTECTED]> wrote:
> >
> >> DMCA Reverse engineering exemption:
> >>
> >> http://www.chillingeffects.org/reverse/faq.cgi#QID210
> >>
> >>
> >
> > >From the article:
> >
> > "The reverse engineer is required to ask permission first, however."
> >
> > ...good luck with that.
> >
> >
> It is strange that the say that, because I can not find anything about
> asking permission in the actual law text:
>
> http://cyber.law.harvard.edu/openlaw/DVD/1201.html#f
>
>

Here I think: 1201a, 3b.

'a technological measure ''effectively controls access to a work'' if
the measure, in the ordinary course of its operation, requires the
application of information, or a process or a treatment, with the
authority of the copyright owner, to gain access to the work.'




Re: Wine disassembly and reverse engineering rules.

2007-08-07 Thread Jakob Eriksson
James Hawkins wrote:
> On 8/5/07, Jakob Eriksson <[EMAIL PROTECTED]> wrote:
>   
>> DMCA Reverse engineering exemption:
>>
>> http://www.chillingeffects.org/reverse/faq.cgi#QID210
>>
>> 
>
> >From the article:
>
> "The reverse engineer is required to ask permission first, however."
>
> ...good luck with that.
>
>   
It is strange that the say that, because I can not find anything about
asking permission in the actual law text:

http://cyber.law.harvard.edu/openlaw/DVD/1201.html#f



regards,
Jakob





Re: Wine disassembly and reverse engineering rules.

2007-08-06 Thread Jesse Allen
On 8/6/07, Stefan Dösinger <[EMAIL PROTECTED]> wrote:
> Am Montag, 6. August 2007 21:02 schrieb James Hawkins:
> > "The reverse engineer is required to ask permission first, however."
> >
> > ...good luck with that.
> Asking is easy :-)
>
> Does the reverse engineer have to get permission? If he does need the blessing
> of the creator of the reverse engineered software/device, then the whole
> interoperability clause would be pointless. (note that I didn't read the
> DMCA, nor that page since disassembling Windows is pointless for me and I do
> not really speak assembler)
>
>

While living in America and going to school seeking a computer related
degree, I had to take an ethics class on the industry. I did a
presentation on the DMCA. Yes, the DMCA seems to be written such that
any reverse engineering has to be done with the permission of the
author or done in a very academic sense. Definitely no black hats...

Now, where the DMCA concerns us, is whether you engage in
circumvention technology. As far as Wine as concerned, it is not being
written for that, and we don't really engage in reverse engineering in
the sense of the way the DMCA is written for or against. But then
again a court can totally change the meaning here.




Re: Wine disassembly and reverse engineering rules.

2007-08-06 Thread Stefan Dösinger
Am Montag, 6. August 2007 21:02 schrieb James Hawkins:
> "The reverse engineer is required to ask permission first, however."
>
> ...good luck with that.
Asking is easy :-)

Does the reverse engineer have to get permission? If he does need the blessing 
of the creator of the reverse engineered software/device, then the whole 
interoperability clause would be pointless. (note that I didn't read the 
DMCA, nor that page since disassembling Windows is pointless for me and I do 
not really speak assembler)




Re: Wine disassembly and reverse engineering rules.

2007-08-06 Thread James Hawkins
On 8/5/07, Jakob Eriksson <[EMAIL PROTECTED]> wrote:
> Peter Dons Tychsen wrote:
> > By browsing MSDN, i found out that i can accomplish this by using the
> > documented function StalkWalk64(), which can examine the call stack. I
> > would then introduce this into the test system for DLLs like "user32".
> > By running the test on original Windows we could know which messages we
> > are incorrectly "posting" or "sending" where it should have been the
> > opposite. This could fix some vital issues.
> >
> > I don't think there is a problem as i am just using documented APIs from
> > MSDN, but since it includes looking at the call stack, i was curious if
> > there might be a legal problem.
> >
> > I don't want to put the idea to use or release it if it in any way is
> > illegal.
> >
> > Please think long and hard before you reply.
> >
>
> DMCA Reverse engineering exemption:
>
> http://www.chillingeffects.org/reverse/faq.cgi#QID210
>

>From the article:

"The reverse engineer is required to ask permission first, however."

...good luck with that.

-- 
James Hawkins




Re: Wine disassembly and reverse engineering rules.

2007-08-05 Thread Jakob Eriksson
Kai Blin wrote:
>
> Why would you even bother to disassemble to write a unit test? All Wine cares 
> about is "What's the output of function X when I put in Y and Z as 
> parameters?". That's why you write a conformance test that will run on 
> Windows. Then you make Wine behave the same. No need to disassemble anything 
> there.
>   

That is very true. There's no need.

regards,
Jakob




Re: Wine disassembly and reverse engineering rules.

2007-08-05 Thread Jakob Eriksson
Kai Blin wrote:
> On Sunday 05 August 2007 04:23:15 Peter Dons Tychsen wrote:
>
>   
>> It was regarding the fact that it is not allowed to disassemble and
>> reverse engineer Microsoft DLLs. I understand this part, as their
>> license prohibits it (EULA).
>> 
>
> Please note that "reverse engineering by disassembly" is not the same 
> as "reverse engineering by black box testing". The former is not only 
> disallowed by many license agreements, it's actually a violation of copyright 
> in most (western) countries.
>   

Not all western countries by far.

> Reverse engineering by black box testing is an established and legal method 
> in 
> industry. Wine uses this method extensively by writing test cases.
>
>   
>> However, i would be more clear if someone would make these rules
>> commonly available on the WineHQ website.
>> 
>
> [Omitting a quote about disassembly being useless]
>
>   
>> This should probably be fixed. It should make it crystal clear was is
>> allowed and what is not. This would help avoid situation like the one
>> mentioned above.
>> 
>
> It's also not allowed to break other laws while developing software. Where 
> would you draw the line? Disassembling software is (almost always) illegal. 
> Killing people is illegal. Should both be in the development guide? I would 
> assume common sense would tell people that they should only do things that 
> are legal.
>   

Dissambling is not illegal. Disassembling and then writing another
implementation
is against copyright.
[snip MSDN etc]

> This is the common sense I was talking about before. Thank you for asking.
>
>   
>> Please think long and hard before you reply.
>> 
>
> The usual disclaimer about how I'm not a lawyer and can't give legal advice 
> applies, of course. But a rule of thumb is: "If you never looked at 
> disassembled code and you are using tests using the Windows APIs to determine 
> how the API you're interested in works, you're fine."
>
>   

I also can't see how it would be illegal to, for instance, person A
disassembling a DLL,
then writing documentation for that DLL. Then for person B to
reimplement said DLL
by means of the specification specified by person A.

This is how Compaq legally reverse engineered the IBM PC BIOS. I don't
see how there
would be any difference writing the documentation as unit tests or english.

I.e. disassembling for the purpose of creating unit tests must be ok, AFAIK.


regards,
Jakob





Re: Wine disassembly and reverse engineering rules.

2007-08-05 Thread Jakob Eriksson
Peter Dons Tychsen wrote:
> By browsing MSDN, i found out that i can accomplish this by using the
> documented function StalkWalk64(), which can examine the call stack. I
> would then introduce this into the test system for DLLs like "user32".
> By running the test on original Windows we could know which messages we
> are incorrectly "posting" or "sending" where it should have been the
> opposite. This could fix some vital issues.
>
> I don't think there is a problem as i am just using documented APIs from
> MSDN, but since it includes looking at the call stack, i was curious if
> there might be a legal problem.
>
> I don't want to put the idea to use or release it if it in any way is
> illegal.
>
> Please think long and hard before you reply.
>   

DMCA Reverse engineering exemption:

http://www.chillingeffects.org/reverse/faq.cgi#QID210



regards,
Jakob





Re: Wine disassembly and reverse engineering rules.

2007-08-05 Thread Kai Blin
On Sunday 05 August 2007 18:06:28 Jakob Eriksson wrote:
> Kai Blin wrote:
> > On Sunday 05 August 2007 04:23:15 Peter Dons Tychsen wrote:
> >> It was regarding the fact that it is not allowed to disassemble and
> >> reverse engineer Microsoft DLLs. I understand this part, as their
> >> license prohibits it (EULA).
> >
> > Please note that "reverse engineering by disassembly" is not the same
> > as "reverse engineering by black box testing". The former is not only
> > disallowed by many license agreements, it's actually a violation of
> > copyright in most (western) countries.
>
> Not all western countries by far.
[...]
> Dissambling is not illegal. Disassembling and then writing another
> implementation
> is against copyright.
> [snip MSDN etc]

Well, I'm talking about "in the context of using the results for Wine".
I was also simplifying. However, given that the USA seem to consider the 
internet to be under their jurisdiction, the US legal system seems to be par 
for the interpretation of all of this.

> I also can't see how it would be illegal to, for instance, person A
> disassembling a DLL,  then writing documentation for that DLL.
> Then for person B to  reimplement said DLL  by means of the
> specification specified by person A. 
>
> This is how Compaq legally reverse engineered the IBM PC BIOS. I don't 
> see how there  would be any difference writing the documentation as unit
> tests or english. 
>
> I.e. disassembling for the purpose of creating unit tests must be ok, 
> AFAIK. 

Why would you even bother to disassemble to write a unit test? All Wine cares 
about is "What's the output of function X when I put in Y and Z as 
parameters?". That's why you write a conformance test that will run on 
Windows. Then you make Wine behave the same. No need to disassemble anything 
there.

Cheers,
Kai

-- 
Kai Blin
WorldForge developer  http://www.worldforge.org/
Wine developerhttp://wiki.winehq.org/KaiBlin
Samba team member http://www.samba.org/samba/team/
--
Will code for cotton.


pgpRqq66J6Nj3.pgp
Description: PGP signature



Re: Wine disassembly and reverse engineering rules.

2007-08-05 Thread Kai Blin
On Sunday 05 August 2007 17:27:23 you wrote:

> Thanks for your comments Kai.

My pleasure.

> > It's also not allowed to break other laws while developing software.
> > Where would you draw the line? Disassembling software is (almost always)
> > illegal. Killing people is illegal. Should both be in the development
> > guide? I would assume common sense would tell people that they should
> > only do things that are legal.
>
> I thing killing is a bit off topic :-)

Sure. I was exaggerating. :)

> However i do get your point about making it clear. It would be difficult
> to handle. OK, but changing the text i referred to would be a good start
> though.
>
> The text could be changed to (or similar):
>
> "Disassembling native Windows DLLs is not allowed in the Wine project
> due to legal implications. However, this does not change much, as
> disassembling native Windows DLLs is virtually always useless, as as
> technique disassemly is usually used to find out why the application is
> crashing in an otherwise unexplainable way."

That would probably help. Feel free to send a patch to the website.

Cheers,
Kai

-- 
Kai Blin
WorldForge developer  http://www.worldforge.org/
Wine developerhttp://wiki.winehq.org/KaiBlin
Samba team member http://www.samba.org/samba/team/
--
Will code for cotton.


pgpa6xfyPsIwU.pgp
Description: PGP signature



Re: Wine disassembly and reverse engineering rules.

2007-08-05 Thread Peter Dons Tychsen
On Sun, 2007-08-05 at 17:27 +0200, Peter Dons Tychsen wrote:
> On Sun, 2007-08-05 at 09:58 +0200, Kai Blin wrote:
> > On Sunday 05 August 2007 04:23:15 Peter Dons Tychsen wrote:
> > 
> > > It was regarding the fact that it is not allowed to disassemble and
> > > reverse engineer Microsoft DLLs. I understand this part, as their
> > > license prohibits it (EULA).
> > 
> > Please note that "reverse engineering by disassembly" is not the same 
> > as "reverse engineering by black box testing". The former is not only 
> > disallowed by many license agreements, it's actually a violation of 
> > copyright 
> > in most (western) countries.
> > 
> > Reverse engineering by black box testing is an established and legal method 
> > in 
> > industry. Wine uses this method extensively by writing test cases.
> > 
> > >
> > > However, i would be more clear if someone would make these rules
> > > commonly available on the WineHQ website.
> > 
> > [Omitting a quote about disassembly being useless]
> > 
> > > This should probably be fixed. It should make it crystal clear was is
> > > allowed and what is not. This would help avoid situation like the one
> > > mentioned above.
> > 
> > It's also not allowed to break other laws while developing software. Where 
> > would you draw the line? Disassembling software is (almost always) illegal. 
> > Killing people is illegal. Should both be in the development guide? I would 
> > assume common sense would tell people that they should only do things that 
> > are legal.
> > 
> > > Another problem is that i want to introduce something which i am not
> > > sure is covered or not by what is "not allowed".
> > >
> > > I want to introduce a function which can check if SendMessage() or
> > > PostMessage() was the reason a message ended up in a Proc handler.
> > 
> > [...]
> > 
> > > I don't think there is a problem as i am just using documented APIs from
> > > MSDN, but since it includes looking at the call stack, i was curious if
> > > there might be a legal problem.
> > 
> > If you are just using the documented API, this is just how Wine tests are 
> > done. 
> > 
> > > I don't want to put the idea to use or release it if it in any way is
> > > illegal.
> > 
> > This is the common sense I was talking about before. Thank you for asking.
> > 
> > > Please think long and hard before you reply.
> > 
> > The usual disclaimer about how I'm not a lawyer and can't give legal advice 
> > applies, of course. But a rule of thumb is: "If you never looked at 
> > disassembled code and you are using tests using the Windows APIs to 
> > determine 
> > how the API you're interested in works, you're fine."
> > 
> > Hope that helps,
> > Kai
> > 
> 
> Thanks for your comments Kai.
> 
> > It's also not allowed to break other laws while developing software. Where 
> > would you draw the line? Disassembling software is (almost always) illegal. 
> > Killing people is illegal. Should both be in the development guide? I would 
> > assume common sense would tell people that they should only do things that 
> > are legal.
> I thing killing is a bit off topic :-)
> 
> However i do get your point about making it clear. It would be difficult
> to handle. OK, but changing the text i referred to would be a good start
> though. 
> 
> The text could be changed to (or similar):
> 
> "Disassembling native Windows DLLs is not allowed in the Wine project
> due to legal implications. However, this does not change much, as
> disassembling native Windows DLLs is virtually always useless, as as
> technique disassemly is usually used to find out why the application is
> crashing in an otherwise unexplainable way."

OK. I will go ahead and post my proposals.
Thank you for helping out. Always good to be on the safe side.

/Pedro





Re: Wine disassembly and reverse engineering rules.

2007-08-05 Thread Peter Dons Tychsen
On Sun, 2007-08-05 at 09:58 +0200, Kai Blin wrote:
> On Sunday 05 August 2007 04:23:15 Peter Dons Tychsen wrote:
> 
> > It was regarding the fact that it is not allowed to disassemble and
> > reverse engineer Microsoft DLLs. I understand this part, as their
> > license prohibits it (EULA).
> 
> Please note that "reverse engineering by disassembly" is not the same 
> as "reverse engineering by black box testing". The former is not only 
> disallowed by many license agreements, it's actually a violation of copyright 
> in most (western) countries.
> 
> Reverse engineering by black box testing is an established and legal method 
> in 
> industry. Wine uses this method extensively by writing test cases.
> 
> >
> > However, i would be more clear if someone would make these rules
> > commonly available on the WineHQ website.
> 
> [Omitting a quote about disassembly being useless]
> 
> > This should probably be fixed. It should make it crystal clear was is
> > allowed and what is not. This would help avoid situation like the one
> > mentioned above.
> 
> It's also not allowed to break other laws while developing software. Where 
> would you draw the line? Disassembling software is (almost always) illegal. 
> Killing people is illegal. Should both be in the development guide? I would 
> assume common sense would tell people that they should only do things that 
> are legal.
> 
> > Another problem is that i want to introduce something which i am not
> > sure is covered or not by what is "not allowed".
> >
> > I want to introduce a function which can check if SendMessage() or
> > PostMessage() was the reason a message ended up in a Proc handler.
> 
> [...]
> 
> > I don't think there is a problem as i am just using documented APIs from
> > MSDN, but since it includes looking at the call stack, i was curious if
> > there might be a legal problem.
> 
> If you are just using the documented API, this is just how Wine tests are 
> done. 
> 
> > I don't want to put the idea to use or release it if it in any way is
> > illegal.
> 
> This is the common sense I was talking about before. Thank you for asking.
> 
> > Please think long and hard before you reply.
> 
> The usual disclaimer about how I'm not a lawyer and can't give legal advice 
> applies, of course. But a rule of thumb is: "If you never looked at 
> disassembled code and you are using tests using the Windows APIs to determine 
> how the API you're interested in works, you're fine."
> 
> Hope that helps,
> Kai
> 

Thanks for your comments Kai.

> It's also not allowed to break other laws while developing software. Where 
> would you draw the line? Disassembling software is (almost always) illegal. 
> Killing people is illegal. Should both be in the development guide? I would 
> assume common sense would tell people that they should only do things that 
> are legal.
I thing killing is a bit off topic :-)

However i do get your point about making it clear. It would be difficult
to handle. OK, but changing the text i referred to would be a good start
though. 

The text could be changed to (or similar):

"Disassembling native Windows DLLs is not allowed in the Wine project
due to legal implications. However, this does not change much, as
disassembling native Windows DLLs is virtually always useless, as as
technique disassemly is usually used to find out why the application is
crashing in an otherwise unexplainable way."






Re: Wine disassembly and reverse engineering rules.

2007-08-05 Thread Kai Blin
On Sunday 05 August 2007 04:23:15 Peter Dons Tychsen wrote:

> It was regarding the fact that it is not allowed to disassemble and
> reverse engineer Microsoft DLLs. I understand this part, as their
> license prohibits it (EULA).

Please note that "reverse engineering by disassembly" is not the same 
as "reverse engineering by black box testing". The former is not only 
disallowed by many license agreements, it's actually a violation of copyright 
in most (western) countries.

Reverse engineering by black box testing is an established and legal method in 
industry. Wine uses this method extensively by writing test cases.

>
> However, i would be more clear if someone would make these rules
> commonly available on the WineHQ website.

[Omitting a quote about disassembly being useless]

> This should probably be fixed. It should make it crystal clear was is
> allowed and what is not. This would help avoid situation like the one
> mentioned above.

It's also not allowed to break other laws while developing software. Where 
would you draw the line? Disassembling software is (almost always) illegal. 
Killing people is illegal. Should both be in the development guide? I would 
assume common sense would tell people that they should only do things that 
are legal.

> Another problem is that i want to introduce something which i am not
> sure is covered or not by what is "not allowed".
>
> I want to introduce a function which can check if SendMessage() or
> PostMessage() was the reason a message ended up in a Proc handler.

[...]

> I don't think there is a problem as i am just using documented APIs from
> MSDN, but since it includes looking at the call stack, i was curious if
> there might be a legal problem.

If you are just using the documented API, this is just how Wine tests are 
done. 

> I don't want to put the idea to use or release it if it in any way is
> illegal.

This is the common sense I was talking about before. Thank you for asking.

> Please think long and hard before you reply.

The usual disclaimer about how I'm not a lawyer and can't give legal advice 
applies, of course. But a rule of thumb is: "If you never looked at 
disassembled code and you are using tests using the Windows APIs to determine 
how the API you're interested in works, you're fine."

Hope that helps,
Kai

-- 
Kai Blin
WorldForge developer  http://www.worldforge.org/
Wine developerhttp://wiki.winehq.org/KaiBlin
Samba team member http://www.samba.org/samba/team/
--
Will code for cotton.


pgpkvc4SnQBoi.pgp
Description: PGP signature



Wine disassembly and reverse engineering rules.

2007-08-04 Thread Peter Dons Tychsen
Hello James/Wine.

1)

I noticed your comment the forums here:
http://article.gmane.org/gmane.comp.emulators.wine.devel/52810

It was regarding the fact that it is not allowed to disassemble and
reverse engineer Microsoft DLLs. I understand this part, as their
license prohibits it (EULA).

However, i would be more clear if someone would make these rules
commonly available on the WineHQ website. I tried to search for it but
all i could find was:

http://www.winehq.org/site/developer-cheatsheet

"Disassembling native Windows DLLs is virtually always useless, as a
technique disassemly is usually used to find out why the application is
crashing in an otherwise unexplainable way."

This text does not make it sound prohibited (some might read is as an
actual encouragement - (useless != probited)).

This should probably be fixed. It should make it crystal clear was is
allowed and what is not. This would help avoid situation like the one
mentioned above.

2)

Another problem is that i want to introduce something which i am not
sure is covered or not by what is "not allowed".

I want to introduce a function which can check if SendMessage() or
PostMessage() was the reason a message ended up in a Proc handler.

By browsing MSDN, i found out that i can accomplish this by using the
documented function StalkWalk64(), which can examine the call stack. I
would then introduce this into the test system for DLLs like "user32".
By running the test on original Windows we could know which messages we
are incorrectly "posting" or "sending" where it should have been the
opposite. This could fix some vital issues.

I don't think there is a problem as i am just using documented APIs from
MSDN, but since it includes looking at the call stack, i was curious if
there might be a legal problem.

I don't want to put the idea to use or release it if it in any way is
illegal.

Please think long and hard before you reply.

Thanks for your time,

/Pedro