OllyDBG_tut19!!

I. Giới thiệu chung

Chào các bạn, trải qua 18 bài viết từ cơ bản về OllyDbg, các thanh ghi và các lệnh Asm thường dùng cho đến các cách đặt Breakpoint, cũng như phương pháp tổng quan trong việc tiếp cận và giải quyết vấn đề, tôi hi vọng các bạn đã phần nào tự mình tích lũy được những kiến thức nền tảng cơ bản nhất để chuyển tiếp sang những kiến thức mới hơn. Sang phần 19 này chúng ta sẽ đi vào một chủ đề mới, đó là : Detect OllyDbg – IsDebuggerPresent. Theo tên của chủ đề thì bài này sẽ tập trung vào giới thiệu và giải thích việc crackme/chương trình sử dụng các cách thức khác nhau nhằm phát hiện ra nó đang bị debug bởi một Debugger nào đó, mà cụ thể ở đây là OllyDbg. Thông qua việc tìm hiểu này, chúng ta sẽ áp dụng những biện pháp/kĩ thuật từ manual cho tới sử dụng plugin để vượt qua sự kiểm tra đó, giúp cho OllyDbg có thể tiếp tục debug được chương trình mà không bị Terminate.

Bài 19 này tập trung vào cách thức phát hiện OllyDbg phổ biến nhất, đó là sử dụng API: IsDebuggerPresent và phương pháp để bypass. Ta sẽ thực hành với crackme được attach cùng với bài viết này…N0w let’s g0……:)

