Hackme.com - Emulated Solar CPU by Independent (IND)
3 of 3 files
solar designer
-
This download is an executable MS-DOS program that will not run on a modern computer.
It needs a DOS emulator such as DOSBox-X, Staging;
or a virtualized MS-DOS or FreeDOS system.
Browsers may flag this download as unwanted or malicious. If unsure, scan it with VirusTotal. -
Last modified Nov 5, 2017 10:20:25 PM
MD5 checksum 8ed066e355392215b04aff3550d3da12
Mime type Zip archive data
Download HACKME.ZIP
Size 3 kB
1997
- Zip - DOS / Computer tool
- Lord caligo, Solar designer, program credits
2 items in the archive
- HACKME.ASM
- HACKME.COM
; do not modify source - made by solar designer in 1996,
; source traded by lord caligo/1997
.model tiny
.code
.startup
.186
cld
emCPU:
mov si,emIP
lodsw
xchg ax,di
mov di,[di]
lodsw
xchg ax,bx
or di,[bx]
lodsw
xchg ax,di
not ax
mov emIP,si
stosw
jmp short emCPU
em86_CALLER:
pusha
mov ax,em86_R2
mov word ptr emCPU,ax
cli
mov em86_SP,sp
mov sp,offset em86_REGS
popa
mov sp,em86_SP
sti
push offset em86_RETURN
push em86_R1
em86_RETN:
retn
em86_RETURN:
cli
mov em86_R1,sp
mov sp,offset em86_REGS+18
pushf
pusha
mov sp,em86_R1
mov em86_SP,sp
sti
popa
jmp short emCPU
em86_JMP_CALLER:
db 0EBh, offset em86_CALLER - 103h
em86_ADD:
add ax,cx
sbb cx,cx
retn
even
emIP dw emCode
emSP dw emStack
emConstFFFF dw 0FFFFh
emNOR macro Src1, Src2, Dst
dw offset Src1, offset Src2, offset Dst
endm
emNOT macro Src, Dst
emNOR Src, Src, Dst
endm
emOR macro Src1, Src2, Dst
emNOR Src1, Src2, emR1
emNOT emR1, Dst
endm
emAND macro Src1, Src2, Dst
emNOT Src1, emR1
emNOT Src2, emR2
emNOR emR1, emR2, Dst
endm
emXOR macro Src1, Src2, Dst
emOR Src1, Src2, emR3
emAND Src1, Src2, emR4
emNOT emR4, emR4
emAND emR3, emR4, Dst
endm
emCLR macro Dst
emNOT Dst, emR1
emNOR emR1, Dst, Dst
endm
emMOV macro Src, Dst
emOR Src, Src, Dst
endm
emJMPi macro Src
emMOV Src, emIP
endm
emJMP macro Lbl
local Src
emJMPi Src
Src dw offset Lbl
endm
emJMPsi macro Src1, Src2, Src3
emAND Src1, Src2, emR3
emNOT Src3, emR1
emNOR Src1, emR1, emR4
emOR emR3, emR4, emIP
endm
emJMPs macro Src, Lbl1, Lbl2
local Src1, Src2
emJMPsi Src, Src1, Src2
Src1 dw offset Lbl1
Src2 dw offset Lbl2
endm
emMOVv_ALT macro Val, Dst
local Src, Lbl
emNOR Src, Src, Dst
emJMP Lbl
Src dw not Val
Lbl:
endm
emMOVv macro Val, Dst
local Src, Lbl
emMOV Src, Dst
emJMP Lbl
Src dw Val
Lbl:
endm
emMOVmv macro Mem, Dst
local Mod1, Mod2
emMOV Mem, Mod1
emMOV Mem, Mod2
Mod1 = this word
Mod2 = this word + 2
emMOV Dst, Dst
endm
emMOVvm macro Src, Mem
local Mod
emMOV Mem, Mod
emMOV Src, Src
Mod = this word - 2
endm
emSTOP macro
emMOV em86_RETN, emCPU
endm
em86_CALL macro Lbl
emMOVv <offset Lbl>, em86_R1
emMOV emCPU, em86_R2
emMOV em86_JMP_CALLER, emCPU
endm
em86_INT macro Num
local Lbl1, Lbl2
em86_CALL Lbl1
emJMP Lbl2
Lbl1:
int Num
retn
Lbl2:
endm
emADD macro Src1, Src2, Dst
emMOV Src1, em86_AX
emMOV Src2, em86_CX
em86_CALL em86_ADD
emMOV em86_AX, Dst
endm
emADDv macro Val, Src, Dst
local SrcVal, Lbl
emADD SrcVal, Src, Dst
emJMP Lbl
SrcVal dw Val
Lbl:
endm
emBIN macro Src, Dst
emADD emConstFFFF, Src, emR1
emMOV em86_CX, Dst
endm
emJMPci macro Src1, Src2, Src3
emBIN Src1, emR5
emJMPsi emR5, Src2, Src3
endm
emJMPc macro Src, Lbl1, Lbl2
local Src1, Src2
emJMPci Src, Src1, Src2
Src1 dw offset Lbl1
Src2 dw offset Lbl2
endm
emPUSH macro Src
emMOVvm Src, emSP
emADDv 2, emSP, emSP
endm
emPUSHv macro Val
local Src, Lbl
emPUSH Src
emJMP Lbl
Src dw Val
Lbl:
endm
emPOP macro Dst
emADDv -2, emSP, emSP
emMOVmv emSP, Dst
endm
emCALL macro Lbl
local RetLbl
emPUSHv <offset RetLbl>
emJMP Lbl
RetLbl:
endm
emRET macro
emPOP emIP
endm
emByteMask:
dw 0FFh
emCode:
emCALL emInputText
emCALL emEncryptPwd
emXOR emV_EncryptedPwd1, emVR4, emVR1
emJMPc emVR1, emWrongPwd, emExtraCheck
emExtraCheck:
emXOR emV_EncryptedPwd2, emVR5, emVR1
emJMPc emVR1, emWrongPwd, emCorrectPwd
emWrongPwd:
emMOVv <offset WrongPwdMsg>, emVR1
emJMP emPrintPwdMsg
emCorrectPwd:
emMOVv <offset CorrectPwdMsg>, emVR1
emPrintPwdMsg:
emCALL emPrintText
emCALL emPrintCRLF
emSTOP
emPrintText:
emMOVv 0AAh, emVR4
emPrintNext:
emMOVmv emVR1, emVR3
emXOR emVR4, emVR3, emVR2
emMOV emVR3, emVR4
emAND emByteMask, emVR2, emVR2
emJMPc emVR2, emDoPrint, emLeavePrint
emDoPrint:
emADDv 1, emVR1, emVR1
emCALL emPrintChar
emJMP emPrintNext
emLeavePrint:
emRET
emPrintChar:
emMOV emVR2, em86_DX
emMOVv 200h, em86_AX
em86_INT 21h
emRET
emPrintCRLF:
emMOVv 13, emVR2
emCALL emPrintChar
emMOVv 10, emVR2
emCALL emPrintChar
emRET
emInputText:
emMOVv <offset emV_Buffer>, em86_DX
emMOVv 0A00h, em86_AX
em86_INT 21h
emRET
emEncryptPwd:
emMOVv <offset emV_Buffer + 2>, emVR1
emCLR emVR4
emEncryptNext:
emMOVmv emVR1, emVR3
emAND emByteMask, emVR3, emVR2
emXOR emConst000D, emVR2, emVR2
emJMPc emVR2, emDoEncrypt, emLeaveEncrypt
emDoEncrypt:
emADDv 1, emVR1, emVR1
emMOV emVR4, emVR5
emXOR emVR3, emVR4, emVR4
emJMP emEncryptNext
emLeaveEncrypt:
emRET
EncryptText macro Text
local Val
Val = 0AAh
irpc Char, <&Text>
Val = Val xor '&Char'
db Val
endm
db Val
endm
Copyright:
EncryptText <Emulated Solar CPU Copyright (c) 1996 by Solar Designer>
EnterPwd:
EncryptText <Enter password: >
WrongPwdMsg:
EncryptText <Incorrect password>
CorrectPwdMsg:
EncryptText <Thanks>
emV_EncryptedPwd1 dw 7528h
emV_EncryptedPwd2 dw 784Dh
emConst000D dw 000Dh
emV_Buffer db 16, 19 dup (?)
even
em86_R1 dw ?
em86_R2 dw ?
em86_REGS:
em86_DI dw ?
em86_SI dw ?
em86_BP dw ?
em86_SP dw ?
em86_BX dw ?
em86_DX dw ?
em86_CX dw ?
em86_AX dw ?
em86_FLAGS dw ?
emR1 dw ?
emR2 dw ?
emR3 dw ?
emR4 dw ?
emR5 dw ?
emR6 dw ?
emVR1 dw ?
emVR2 dw ?
emVR3 dw ?
emVR4 dw ?
emVR5 dw ?
emVR6 dw ?
emStack:
end