آژانس هواپیماییfootbal
nexpay

Programmers Trick

شروع موضوع توسط littlerabbit ‏31 مارس 2004 در انجمن برنامه نویسی

  1. littlerabbit

    littlerabbit مدیر بازنشسته کاربر فعال

    تاریخ عضویت:
    ‏13 جولای 2003
    نوشته ها:
    667
    تشکر شده:
    4
    محل سکونت:
    Iran
    نميدونم شما تا به حال چيزي از تيکه هايي که برنامه نويسها گاهي توي برنامه هاشون ميذارن ديديد يا نه؟
    مثلا هيچکدوم جريان You_are_a_real_rascal در ويندور 98 يا قضيه About در Internet Explorer 4 يا قضيه Blue در Word 97 رو ميدونيد يا نه؟
    من يه چيزايي تو VB6 IDE پيدا کردم و همچنين تو محيط دلفي 7 ولي نميدونم چطور کار ميکنن.
    واسه اونا که نميدونن بيشتر توضيح ميدم :
    تو ويندوز 98 ميتونيد يه Shortcut بسازيد به اين مقصد :
    WinDir\Application Data\Microsoft\WELCOME\Weldata.exe
    که WinDir پوشه ويندوز شماست. اين Shortcut و اصولا اين برنامه اصلا کار نميکنه (امتحان کنيد) حالا رو Shortcut کليک راست کنيد و گزينه Properties رو انتخاب کنيد. بعد تو کومبوي Run حالت Minimized را انتخاب کنيد . حالا اگر برنامه را اجرا کنيد يه سري دري وري ميبينيد.
    اين بار بازم تو گزينه Properties براي Shortcut بريد و تو قسمت Target جلوي اسم برنامه بعد از علامت " با يه فاصله اين عبارت رو دقيقا با همين حروف تايپ کنيد :
    You_are_a_real_rascal
    دقت کنيد که حتي حروف کوچيک و بزرگ هم بايد دقيقا رعايت بشه. حالا از طريق Shortcut که اين تغييرات درش اعمال شده برنامه رو اجرا کنيد. جالبه نه؟

    بازم هست اما من بيشتر ميخوام در مورد چيزايي بدونم که خودم اين چند وقته پيدا کردم.
    اول در مورد يه فايل Midi که در VB6.EXE پيدا کردم و مطمئنا اونم با يه حقه مثل بالايي فعال ميشه. براي اينکه بتونيد اين فايلو از VB6 Ide جدا کنيد ميتونيد از هر Resource Editor که قابليت PE Explorer رو هم داشته باشه استفاده کنيد اين فايل در قالب RC_DATA و با شماره 5432 قرار داده شده. اما اگه Resource Editor با اين قابليت نداريد بهتره از اين برنامه که نوشتم استفاده کنيد :
    کد:
    Private Declare Function LoadResource Lib "kernel32" (ByVal hInstance As Long, ByVal hResInfo As Long) As Long
    Private Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
    Private Declare Function FindResource Lib "kernel32" Alias "FindResourceA" (ByVal hInstance As Long, ByVal lpName As Integer, ByVal lpType As Integer) As Long
    Private Declare Function SizeofResource Lib "kernel32" (ByVal hInstance As Long, ByVal hResInfo As Long) As Long
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Long, ByVal Source As Long, ByVal Length As Long)
    Private Declare Function VarPtrArray Lib "msvbvm60.dll" Alias "VarPtr" (Ptr() As Any) As Long
    
    Dim Buf As Long
    Dim L As Long
    Dim Res As Long
    
    Private Sub Command1_Click()
        Dim BufArray() As Byte
        
        Res = FindResource(GetModuleHandle(vbNullString), 5432, 10)
        If Res = 0 Then
            MsgBox "Error - Resource not found - may be you are not in vb6 ide"
            Exit Sub
        End If
        L = SizeofResource(GetModuleHandle(vbNullString), Res)
        Buf = LoadResource(GetModuleHandle(vbNullString), Res)
    
        ReDim BufArray(0 To L)
        CopyMemory VarPtr(BufArray(0)), Buf, L
        Open "C:\VB Res.midi" For Binary As #1
        Put #1, , BufArray
        Close #1
    End Sub
    
    
    چند نکته رو يادتون نره - اين برنامه بايد تو محيط ويژوال بيسيک اجرا بشه. اونو کامپايل نکنيد چون نياز به ماژول وي بي واسه اجرا داره يه چيز ديگه اينکه فقط ار اين تو وي بي 6 ميشه استفاده کرد اونو به Net مهاجرت نديد. (طبيعيه چون اين فايل صوتي تو وي بي 6 هست!!!!!!) بعد از اجراي برنامه فايل تو آدرس C:\VB Res.midi ذخيره ميشه.

    يه نکته مهم چند تا از اين Api ها رو که اينجان براي مطابقت با کارم دست کاري کردم يعني اينا اون شکلي نيستن که تو Api Viewer تعريف شدن!!!!


    اما اين کارا فقط مختص Microsoft نيست . چند روز پيش که داشتم Resource دلفي 7 رو بررسي ميکردم (چون دارم يه Resource Editor مينويسم زياد با اين برنامه ها و resource هاشون سر و کله ميزنم.) يه عکس پيدا کردم يه Jpeg با کيفيت نسبتا بالا که تيم دلفي 7 رو نشون ميداد. البته چون دلفي هفت چند تا نسخه داره ممکنه فقط تو نسخه اي که من دارم باشه و تو باقي نسخه ها نباشه اما به هرصورت به امتحانش ميارزه!!! البته بازم ميتونيد از يه Resource Editor استفاده کنيد اين هم به صورت RC_DATA و با اسم Splashing1 isj. اما اگه نداريد بايد يه کامپوننت بنويسيد من قبلا نوشتم :
    کد:
    unit BorlandTeam;
    
    interface
    
    uses
      SysUtils, Classes, Controls,Graphics,Jpeg,Windows;
    
    type
      TBorlandTeam = class(TGraphicControl)
      private
        { Private declarations }
        FJpeg : TJPEGImage;
      protected
        { Protected declarations }
        procedure Paint;override;
      public
        { Public declarations }
        constructor Create(AOwner : TComponent);override;
        destructor Destroy;override;
      published
        { Published declarations }
        property Jpeg : TJPEGImage read FJpeg;
      end;
    
    procedure Register;
    
    implementation
      constructor TBorlandTeam.Create(AOwner : TComponent);
      var
        Buf : Pointer;
        ResID : HRSRC;
        MemStream : TMemoryStream;
        Hinst : HMODULE;
      begin
        inherited;
        FJpeg:=TJPEGImage.Create;
        if csDesigning in ComponentState then
        begin
          Hinst:=GetModuleHandle('delphi32.exe');
          MemStream:=TMemoryStream.Create;
          ResID:=FindResource(Hinst,'SPLASHHIGH1',MakeIntResource(10));
          if ResID=0 then
            RaiseLastOSError;
          Buf:=Pointer(LoadResource(Hinst,ResID));
          MemStream.Write(Buf^,SizeofResource(Hinst,ResID));
          MemStream.Seek(0,soFromBeginning);
          FJpeg.LoadFromStream(MemStream);
          FreeAndNil(MemStream);
        end;
      end;
    
      destructor TBorlandTeam.Destroy;
      begin
        FJpeg.Free;
        inherited;
      end;
    
      procedure TBorlandTeam.Paint;
      begin
        Width:=Jpeg.Width;
        Height:=Jpeg.Height;
        Canvas.Draw(0,0,FJpeg)
      end;
    
    procedure Register;
    begin
      RegisterComponents('Samples', [TBorlandTeam]);
    end;
    
    end.
    
    از منوي کامپوننت گزينه Install Component رو انتخاب کنيد بعد از ديالوگ قسمت (Into New Package ) رو انتخاب کنيد. بعد اين فايلو که Save کرديد (با اسم BorlandTeam.pas) اونوقت يه Packege هم انتخاب کنيد . بعد از اون از قسمت Package Options از قسمت Description گزينه Design Time Only رو انتخاب کنيد (اين کار واسه اينه که اين کامپوننت بايد تو محيط IDE باشه و فقط واسه احتياطه اگه خواستيد اين کارو نکنيد اما اونوقت وقت Run تصوير نمايش داده نميشه فقط توي IDE ميبينيدش!) بعد Package رو نصب کنيد.
    حالا کافيه اين کامپوننت رو تو فرم بندازيد عکس رو ميبينيد و اگه بخوايد ميتونيد ذخيرش کنيد.

    البته اينها روش من هست و مطمئنا برنامه نويسها يک راهي واسه نشون دادنش گذاشتن درست مثل کد تقلب بازيها!. راستي حالا که بحث تقلب شد اينو امتحان کنيد : تو Freecell وقت بازي کليدهاي Ctrl+Shift+F10 رو فشار بديد. (اينم يه Accelator تو Resource اين بازي بود که به هيچ منويي نسبت داده نشده بود بنابراي يه کم مشکوک بود....) جالبه.

    بازم ميگم هر کي راه اصلي نمايش اين Resource ها رو ميشناسه بگه!!! من تا اين راه ها رو ندونم هر شب کابوس ميبينم!!!!
    اگر هم شما از اين تيپ هاي ميکروسافتي چيزي ميدونيد همين جا بنويسيد.



    كدها به پست Attach شدن (مرسي احسان)
     

    فایل های ضمیمه:

    • Delphi_VB.zip
      اندازه فایل:
      3 KB
      نمایش ها:
      42
    • snap3.GIF
      snap3.GIF
      اندازه فایل:
      11.4 KB
      نمایش ها:
      38
  2. b_amighi

    b_amighi کاربر تازه وارد

    تاریخ عضویت:
    ‏15 نوامبر 2003
    نوشته ها:
    145
    تشکر شده:
    0
    جالب بود. ولي من متوجه نشدم كه چطوري اينو پيدا كردي. بهر حال يه همچين مطلبي با توجه به جزئياتي كه داره بايستي از يه منبع تامين شده باشه و بنظر نمياد با سعي و خطا بشه به يه همچين چيزي رسيد.
     
  3. littlerabbit

    littlerabbit مدیر بازنشسته کاربر فعال

    تاریخ عضویت:
    ‏13 جولای 2003
    نوشته ها:
    667
    تشکر شده:
    4
    محل سکونت:
    Iran
    در مورد اولي آره. اما دوتايي كه كد رو نوشتم نه. من معمولا فايل هاي PE رو زياد بررسي ميكنم (با هر برنامه اي كه بگيد : با HEX Editor ها و با PE Editor ها . خودم هم يه نيمچه PE Resource Editor هم نوشتم كه با اون ميشه خيلي كارا كرد. اما در مورد كدها اينا روش عادي استفاده از Resource در ويندوز هستن و من فقط در حين اجرا (كه همه Resource ها لود ميشن )و من با يه نيمچه كد اونو دزديدم. اگه ميخوايد يه Resiource Editor خوب بهتون معرفي كنم بريد به اين آدرس WWW.Pe-explorer.com البته این عکس مربوط به دلفی رو تشخیص میده که عکسه اما فایل Midi تو بيسيك رو به صورت Hex نشون ميده. اما اگه Exe Scope داشته باشيد (متاسفانه نتونستم سايتو پيدا كنم) اونوقت اون ميدي رو هم براتون ژخش ميكنه.

    دو تا قضيه ديگه Blue و About رو هم اگه تو آرشيوم پيدا كردم ميگم.

    فرود
     
  4. littlerabbit

    littlerabbit مدیر بازنشسته کاربر فعال

    تاریخ عضویت:
    ‏13 جولای 2003
    نوشته ها:
    667
    تشکر شده:
    4
    محل سکونت:
    Iran
    خوب شکر خدا یکی از اونایی که گفته بودم دوباره پیدا کردم این یکی یه کم قدیمیه و ممکنه شما نتونید امتخانش کنید بنابراین عکس همه مراحل رو میذارم اینجا.

    تو Internet Explorer 4 (عکس اول ) دیالوگ About رو بیارید.
    دکمه کنترل رو بگیرید و علامت Internet Explorer در گوشه رو در حالی که کنترل رو گرفتید بکشید و از بغل (سمت چپ) به نوشته Microsoft Internet Explorer بزنید. متن حرکت میکنه و یه دکمه زیرش پیدا میشه (تصویر 2)
    دکمه رو فشار بدید کره زمین سمت چپ شروع به لرزیدن میکنه دوباره کنترل رو بگیرید و علامت Internet Explorer رو روی کره زمین بکشید (تصاویر بعدی را ببینید )یه صفحه باز میشه که اسامی افرادی که تو تیم Internet Explorer 4 بودن رو نشون میده (تصویر آخر)

    Internet Explorer 4 تقریبا منقرض شده و دیگه استفاده نمیشه مگه شما هنوز ویندوز عربی (البته نه نسخه SE ) رو داشته باشید میتونید امتحانش کنید. این ویندوز روی سی دی پارسا 99 بود.نميدونم محدوديت سايز واسه Attach هست يا نه؟
     

    فایل های ضمیمه:

    • snap1.GIF
      snap1.GIF
      اندازه فایل:
      22.9 KB
      نمایش ها:
      39
    • snap2.GIF
      snap2.GIF
      اندازه فایل:
      22 KB
      نمایش ها:
      34
    • snap3.GIF
      snap3.GIF
      اندازه فایل:
      18.5 KB
      نمایش ها:
      29
    • snap4.GIF
      snap4.GIF
      اندازه فایل:
      18.4 KB
      نمایش ها:
      45
    • snap5.GIF
      snap5.GIF
      اندازه فایل:
      11 KB
      نمایش ها:
      31
  5. littlerabbit

    littlerabbit مدیر بازنشسته کاربر فعال

    تاریخ عضویت:
    ‏13 جولای 2003
    نوشته ها:
    667
    تشکر شده:
    4
    محل سکونت:
    Iran
    تو ويندوز 98 يه Screen Saver هست به اسم 3D Text كلمه اي رو كه قراره نشون بده بزاريد volcano اونوقت يه سري اسم ديگه نمايش داده ميشه (فقط ويندوز 98) منم نفهمیدم که این اسامی نویسندگان این برنامس یا چیز دیگه (یکی تو ویندوز ME چک کنه شاید جواب داد)
     
  6. alishariat

    alishariat کاربر تازه وارد

    تاریخ عضویت:
    ‏25 آپریل 2004
    نوشته ها:
    3
    تشکر شده:
    0
    به اينا مي گن Easter Egg . يه سري به اينجا بزنين.
     
  7. panypay

این صفحه را با دیگران به اشتراک بگذارید

خرید بک لینکreviews عسل طبیعی و گرده گل ایرانی