69 thoughts on “OllyDBG_tut19!!

  1. Pác phát minh ra trò mới nữa à ? đã vậy pác link lun cho rùi.

    Kái này tui mết lắm à nha pác kien, chờ pác show cái crackme ra cạp thử xem sao.

    Tui định vay jan hồ mua PC học crack của pác cho hoàn thiện sau đó tìm bóp cổ pác kái vụ chờ mấy ngày sau mới up tut19.

  2. Thank pác kien, vậy là không uổn công pác nhé. tôi thành công khi extract tut19.

    Lúc mày muốn hun pác 1 kái quá đi à.

    Để cạp thử tut19 này xem có vô không (tôi dự định mình chỉ cần patch thôi là mừng rồi, nhưng kái đà này chắc hôm nào rủ pác đi làm vài ve để cho pác hưng phấn viết tiếp).

    Chúc pác trẻ -> khỏe

  3. chao ban kien,chao moi nguoi ! minh rat cam on ban da viet tut hay va de minh doc duoc ,hieu duoc ve chuong trinh olly va crack . Minh co mot phan mem ma khong biet no lock kieu j ma load vao olly cung nhu washsam… lai khong bao code,chay mot manh den khi dang ki thi chi hien cac ham cua win con code cua no dau tiet
    link :http://www.mediafire.com/?yyzdznahtcz ,co j cac ban gui hoi am cho minh theo hom thu badcrakers13@gmail.com
    Thaks all !

  4. Minh co mot suy nghi nhu the nay ,ban viet ve olly rat co ban rat hay ,dat bp , phuong phap stack … .Con mang nay minh tim kiem ma van chua co tai lieu nhieu .Do la viec phan tich cac dang xay dung ma khoa cua cac phan mem thuong dung, tu do co the phan dang keygen cho cac phan nay ,cac cracker co the de rang du doan thuat toan voi dang sorfkey

  5. @thanhdat33:
    _Chương trình của bạn tôi không có thời gian check.
    _Sức người có hạn, ko thể ôm dồm nhiều thứ quá. Soft + thuật toán là vô vàn. Theo lối mòn có, customize có..v..v.. đủ loại. Cho nên để thống kê thì một người làm ko đủ. Vì thời gian đâu mà ngồi crack/re rồi phân loại 😀

    @darkherovn: Như anh đã nói ở bài 18, phải tìm được real serial của cái Crackme2 attach trong bài 18 mới unlock được. Chúc em may mắn. Anh cũng như em thôi, để xem được tut19 của lão ricardo anh cũng phải giải bài tập!!

    Best Regards
    m4n0w4r

  6. Chào anh Kiên. Em thấy cái CRACKME có 1 bug nhỏ là nếu chuỗi nhập vào khác với password thật chỉ 1 ký tự thì vẫn OK => nhập password là1 ký tự bất kỳ hoặc 1 phần của password thật (từ trái qua phải) vào là được. 😀
    Em đã extract được tut rồi, tut rất hay. Thanks anh nhiều, mong tut tiếp theo của anh.

  7. 🙂 Anh biết là em nói tới cái crackme nào mà, đâu cần phải đính chính. Cái crackme đó có bug (bug là chuyện bình thường của coder), nhưng cái pass chuẩn em đã tìm ra được là tốt rồi.

    Regards

  8. -chao ban Kien ! Cai crack me cua ban minh cho code la so 1 thi crackme cho la key dung nhung khi unpack thi lai wrongkey ..the la the nao nhi
    – van de thu hai minh thac mac la voi may tinh cua minh tyhi khi bp translate. thi minh nhap key laf so 1 thi no laij hien o trong cua so dump la a va 2 la b .. vay can cau hinh olly nhu the nao thi duoc nhu cua cau.ben stack vung khong hien key = 1 ma la key = V_…
    – Van de thu ba la ba la phan mem minh hoi cau gio toi da tim mot phuong an giai quyet kha hay ,lam mot luc hai ba phan mem kieu nhu vay: ta cu nhap fk vao o roi dung phuong phap stack tim den ham call minh dung chuong trinh tai do ,quay len cua so rigester den ECX follow dump tim trong do se co key chuan ,qua tham hiem phan mem thay no viet bang VBC 6++ ,tray load thi khong hien code cua chuong trinh ,chi hien ham cua win

  9. @thanhdat33:
    1. Valid serial để extract phần 19 là một chuỗi có nghĩa chứ không phải là một kí tự bâng quơ nào đó đâu. Crackme đó có bug 🙂 .. cái tôi cần là chuỗi Serial chuẩn để unlock. Mà việc tìm ra nó rất dễ dàng 😀

    2. Không hiểu Olly của bạn thế nào, chứ tôi dùng Olly nguyên bản không mod vẫn hoạt động bình thường.

    Regards

  10. A kien oi! E tìm thấy key của crackme2 la RIDE nhưng sao e dùng nó để mở tut 19 lai ko dc .a jup e cai .thanks

  11. em sẽ thử lại xem sao.ah e ko biet a co tut olly cua rongchaua ko nhi.may hum nay e tim nhung ko thay. neu co a co the up len de moi nguoi hoc tap thi tot qua .thanhks

  12. Tut Olly của lão Rồng già hả, chắc là anh còn giữ. Lão rồng viết hai phần, để tối về anh lục lại đống CD cũ xem còn không.

  13. The nao roi a . E van dang cho a up len day .ah ,hum tr e doc tut 21 thi e nghi a viet nham . O trang 15 , theo e ko phai la ” patch lệnh jnz thành jmp ” ma la lệnh nop hay dai loai nhu the.a thu xem lai nhe.nhan tien a cho e hoi luon , khi nao a cho ra tut 13 vay a ! Thanks

  14. @Chimung: Chịu khó sử dụng bộ gõ tiếng Việt đi em :D.

    Tut23 hay các tut tiếp theo nữa anh sẽ cố gắng dành thời gian để tiếp tục, hiện tại ra tết đang muốn thay đổi nhiều thứ nên chưa có thời gian.

    Anh đã lục lại đống CD và tìm được 2 bài viết của lão Rồng già từ năm 2004 :). Link download : http://www.mediafire.com/download.php?mmwmumnuzmn

    Regards
    m4n0w4r

  15. A cho em hỏi .nếu em có câu lệnh sau: imul eax,esi,7f39f .e chỉ biết eax = 1050ba6 .vậy giá trị của esi bằng bao nhiêu thì e có eax như trên sau khi thực hiện phép toán. E đã dùng phép idiv, div rồi nhưng ko dc.a chỉ giúp e với

  16. Em có thể đọc lại tut5 của anh, anh có nói về lệnh imul. Với ví dụ của em thì có thể thấy là giá trị của ESI sẽ được đem nhân với hằng số là 0x7F39F. Kết quả được bao nhiêu thì lưu lại vào thanh ghi EAX. Nhưng do khi nhân sẽ là một con số với kết quả vượt quá khả năng lưu của một thanh ghi 32 bit, cho nên EAX sẽ chỉ lưu kết quả của 32 bit thấp tức là 8 con số cuối ở giá trị hexa mà thôi. Do vậy em sử dụng lệnh chia như trên sẽ không tìm ra được kết quả.

    Nếu không có giá trị của ESI thì làm sao em có được giá trị của EAX nhỉ 🙂

    Regards
    m4n0w4r

  17. Giá trị của thanh eax chứa kết quả sau khi thực hiện phép tính .và giá trị kết quả sau khi tính ở đây là 1050ba6 .e muốn tính ngược trở lại để tìm ra giá trị esi cần có (giá trị esi để sau khi thực hiện phép tính e sẽ có kết quả là eax = 1050ba6).a hiểu ý e nói chứ! Nếu có thể ,a ghi hộ e luôn đáp số

  18. Nhờ các Bác cho em biết password giải nén của OllyDBG_tut19.
    Cảm ơn nhiều lắm. Chúc các Bác sức khỏe.

  19. @Nguyễn Thành An : Anh nghĩ việc tìm ra pass để unlock phần 19 không phải là quá khó, em chịu khó trace code sẽ tìm ra được thôi 🙂

    Regards

  20. Xin chào mọi người!
    Chào A.Kiên, thực sự mình không biết anh là ai nữa, nhưng rất cám ơn anh về loạt bài viết về Olly, đã hơn 2 tháng tìm hiểu từ con số 0 ( vì mình ko phải dân IT, mà mê khám phá lắm!) nay mình đã tìm được pass để bypass qua tut 19 của anh, xem ra cũng không phí 2 tháng và tâm sức của anh. Thanks again!
    Mong anh sớm có tut mới cũng như cập nhật các tips.. cho mọi người tìm hiểu tiếp! Chúc anh và các bạn sức khỏe!

  21. @nguyenvu: Rất mừng là có những người chịu khó mò mẫm như bạn. Chúc bạn có thêm nhiều bước tiến mới 🙂

    Best Regards

  22. Dear A Kiên,
    Anh cho em h?i 2 câu:
    —————————————————-
    1. TẠi sao có 1 số soft sau khi patch- save selection thì nó
    lỗi báo lỗi là: “Unable to locate data in executable file!” vậy?
    2. Khi vào mục cửa sổ [w] để set bp on winproc chẳng hạn
    như WM_LBUTTONUP(202) thì hiện ra 1 bảng “unable to
    read memory of debugger process…” hay FOLLOW
    CLASSPROC hiện ra 1 bảng empty.
    —————————————————
    Trong trường hợp trên thì xử lý như thế nào?
    Thank anh nhiều!

  23. Thực ra trước khi hỏi em cũng hỏi google mấy giờ rồi, và cũng đã vào link của woodmann, đọc 1 hồi cũng hiểu ý của họ muốn nói gì, nhưng mà người nước ngoài thông minh hơn hay sao đó, nói ý, tứ ko hà không có tận tình như VN mình! Cuối cùng dùng winhex sửa thử, sửa được nhưng sao chạy gặp vấn đề hoài! Mệt quá…
    1 lời nữa: sao mỗi lần gặp mấy cái soft có pack là thấy chùm chân, kỳ thiệt… anh có mẹo nào giúp em vượt rào ko? Hổm giờ cũng crack được mấy soft mình cần dùng nên cũng khoái chí lắm! dù hành vi ko đc tốt mấy ! hehe

  24. @nguyenvu: Anh chẳng có mẹo nào cả :), gặp soft bị pack thì tuỳ tình hình mà xứ lý thôi :
    – Trước tiên phải có kiến thức cơ bản về PE file, các bước cơ bản để thực hiện unpack.
    – Nếu soft bị pack bằng các trình Packer thông dụng như Upx, Aspack v..v.. thì có thể dùng các công cụ có sẵn.
    – Nếu soft bị pack bằng các packer mà mình chưa biết thì lúc đó :
    a. Google thông tin và tìm kiếm các tips/tricks; script liên quan.
    b. Không có thì tự mày mò MUP

    Regards

  25. Dear anh Kien,
    Em đang thực hành trên 1 soft thấy có 1 số vướng mắc mong anh chỉ giúp:
    1. Khi tiến hành pass qua từng lệnh bằng F8 để ktra thì chương trình nó xuất hiện 1 nag- do ktra các thiết bị như dongle, nhưng sao cũng chương trình đó mà em sử dụng bp và pass bằng F9 thì không thấy xuất hiện nag ở trên. (em đang nghĩ đến việc chương trình nó đếm thời gian dừng, ko biết có đúng không?)
    2. Không hiểu sao mà olly hay bị “đứng” khi load soft này, phải tắt máy mới được (đôi khi không bị)
    3. Còn thay đổi thuộc tính visible của menu thì làm sao anh ha?
    Mong anh và các bạn chỉ giúp!

  26. Dear A.Kien,
    A oi, còn 1 thắc mắc nữa, khi load soft vào olly, soft ko bị pack, mà có những dòng xuất hiện DB 68… khi roll chuot qua vị trí đó thì lại xuất hiện dòng lệnh bình thường! quay lên thì lại xuất hiện DB xx như cũ vậy! Có cách nào hiệu chỉnh cách xuất hiện cũng như sửa code khu vực này không?
    Mong tin anh!

  27. @NguyenVu: Em thử chuột phải lên đoạn DB 68 đó, sau đó chọn Analysis > Remove analysis from selection xem thế nào. Nếu thành công thì sẽ là lệnh PUSH 0.

    Còn về vấn đề liên quan đến các thiết bị dongle thì anh ko có kinh nghiệm với loại này :D, khả năng có cơ chế Anti-Olly nên Olly của em mới bị đứng.

    Thuộc tính visible của menu là sao?? Anh ko hiểu ý em là gì.

    Regards

  28. Dear A.kien va cac ban,
    Vì phần mềm có cơ chế phát hiện lỗi và ứng với những type lỗi đó sẽ visible thuộc tính của menu (ẩn menu), nên em muốn cho hiện những menu ẩn đó lên để sử dụng đó mà!
    Chúc mọi người sức khỏe!

  29. moi ng` co’ the cho em 1 goi y nao dc ko. tut 19 em thu moi cach nhung ko the nao mo ra dc key cua no. mo` hoai` ma no cu ra gia tri ” 1*” hoac la “|W@G” hizz.

  30. Cuối cùng tui cũng tìm ra, sau gần 1 tháng mài mò, hi vọng để rồi thất vọng, đúng là mê cái j ko mê đi mê cái này.

  31. Dear A.Kien,
    Lâu quá không về thăm “nhà”, nay ghé qua hỏi thăm anh 1 tí.
    Em có cái soft “TextCrypt.exe” ver 2.0 định “uốn” thử nhưng không được,
    xem thử thông tin file thấy “Basic code data in overlay ( stub not packed )”, mừng quá trời, vì không bị pack.
    Khi hiện thông tin đăng ký thì nút “Register” thuộc tính enable=false, em có đọc tut của anh, có 1 ví dụ tương tự tực hành OK, nhưng mà soft này thì mần hoài không được, xin anh chỉ giúp!

  32. @Nguyễn Thành An : Anh nghĩ việc tìm ra pass để unlock phần 19 không phải là quá khó, em chịu khó trace code sẽ tìm ra được thôi 🙂

    @:anh kien trả lời giống như muốn làm khó newbie như em hay sao ý,em mở file rả bằng olly ko đc thì trace code bằng gì,cho em xin pass đi
    cho em xin cái Ym có gì em pm hỏi đc k0 anh kien

  33. ẹc,em nhầm,thui cố gắng tìm xem có ra ko,cứ tưởng là trace cái file rả,hóa ra là tut crackme của tut 18

  34. Thân chào anh Kienmanowar!
    Tôi đã đọc 1 số tut về OLLY của anh và thấy rất tuyệt vời, tuy nhiên trong thực tế thì tôi chưa thành công với 1 phần mềm nào cả. Hiện tôi đang thử tìm serial nhưng có vẻ hơi quá sức nên nhờ sự trợ giúp của anh:
    Khi load file *.exe = Olly và tìm các hàm API (ví dụ như hàm GetWindowtextA) và chuỗi thì không thấy trong danh sách, khi F9 thì thấy các hàm API xuất hiện còn các String vẫn ko thấy đâu. Anh có cách nào giúp tôi với.
    Chân thành cảm ơn anh!

  35. anh Kiên ơi pm Y!M em tí đc ko ạ ? nick em là : ” ThinhLV_no1_fpt ” em cần nhờ chút việc và muốn học hỏi chút ở anh em vẫn chưa hiểu và seach mấy cái crack về để học mà khó tìm quá

  36. Cảm ơn bác Kien. 1 tuần nay em mò pass crackme2 mới hiểu được thuật toán của nó.Giờ em mới dám mở tut_19 ra để đọc tiếp.một lần nữa cảm ơn bác rất nhiều vì những bài viết hữu ích của bác.

  37. Mình cũng là fan của anh Kiên đây, yêu anh ấy nhiều lém 🙂 Hehe, cách nay cũng lâu rồi cũng mày mò với cái Crackme v2 ở tut 18 của anh Kiên. Nhưng mình nghĩ dần dần rồi ai cũng sẽ hiểu và tìm được Serial hợp lệ ^^
    Chúc anh Kiên mạnh khỏe !

  38. tìm tới tìm lui cũng có pass tut19(RIDERSOFTHE**** )
    thử làm olly dbg vò đầu bứt tóc (mặc dù cái đầu hớt 2 phân) nhưng vẫn không hiểu buffer 40217E tại sao nó kiểm tra 16 kí tự hichic….
    Tut tiếng anh thì tụi nó làm sơ sài quá đọc hem hiểu, còn lại tiếng gì không” cuối cùng vẫn không hiểu vì sao có mấy cái chuổi này
    Messing_in_bytes = 4D 65 73 73 69 6E 67 5F 69 6E 5F 62 79 74 65 73
    Correct password XOR result = 1F 2C 37 36 3B 3D 28 19 3D 26 1A 31 2D 3B 37 3E

    So the first letter of the good password would be:

    4D XOR 1F

    0100 1101 <– 4D
    0001 1111 <– 1F

    0101 0010 <– 52 = R "cái này thì hiểu"
    anh em ai hiểu hướng dẫn em với
    mail em "nobita1610@yahoo.com"
    note:
    – không post pass đầy đủ vì tôn trọng ý của anh Kiên muốn mọi người động não phần bài tập này"
    – còn em đã động não "ctrl+F2" nhiều lần lắm rồi nhưng vẫn chưa ra nên cầu cứu"

  39. Bạn đến đó thì cũng tốt rồi, nhưng bạn lại quên rằng phép XOR có tính đối xứng, vì vậy chỉ có chuổi nhập vào đúng thì mới cho ra kết quả xor đúng với kết quả mà crackme đã gán sẵn (hoặc xor khi chương trình chạy).

    Tôi gợi ý bằng cái hình:

    “hxxp://i1207.photobucket.com/albums/bb465/MrQuy/2012-07-23_214118.jpg”

    Nội dung chỉ mang tính minh họa vì tôi đã edit lại string nhập vào 😀

  40. Mất 2 ngày trời “nổ não”, hên quá vẫn live và được đọc tiếp Tut 19 tuyệt vời của anh kienmanowar. Thank you.

  41. Không hiểu sao cái Olly của em đã thử nhiều cái Hide Debugger nhưng không thấy cái nào chạy được như tài liệu anh nói (Tut 19), anh có thể cho em chút tư vấn về vấn đề này không? (muốn gửi nhờ anh xem dùm nhưng sợ mất thời gian của anh).
    Cám ơn anh.

  42. @KYO: Ngoài cái HideDebugger đó còn rất nhiều Anti-Debug plugin cho OD nữa (Vd: StrongOD, Poison, Phantom, ScyllaHide …) .. Hơn nữa, môi trường anh làm tut19 là trên Windows XP.

Leave a Reply