User Tools

Site Tools


blog:pushbx:2022:1031_unmak_explanations_and_plans

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

blog:pushbx:2022:1031_unmak_explanations_and_plans [2022-10-31 10:10:02 +0100 Oct Mon]
ecm created
blog:pushbx:2022:1031_unmak_explanations_and_plans [2022-10-31 16:40:11 +0100 Oct Mon] (current)
ecm fix typo and numbered listing format (thanks rr)
Line 6: Line 6:
 I didn't get to use the (third) 95LX that much this week, though I did read a few more chapters of a story. Right now my modern mobile device shut down due to a discharged battery (without warning) so I might as well spend some time writing on the 95LX again. I didn't get to use the (third) 95LX that much this week, though I did read a few more chapters of a story. Right now my modern mobile device shut down due to a discharged battery (without warning) so I might as well spend some time writing on the 95LX again.
  
-Friday (the day before yesterday) I started to work on some tools to disassemble and re-assemble programs. For now I have been working on Public Domain ZModem (PDZM) version 1.26 which is, as the name suggests, released into the public domain but does not ship with sources. Another case of "free software wthout sources" that I may want to work on later is the assembler and linker included with the free software release of MS-DOS version 2.+Friday (the day before yesterday) I started to work on some tools to disassemble and re-assemble programs. For now I have been working on Public Domain ZModem (PDZM) version 1.26 which is, as the name suggests, released into the public domain but does not ship with sources. Another case of "free software without sources" that I may want to work on later is the assembler and linker included with the free software release of MS-DOS version 2.
  
 ===== ===== ===== =====
Line 17: Line 17:
  
   - Find initial entrypoints. (For an MZ .EXE this is only one, taken from the header.)   - Find initial entrypoints. (For an MZ .EXE this is only one, taken from the header.)
- 
   - Disassemble instructions until an unconditional, non-call, non-interrupt branch is encountered. (Those are ''jmp'', ''retn'', ''retn imm16'', ''retf'', ''retf imm16'', ''iret'', and special cases like ''ud2''.)   - Disassemble instructions until an unconditional, non-call, non-interrupt branch is encountered. (Those are ''jmp'', ''retn'', ''retn imm16'', ''retf'', ''retf imm16'', ''iret'', and special cases like ''ud2''.)
- 
   - Collect all immediate branch targets from what was disassembled. (These are from conditional or unconditional jumps and loops, as well as calls, both short, near, and far.)   - Collect all immediate branch targets from what was disassembled. (These are from conditional or unconditional jumps and loops, as well as calls, both short, near, and far.)
- 
   - Repeat the process with the newly gathered entrypoints. However, keep track of what was already disassembled to avoid redundant disassembly as well as infinite loops.   - Repeat the process with the newly gathered entrypoints. However, keep track of what was already disassembled to avoid redundant disassembly as well as infinite loops.
- 
   - Record all disassembly ranges in the least amount of data.   - Record all disassembly ranges in the least amount of data.
  
blog/pushbx/2022/1031_unmak_explanations_and_plans.txt ยท Last modified: 2022-10-31 16:40:11 +0100 Oct Mon by ecm