Chal5 – Music Player Challenge

Posted: January 26, 2016 in Chal5. Music Player Challenge
Tags:

Rule: This MP3 Player is limited to 1 minutes. You have to play more than one minute. There are exist several 1-minute-check-routine. After bypassing every check routine, you will see the perfect flag.

Program is coded and compiled by MS Visual Basic 5.0-6.0. Execute file and play any mp3 file, we receive a message box when progress bar reach 1-minute:

Krchal51

Figure 1

Okay, load file to OllyDBG and search for all referenced text strings to find the string in the message box above, but can’t find any related information. So we have to set a BP to the MSVBVM60.rtcMsgBox API to find the code that displays the message box above. After place a breakpoint, press F9 to run the program and play mp3 file, we will reach here after play over 1 minute:

Krchal52

Figure 2

Go to 004045DE address, scroll up we’ll find the jump that by pass the call to rtcMsgBox:

Krchal53

Figure 3

Let’s patch this jump to unconditional jump like this:

Krchal54

Figure 4

Re-run program, play file again and see what’s happen:

Krchal55

Figure 5

Huh… Run time error! May be this program has another check, so we need to find the code section that make program crash. Restart OllyDBG, press F9 to run, then open and play mp3 file. Wait until the it plays file about 57 – 58 seconds, back to OllyDBG immediately and set BP at 0040456B . /0F8C 8D000000   jl Music_Pl.004045FE. Program will stop at BP like the picture bellow:

Krchal56

Figure 6

Patch to JMP to skip the call displays a message limited playing music file within 1 minute, continue trace over with F8, we’ll find the code that make program crash:

Krchal57

Figure 7

Scroll up and patch the jump to by pass this call above:

Krchal58

Figure 8

After patch two check location, press F9 to run program … we will see the flag at the caption:

Krchal59

Figure 9

Flag is : LIstenCare

End.

Advertisements
Comments
  1. says:

    thank tut hay anh kiên!đây là lần đầu tiên em xem 1 tut nói về progressbar , em đang crack 1 software nó dùng progressbar để check license ,cái form đăng kí của nó khi nhập fake serial code vào thì nó chạy progressbar để check đăng kí , em cũng biết là giá trị của progressbar sẽ quyết định soft register hay ko!

    vậy làm thế nào để xác định được giá trị của progressbar ? cho em ý kiến vơi ạ!

    đọc tut mà anh post thì khi progressbar chạy được 1 phút thì xuất hiện nag

    trường hợp của software em thì lại khác hoàn toàn , nó dùng progressbar để check đăng kí ,

    xin anh chỉ giúp ! thank anh nhiều

  2. kienmanowar says:

    @Vũ: Mô tả thế này rất khó hình dung :D. Anh nghĩ em phải break được ở đoạn code nhận fake serial, rồi trace tiếp để xem chương trình xử lý thế nào, gọi progressbar ra sao ….

  3. says:

    em dùng idr phân tích thì thấy để đến progressbar thì set bp trên proc của ontimer.timer1timer ! sau khi nhập fake code và trace thì đến được progressbar chính là checking serial ..cái khó là xác định được cái nơi mà lưu giá trị của checking serial (progressbar) để khi mình nhập fake code vào thì giá trị của nó bằng bao nhiêu!
    anh hình dung khi nhập fake serial vào và nhấn active soft thì 1 đoạn progressbar sẽ chạy và có label nói “checking serial” , đoạn progressbar chạy hết sẽ thông báo nag đăng kí hay ko!

    cái em muốn hỏi là có cách nào khác để tìm ra giá trị của progressbar khi nhập fake serial ko ? hoặc có hàm nào liên quan đến progressbar để ta set bp ko?

    em cũng phân tích kĩ cái ” checking serial” nó chỉ lưu vào EDX chứ ko thấy gì hết , giá trị của EDX là checking serial

    ko thể tìm thấy fake serial trong memory nên chắc ko fishing serial được, mà tìm ra nơi để patch cũng khó khăn quá

    nên em nghĩ là mẫu chốt là giá trị của progressbar thank anh đã replay

  4. kienmanowar says:

    Cơ bản anh thấy em đi đúng hướng rồi, kết hợp thử IDA + IDR + x64dbg. Anh nghĩ kiểu gì thông tin em nhập vào nó cũng phải lưu đâu đó trên mem, vì không thì lấy gì để mà so sánh. Có thể giá trị đó đã bị encode thành một dạng khác mà không phải là clear text ban đầu để em có thể tìm dễ dàng thôi. Khi progressbar chạy thì em tìm xem đoạn nào nó set cái label thành “Checking serial” …

    Hehe, dicuss cracking là tụi WordPress nó block luôn blog này của anh đấy lolz 😀

  5. says:

    ok anh ! sorry vì em ko biết ! chúc anh công việc tốt , sức khoẻ dồi dào !

  6. kienmanowar says:

    @Vũ: Cảm ơn em! Tưởng blog bị mốc rồi ai dè vẫn có người ghé 🙂

  7. says:

    hi bác cứ nói đùa ! em thấy blog của bác chất lượng!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.