At 02:18 PM 8/17/2006 +0400, you wrote:
> >>looks like sometimes someone damages something on the stack, which
> >>goes unnoticed most of the time
>
>      Unless found precise reason, there are no assurance, that your patch
>fixes (not masks) anything and not damages anything else.

It wouldn't damage anything else, but it might mask it.  However, permanent 
masking is the best we can do without the physical BIOS to test and 
research.  There are other workarounds that have been made for other buggy 
BIOS chips.  How would you actually fix a BIOS chip on a user's 
machine?  You can't force them to re-flash it, even if it were possible and 
available.

> >> > Could just be hitting one word on the stack, i.e. [sp] at INT 
> entry.  That
>
>      And? Why return address isn't damaged? Let me ask again:
>
>stack:
>| ret address |
>+-------------+
>| pushf       | <- tom thinks, this value damaged
>+-------------+
>| INT15 call  |
>
>stack after tom's patch:
>
>stack:
>| ret address | <- why this value not damaged?
>+-------------+
>| INT15 call  |

The most obvious case would be if a single bit were being tripped and the 
bit still matched existing return address or changed it to a benign one 
(which could happen if the bit was low).  Less obvious case would be if a 
particular value or bit pattern at the location triggered or avoids the 
overwrite.  I could speculate on other potentialities for a long time.

But it is a weird thing.  That's why I would prefer the SUB SP change which 
avoids having anything critical at the [sp] location.

> >> > would match the behavior on either of the two patches.
> >>right
>
>      No: in first case stack lesser, in second case it deeper.

Resultant behavior (i.e. it's working) is matched regardless -- the literal 
sense of the statement is accurate.  The solutions are different and one is 
not recommended in general because if the failure is apparently due to some 
type of [sp] corruption; it is happenstance that it works with the return 
address.

>MD> Plus, I just found out that there exist old compressed DOS programs which
>MD> avoid the automatic A20 handling of the kernel,
>
>      Which packer (and/or programs, which packed by this/these packers)?

Very old QuickBASIC program.  I actually don't know if it's packed or 
exactly what it's doing in its little pinhead, but it does use segment 
wrapping.  Shortly after startup the debugger showed it 
normalized/underflowed a 0F73:0 segment value to an FF74:FFF0 address 
pointing in HMA with poor results.

Ran the program in an environment where a known problematic EXEPACKed 
program worked (8ACROSS), it still failed.  Ran it under LOADFIX, it 
worked.  The evidence is compelling.


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Freedos-devel mailing list
Freedos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-devel

Reply via email to