Re: re:
I hate pascal.
This is not feature of Pascal but feature of assembly - they just patch up their own code with assembly that does nothing then returns. These days code segments are often read only and you can't overwrite it. It also degrades performance a lot, I dont know if you remember Wolf 3D but it run better on 286 than 386 specifically due to self modifiying code (textures were all converted into code) and this was not nice thing for 386.
anyway, Mark beaten me to it.
- Visitors can check out the Forum FAQ by clicking this link. You have to register before you can post: click the REGISTER link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below. View our Forum Privacy Policy.
- Want to receive the latest contracting news and advice straight to your inbox? Sign up to the ContractorUK newsletter here. Every sign up will also be entered into a draw to WIN £100 Amazon vouchers!
Reply to: Anyone do Pascal?
Collapse
You are not logged in or you do not have permission to access this page. This could be due to one of several reasons:
- You are not logged in. If you are already registered, fill in the form below to log in, or follow the "Sign Up" link to register a new account.
- You may not have sufficient privileges to access this page. Are you trying to edit someone else's post, access administrative features or some other privileged system?
- If you are trying to post, the administrator may have disabled your account, or it may be awaiting activation.
Logging in...
Previously on "Anyone do Pascal?"
Collapse
-
Guest replied
-
Guest repliedre:
cheers Mark. they dont make programming languages like they used to. try doing that in Java..hehe
Leave a comment:
-
Guest repliedpascal
I dont see why the pascal is important, this could be done in many languages. Is this turbo pascal / delphi ? I seem to remember that Borland used TT.... for their object model stuff but I dont know what other people used.
he is dynamically allocating memory, writing code into it (plus the return info) and then executing the code.
// alloc AnzNOPs + 7 bytes of memory and set ptr code to point to it
GetMem(code, AnzNOPs + 7); {7 Bytes For proc header & end
then a chunk of machine code gets written into the memory you just allocated. his comments tell you what the hex will actually do. bp is a pointer to byte, he steps through the memory a byte at a time (inc bp) writting values bp^=...
the real/dpmi mode is the processor/memory mode real is effectivly dos 640k etc protected mode is giving access to extended memory like any thing since the 286
pointers are different
think of Run as a pointer to a function, so cast code into a pointer to a fn, then call the function.
finally free the memory
Leave a comment:
-
Anyone do Pascal?
If you do, I'd be grateful if you could let us know how & why this works:
Program SelfModify;
Const
AnzNOPs = 10;
Type
TTestProc = Procedure;
Var
code : Pointer;
Run : TTestProc;
pb : ^Byte;
pw : ^Word Absolute pb;
i : LongInt;
begin
GetMem(code, AnzNOPs + 7); {7 Bytes For proc header & end}
pb := code; {pb = ^start of routine to build}
pb^ := $55;
INC(pb); {push bp}
pw^ := $E589;
INC(pw); {mov bp,sp}
For i := 1 to AnzNOPs DO
begin
pb^ := $90;
INC(pb); {nop's}
end;
pb^ := $5D;
INC(pb); {pop bp}
pb^ := $CA;
INC(pb);
pw^ := $0000; {retf 0}
{$IFDEF DPMI}
WriteLN('Protected Mode');
code:= Ptr(Seg(code) + SelectorInc, Ofs(code)); {alias-selector}
{$else}
WriteLN('Real Mode');
{$endIF}
Run := TTestProc(code); {that's a Type-cast!}
Run; {call routine}
FreeMem(code, AnzNOPs + 7);
WriteLN('Alive and kicking!');
end.Tags: None
- Home
- News & Features
- First Timers
- IR35 / S660 / BN66
- Employee Benefit Trusts
- Agency Workers Regulations
- MSC Legislation
- Limited Companies
- Dividends
- Umbrella Company
- VAT / Flat Rate VAT
- Job News & Guides
- Money News & Guides
- Guide to Contracts
- Successful Contracting
- Contracting Overseas
- Contractor Calculators
- MVL
- Contractor Expenses
Advertisers
Contractor Services
CUK News
- HMRC loan charge settlement offer: 3 things to check before you sign Today 07:41
- HMRC standstill agreements extended to 72 months: why the term's doubled, and what to check before signing Jul 31 05:53
- Who owns the loans? Inside the mystery of the loan charge recall scandal Jul 30 06:20
- Umbrella company winding-up petitions in 2026: the practical guide for contractors Jul 29 05:29
- Payments on Account deadline: what contractors must do before July 31st — maybe for the final few times Jul 28 08:01
- Andy Burnham's first 100 days: five things contractors need from the new PM Jul 27 00:53
- Starmer vs Burnham on housing: What their rival plans mean for your contractor mortgage Jul 22 00:59
- Burnham's housing vision vs. Starmer's home-buying reforms: what it means for your contractor mortgage Jul 22 00:59
- In Khalil v Innovate Transport, a limited company contractor wasn’t a worker and was on £2.30 — not £230 Jul 21 07:58
- Andy Burnham is PM: 5 new IT policies set to shape UK tech and its contractors Jul 20 06:29

Leave a comment: