日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OD调试9—实例:深入分析代码完成软件破解

發(fā)布時(shí)間:2025/7/14 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OD调试9—实例:深入分析代码完成软件破解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

OD調(diào)試9—實(shí)例:深入分析代碼完成軟件破解

   ?爆破,是最初級的解決方案,不到萬不得已,我們不直接修改JNZ通關(guān)。因?yàn)檫@樣子的話,我們就享受不到破解、逆向的真正樂趣了。

  了解程序背后按照劇情發(fā)展經(jīng)常會(huì)出的一些走法,逆向程序的算法,才能體會(huì)逆向的真正樂趣!

  所以,今天的主題是:是男人,就跟進(jìn)去吧~

  這次還是使用一個(gè)比較簡單的程序,不然太復(fù)雜的話,一步步跟進(jìn)程序可能會(huì)把自己搞崩潰,腦子恐怕不夠搞。大家憑自己的能力,能進(jìn)入多少就進(jìn)入多少,一分不少,一寸不多!能力是培養(yǎng)出來的,耐心!

  試驗(yàn)軟件:MrBills.exe(一個(gè)掃描儀軟件)

  軟件下載鏈接:http://pan.baidu.com/s/1hq7rKpu

  運(yùn)行起來看看:

?

?

   ?記住這句注冊失敗的提示信息。因?yàn)樗梢宰鳛橐粋€(gè)關(guān)鍵的字符串來尋找。

  未注冊版的軟件一般會(huì)限制功能,注冊完成后才讓你使用所有功能。

?

?

  用OD打開這個(gè)可執(zhí)行文件,開始分析:

1 查找字符串:

  Cpu窗口右鍵->查找所有參考文本字符串->查找注冊失敗的提示信息”You have entered an xxxxxx”? (注意把進(jìn)度條拉至文本子串最上方,因?yàn)樗菑纳贤虏檎业?

  查找結(jié)果如下圖:

?

  雙擊該字串,跟隨到cpu窗口代碼處。

?

?

  在這里我們找到了上方一個(gè)突破口—跳轉(zhuǎn)jnz,這里如果jnz跳轉(zhuǎn)的話,就直接來到了注冊成功處:”Thank you for registering!”,所以它是一個(gè)關(guān)鍵跳轉(zhuǎn)。

2 分析:

  (1)那么跳轉(zhuǎn)jnz的條件判斷是由誰引起的呢?

  是在它上方的test? al , al。因?yàn)檫@句會(huì)改變寄存器里標(biāo)志位ZF的值(0或1)。

  test進(jìn)行的是邏輯與運(yùn)算(and),如果兩個(gè)al為1的話,結(jié)果為1;兩個(gè)為0的話,結(jié)果為0。它不改變al的值,只會(huì)修改標(biāo)志位。

  此時(shí)通過eax寄存器可以看出al為0,所以ZF標(biāo)志位為1,(運(yùn)算結(jié)果為0時(shí),標(biāo)志位Z置1),進(jìn)而jnz不會(huì)跳轉(zhuǎn),即來到注冊失敗處。

  由此我們就可以推理出,想辦法把a(bǔ)l的值由0變?yōu)?,就可以實(shí)現(xiàn)關(guān)鍵跳轉(zhuǎn),進(jìn)而使軟件注冊成功了!!

  (2)那么al的值在哪里被修改過呢?或者說是誰決定了al的值呢?

  可以看到在test語句上方有一個(gè)call,我們在win32匯編語言里學(xué)過:Call調(diào)用函數(shù)進(jìn)行一堆操作之后的返回值都存放在EAX里,也就是說這個(gè)call會(huì)影響到al的值。(al是eax的最低位/最后一個(gè)字節(jié),eax是32位的,al是8位)

  那么這個(gè)call就是需要進(jìn)入分析的,在該處下斷點(diǎn),重載后寫入注冊信息觸發(fā)該斷點(diǎn),接著進(jìn)入這個(gè)call里,來到下圖:

?

  進(jìn)入之后呢,不要盲目地按F8過,先觀察下程序內(nèi)容(很多朋友就一直F8走,寄存器也不看,下面地址也不看,進(jìn)行了什么樣的邏輯關(guān)系也不看,就是直接的走,然后就迷路了!)

  觀察之后,我們發(fā)覺,又出現(xiàn)了兩個(gè)相連call和test(如上圖),這兩個(gè)call也會(huì)影響到我們關(guān)注的al的值,所以注釋上【需進(jìn)入】,方便之后進(jìn)入分析。下面進(jìn)入第二個(gè)call里,如下圖:

?

  進(jìn)入第二個(gè)call里,發(fā)現(xiàn)了兩個(gè)關(guān)于al的可疑之處(如上圖),mov ?bl,al? mov? al,bl? 這兩句是干啥呢?將al的值給bl,bl的值再還給al….??現(xiàn)在可以推想一下: bl可能是用來暫時(shí)保存數(shù)據(jù)的,al標(biāo)志著是否已經(jīng)被注冊,它不希望被修改,所以將al保存在bl里面,經(jīng)過一些操作后,再將bl賦給al。那么在這之前,決定al值得call或許就是一個(gè)關(guān)鍵點(diǎn)!我們接著進(jìn)入上圖中的第4個(gè)call,如下圖:

?

?

?????? 在這里走過一遍,發(fā)現(xiàn)al的值在這里被bl賦為0,這里就是修改的關(guān)鍵點(diǎn)了,將這個(gè)al的值修改為1的話,就應(yīng)該注冊成功了,我們先走出去,稍后再來一輪在這里進(jìn)行修改。

  F8走出這里后回到第二個(gè)關(guān)鍵call的位置,如下圖:

?

  繼續(xù)往下走,我們要繞出去!

?

  好了,進(jìn)到幾個(gè)關(guān)鍵call里用火眼金睛巡視了一番后,終于找到了注冊的關(guān)鍵所在,只要把第4個(gè)關(guān)鍵call里的al的值修改為1(原來為0),就應(yīng)該可以注冊成功了!

  修改如下:

?

?

  修改后點(diǎn)擊運(yùn)行:成功注冊了了!!

?

  點(diǎn)擊確定,軟件變?yōu)榱艘炎园?#xff1a;

?

轉(zhuǎn)載于:https://www.cnblogs.com/yunji5566/p/4264739.html

總結(jié)

以上是生活随笔為你收集整理的OD调试9—实例:深入分析代码完成软件破解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。