PDA

View Full Version : غير فعال كردن ميسيج باكس دوم



دنیای دلفی
دوشنبه 14 مرداد 1387, 23:38 عصر
هدف ميزان تواناييهاي يكي از پروتكتورها در مخفي نمودن كد اصلي است .
راهنمايي : از خاصيت Code Replace استفاده شده است .:متعجب:
لطفا بين 1 تا 10 امتياز بدهيد .:خجالت:

ممنون وقت مي گذاريد:تشویق:

joker
سه شنبه 15 مرداد 1387, 01:30 صبح
به تو نمره بدیم یا به پروتکتوره ؟

پیوست: این برنامه تو بدون وجود دیباگر اصلا به مسیج باکس دوم و نمایش فرم نمیرسه ، انگار ذاتا باید در حال کرک باشه تا درست کارشو بکنه :)

فایل ضمیمه باید دلفی نصب باشه تا اجرا بشه که خب حتما دلفی داری :بوس: _ ران تایمهاشو حذف کردم حجمش کم بشه _
عکس هم که معرف کد ریپلایس هست :)

دنیای دلفی
سه شنبه 15 مرداد 1387, 09:35 صبح
ممنون در بالا گفتم هدف تواناييهاي اين بخش از پروتكتور است . امتياز چند مي گيره

هانی هاشمی
سه شنبه 15 مرداد 1387, 10:10 صبح
:عصبانی++::عصبانی++:جونه بچه هاتون یه توضیحی و چیزی بدین ثواب داره :عصبانی++:. یا مثل جناب بردیا از اسکرینتون فیلم بگیرین بزارین

ممنون

دنیای دلفی
سه شنبه 15 مرداد 1387, 10:47 صبح
جوكر جان لودرتو ديدم ظاهرا از طريق FindWindow اون پيام رو برداشتي . درسته يا نه .
بيشتر من مي خواستم جاي كدهاي ريپليس شده را پيدا كني و كد را غيرفعال كنيد .

joker
سه شنبه 15 مرداد 1387, 11:33 صبح
این روش کد جایگزین کردن از یک طرف خیلی پیچیده میشه ، یعنی اگه قرار باشه وارد قسمتی بشی که عملیات ساخت رشته و لود کردن فلان api و غیره را انجام بده خیلی درهربرهم و واقعا پیچیده میشه ( اعصاب میبره ) و از طرفی هم به علت روش صدا زدن توابع ریپلایس شده مثل عکس ضمیمه ، یه جورائی حذف کردن پروسیجرها راحت تره. چون یه push -jmp بیشتر خرجش نیست .
البته نظر منه ،

در مورد اون findwindow در واقع برای من کار نقطه توقف را میکرد
سورس :


NewData1 : array[1..10] of byte = ($90,$90,$90,$90,$90,$90,$90,$90,$90,$90);
Bytes:Dword;
Bytesread : DWORD;
hprocess:Cardinal;
si : Startupinfo;
pi : Process_Information;

implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
H:Thandle;
begin
IF CreateProcess( nil,'PROJECT1.exe',nil,nil,FALSE,
CREATE_SUSPENDED,nil,nil,si,pi) = true then
ResumeThread(pi.hThread);

While not H<>0 Do
begin
H := FindWindow(nil,'Look');

sleep(10);
if h<>0 then
begin
WriteProcessMemory( pi.hprocess ,Pointer($5B4480) , @NewData1, 10 , Bytes);
h := 0;
abort;
Application.Terminate;
end;
end;
// ShowMessage('patched');
Application.Terminate;


end;

دنیای دلفی
سه شنبه 15 مرداد 1387, 13:49 عصر
1-به نظر شما Code Replace داراي پيچيدگي بيشتري نسبت به Code Virtualizer است .؟
2- اگر من بيام با استفاده از Code Replace و با استفاده از VM Macros with Virtualization Level به صورت تركيبي روي كدهاي مهم و كليدي اعمال كنم و بعد با Themida اون را پك كنم امنيتش چقدر مي شه .

