ASM 32/64 markers

Issues related to VMProtect
Post Reply
Master
Posts: 21
Joined: Thu May 12, 2011 9:23 am

ASM 32/64 markers

Post by Master »

Есть ли нормальные маркеры для заинлайненого в fpc ассемблера?

PS: И когда будет введена поддержка мапов от fpc?
Admin
Site Admin
Posts: 2693
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: ASM 32/64 markers

Post by Admin »

А чем не устраивает использование маркеров из SDK?
Master
Posts: 21
Joined: Thu May 12, 2011 9:23 am

Re: ASM 32/64 markers

Post by Master »

invoke VMProtectBegin,SADD("Test marker") в FPC? Попробуйте слинковать свои coff/omf с FPC. Получите незабываемые ощущения :) Молчу про синтаксис не TASM'a.
Да, хоть в дельфи в процедурах типа "assembler" как вставлять сии маркеры?
Admin
Site Admin
Posts: 2693
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: ASM 32/64 markers

Post by Admin »

А зачем вам нужно линковать coff/omf с FPC? Я не уверен что он их вообще поймет, т.к. для паскаля они не нужны - это чисто сишная кухня. Для паскаля достаточно добавить в uses VMProtectSDK.pas:

Code: Select all

uses VMProtectSDK;

 asm
  push 0
  call VMProtectBegin;
  ...
  call VMProtectEnd;
 end;
Admin
Site Admin
Posts: 2693
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: ASM 32/64 markers

Post by Admin »

P.S. Пример с именами маркеров:

Code: Select all

 asm
  push offset(@marker_name)
  call VMProtectBegin
  ...
  call VMProtectEnd
  jmp @end
@marker_name:
  db 'Test marker',0
@end:
 end;
Master
Posts: 21
Joined: Thu May 12, 2011 9:23 am

Re: ASM 32/64 markers

Post by Master »

asm
push 0
call VMProtectBegin;
end;
Похоже на правду.
asm
push offset(@marker_name)
call VMProtectBegin
...
call VMProtectEnd
jmp @end
@marker_name:
db 'Test marker',0
@end:
end;
Попробуйте линкануть с FPC 64, чтобы заработало :)
Admin
Site Admin
Posts: 2693
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: ASM 32/64 markers

Post by Admin »

FPC поддерживает ассемблер для х64? :shock:
Admin
Site Admin
Posts: 2693
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: ASM 32/64 markers

Post by Admin »

Хм. Действительно поддерживает:

Code: Select all

  asm
   mov rcx, offset @marker_name
   call VMProtectBegin
   ...
   call VMProtectEnd
   jmp @end
@marker_name:
   db 'Test marker',0
@end:
  end;
Admin
Site Admin
Posts: 2693
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: ASM 32/64 markers

Post by Admin »

P.S. Для x64 Calling Conventions отличаются от х32, т.е. для всех типов вызовов (включая stdcall) 4 первых параметра передаются через регистры RCX, RDX, R8, R9, а остальные передаются через стек.
Master
Posts: 21
Joined: Thu May 12, 2011 9:23 am

ASM 32/64 markers

Post by Master »

Admin wrote:P.S. Для x64 Calling Conventions отличаются от х32
Как бы я до этого писал на асме64 :o А конструкция нижеприведенная покатит ?:
asm
xor rcx, rcx
call VMProtectBegin
...
call VMProtectEnd
end;

или лучше эта?

asm
jmp @F
db 'VMProtect begin',0
@F:

jmp @F2
db 'VMProtect end',0
@F2:
end;
Admin
Site Admin
Posts: 2693
Joined: Mon Aug 21, 2006 8:19 pm
Location: Russia, E-burg
Contact:

Re: ASM 32/64 markers

Post by Admin »

Можно использовать оба варианта.
Post Reply