--- PeRdr version 0.0088 beta --- Released 2001-06-24 (y-m-d) ---
This program is a console mode PE (Windows Portable Executable program)
viewer/disassembler.
There are many work to do.

Developed with Borland C++ 5.01, compiled with Visual C++ 6.0 and 
Gcc 2.95.2 for Linux platform. 
Tested with HP ia64 compiler and SKI emulator (version 0.008b). 
Not work with big-endian machine.
It support full Pentium III instruction, old Intel processors instruction
(old system 486 instruction, 8087 and 80287 opcode),full 3DNow! extension
and Athlon extensions.

Use:
perdr [options] <executable>
Options are similar to Posix semantic
--                  end option (useful if filename start with -)
--help              print help screen
--version           print version
--bytes             show bytes on disassembly
--disable-3dnow     disable 3DNow! disassembly (even enanched)
--disable-enh3dnow  disable enanched 3DNow! disassembly
--disable-pentium3  disable PentiumIII disassembly
--disable-athlon    disable Athlon disassembly
--show-priority     show disassembler priority
--raw-dump          don't disassemble, print only raw bytes

This reverse the executable to screen

Priority
 "secure code":
  entry point       code executed by entry point
  safe export       code executed by known export (not yet implemented)
  safe heuristics   code executed by heuristics (very sure code)

 "not secure":
  export            code executed by export (mmm.. not all export are code)
  heuristics        code executed by heuristics
                    (not very sure, like a single call found)
  constant          only a constant in code
  filler            only printed for completion
  none              this is not code
  check only        wow! If you find there is a bug

BUG:
- This program assume that code segment contain only code
- More check

TOGO:
- Data analisy completing
- String checking completing
- More option (no code analisy, some check skipping, ecc)
- Resource analisy and dumping
- Relocation analisy and test on data pointers
- Heuristic motor completing
- Some instruction process are incomplete (complex reference)
- Unknown bytes analisy (not only code)
- Print of some type (float or MMX). Now only in raw mode (binary)

New in 0.0088 - 24 June 2001
- NEWS: project ported to SourceForge
- BUG: fixed priority for complex memory references
- BUG: rawdump rewind file for empty section
- BUG: fixed relocation detection with some strange file
- BUG: fixed small problem with MSVC compiler
- disabled unsafe heuristic, too unsafe
- improved config scripts

New in 0.0087 - 10 March 2001
- BUGFIX: invalid SECC instruction reported as valid
- BUGFIX: removed overwriting information with bad one marking integer
- import marked as loader bytes
- added Borland C++ project files to source

For developer:
- some cleanup in code
- added note.txt to source

New in 0.0086 - 25 February 2001
- BUGFIX: removed log print
- BUGFIX: missing some list item separator in man page

For developer:
- removed silly dependency from peformat.h

Notes:
- This project is not dead! I'm the only programmer and every single 
  problem can slow down developing!

New in 0.0085 - 21 december 2000
- BUGFIX: removed some wrong relocation checking (3D Now! and SECC1)
- BUGFIX: checked memory parameter for 3D Now!
- BUGFIX: correct too restrictive debug check (stupid mistake)
- BUGFIX: incorrect cvtpi2ps handling
- Fixed some constant for performance and size optimization

For developer:
- renamed inst_offset to pc
- revisited pc handling in x86dasm
- removed bit field from PE structure 

New in 0.0084 - 5 december 2000
- ADD: finished all Pentium III instruction
- ADD: Athlon instruction and parameter
- ADD: added --raw-dump parameter

For developer:
- removed other old style C code
- RelocationInfo associated with FileByte

New in 0.0083 - 18 november 2000
- ADD: man page for UNIX
- ADD: .spec file use rpm option
- small precision improvement

For developer:
- many changes to incapsulate old style C code to object oriented
- preparing to merge with bdf (now code is GPL, so I can include bdf
  without license problem)
  
Notes: 
- there are no BUGFIX in this version!
- why I waited for so many time ?
  - I had many other work (and other problem too);
  - I studied other freeware project for merging or optimize my work
    (bdf, DCC, PEDasm and others)

New in 0.0082 - 2 october 2000
- BUGFIX: fixed data resided in two section
- BUGFIX: bad address reference for some complex reference
- BUGFIX: bad label marking for some jmp dword ptr [x*4+y] reference
- BUGFIX: some minor correction
- print information on complex reference
- if bad parameters print usage and return error
- added some instruction processing


New in 0.008
- BUGFIX: not infinite loop for some overlapped code (rarest)
- BUGFIX: don't overwrite priority on data
- BUGFIX: correct condition on heuristic motor
- BUGFIX: not relocation on string!
- added RPM building under UNIX
- rewrite auto_ptr (more compatible)
- rewrite some PE structure (more compatible)

For developer:
- Fixed TIstrInfos constant use

10 june 2000 released to public

New in 0.0075
- BUGFIX: not extend sign on byte constant for byte registry operation
- ADD: add --show-priority to options

New in 0.007
- BUGFIX: wrong priority order
- BUGFIX: no overlapped code
- BUGFIX: fixed loader data exclusion on some file
- ADD: Added global reference to heuristic motor

New in 0.006
- BUGFIX: xchg eax,ebx printed as xchg ax,ebx
- BUGFIX: internal uninitialized error (3 day of work!!!)
- BUGFIX: fixed some insignificant memory leak
- ADD: instruction movntq (found AMD doc)
- ADD: jmp dword [4*reg+constant] improved
- ADD: start global analisy
- some optimization

New in 0.005
I start revision program output
- BUGFIX: string/loader data length not reported correctly
- BUGFIX: loader data not handle correctly
- BUGFIX: resource with name handled as ID
- BUGFIX: overflow on section name printing
- BUGFIX: segment override not printed
- BUGFIX: print [] if param is [00000000h]
- BUGFIX: if [xxx] xxx constant write always unsigned
- BUGFIX: if file has no relocation handled as with relocation
- ADD: option for version and processor disabling

New in 0.004
- BUGFIX: cmpxcghg8b have bad parameter
- ADD: Pentium III control instruction (prefetchX, fxsave, fxrstor,
  ldmxcsr, stmxcsr, sysenter, sysexit, sfence)
- ADD: Pentium III MMX instruction (maskmovq, pextrw, pmovmskb, pavgb,
  pavgw, pinsrw, pminub, pminsw, pmaxub, pmaxsw, pmulhuw, psadbw, pshufw)
- ADD: full AMD 3DNow! instruction extension

New in 0.003
- BUGFIX: Correct disassembly for Imm8 signed extended, now extend sign
- BUGFIX: Wrong size setting of memory
- ADD: Excluded loader code
- ADD: Added api call to heuristic motor

New in 0.002
- BUGFIX: Relocation on instruction not handled correctly
- BUGFIX: More label than needed
- BUGFIX: String are now handled correctly
- BUGFIX: No code and code overlap on complex jmp
- ADD: Relocation on code finished
- ADD: Options (--bytes)
- ADD: Better data analisy

New in 0.001
- BUGFIX: Don't add many reference
- BUGFIX: Not inizialized data pointer are not correct
- ADD: relocation use

New in 0.00015
- BUGFIX: Don't exit if some instruction is unknown
- BUGFIX: fixed error printing Numeric export
- ADD: data analisy for pointer in code
- ADD: check for string in code
- many new BUG :-)

HOW IT WORK
This program, instead of parse all for code, try to follow code as a
microprocessor (follow jump, call, etc). It produce (I hope) better reversing
code.
But is more complex, slow and contain MANY more bug.


If you have suggestion, comment, please contact me at
  freddy77@angelfire.com
or
  freddy_77@iol.it

Yes, I'am an Italian man, so if you find error in this document...

THANKS
yypcn - for his moral support