ممنون اگر پاسخ تخصصي بديد

joker
سه شنبه 15 مرداد 1387, 18:40 عصر
ممنون اگر پاسخ تخصصي بديد
والا من چون تخصصی توی روش کار دقیق این چیزائی که گفتی ندارم ( اگه داشتم که توی پروتکتور خودم استفاده میکردم ) نمیتونم نظری بدم.

دنیای دلفی
سه شنبه 15 مرداد 1387, 20:29 عصر
ممنون .
دوستان اگر اطلاع دقيق دارند لطفا توضيح بدهند

Securebit
سه شنبه 15 مرداد 1387, 22:32 عصر
1-به نظر شما Code Replace داراي پيچيدگي بيشتري نسبت به Code Virtualizer است .؟
2- اگر من بيام با استفاده از Code Replace و با استفاده از VM Macros with Virtualization Level به صورت تركيبي روي كدهاي مهم و كليدي اعمال كنم و بعد با Themida اون را پك كنم امنيتش چقدر مي شه .

هر کدوم از این روشها پیچیدگی خودشونو دارند و روش متفاوت برای دور زدن.

HadiDelphi
چهارشنبه 16 مرداد 1387, 08:40 صبح
خواهشا یه نموره در مورد Code Replace و VM توضیح بدین که روش کارشون چطور هست ( هر چقدر با جزئیات تر باشه ممنون میشم )

دنیای دلفی
چهارشنبه 16 مرداد 1387, 13:56 عصر
The SecureEngine® VirtualMachine is a powerful technology that allows the execution of
code compiled for an imaginary CPU. When this compiled code is executed, a cracker
cannot recognize the code that is being executed and cannot understand what a specific
algorithm is doing
.


CodeReplace is a new technology that randomly takes some parts of an application code
and replace them with garbage code. SecureEngine® encrypts and stores the real code
in a secure place mixed with SecureEngine® itself. The real code is dynamically
decrypted and executed only if the protection scheme is valid and present. CodeReplace
has specialized techniques to defeat all debuggers when the real code is executed. If an
attacker tries to recompose the original program he will get the garbage code instead of
the real code. In the unlikely event that an attacker totally removes the protection
scheme, he will also remove the original code that has become part of SecureEngine®.


This technology is not implemented in other software protectors. Only a few software
protectors try to use a similar technology, but they are based in removing single
instructions not big blocks of code as SecureEngie® does.

دنیای دلفی
چهارشنبه 16 مرداد 1387, 14:05 عصر
For Delphi, SecureEngine® macros appear as an external include file that will inserted with a parameter directive, {$I
filename}. The included file will insert a special sequence of assembly code right after the {$I filename} directive. That
sequence of assembly code will be detected and replaced by SecureEngine® in the protection phase.


These include files are already defined in the "Themida include" directory and you can copy them to your application directory or
provide the full path to your Themida installation directory where they are located.



In the following we present a real example of how to use SecureEngine® macros in your Delphi application.


function TfmMain.GetCRC32(FileName: string): string;

begin
{$I VM_Start.inc}

BuildCRCTable;

CRC := $FFFFFFFF;
AssignFile(F, FileName);

FileMode := 0;

Reset(F);
{$I VM_End.inc}

GetMem(Buffer, SizeOf(B));

{$I CodeReplace_Start.inc} // the following block of code is protected with a "CodeReplace" macro

repeat

FillChar(b, SizeOf(b), 0);

BlockRead(F, b, SizeOf(b), e);

for i := 0 to (e-1) do

CRC := RecountCRC(b[i], CRC);

until (e < 255) or (IOresult <> 0);

{$I CodeReplace_End.inc} // end of "CodeReplace" macro



{$I VM_Start.inc}

FreeMem(Buffer, SizeOf(B));

CloseFile(F);

CRC := Not CRC;

Result := '$' + HextL(CRC);



{$I VM_End.inc}




end;