OllyDbg 使用笔记 (十)

OllyDbg 使用笔记 (十)


参考

书:《加密与解密》

视频:小甲鱼 解密系列 视频


示例程序下载地址:http://pan.baidu.com/s/1kT1ce83



这个程序可以从标题栏的“ unregistered”入手,查找所有参考文本字串,搜索 “unregistered”


可以找到这段代码:


004046DD      90            nop
004046DE      90            nop
004046DF      90            nop
004046E0  /$  8A4424 04     mov     al, byte ptr [esp+4]
004046E4  |.  84C0          test    al, al
004046E6  |.  74 12         je      short 004046FA
004046E8  |.  A1 440A4300   mov     eax, dword ptr [430A44]
004046ED  |.  68 F09C4200   push    00429CF0                         ; /Text = "Flash Jigsaw Producer"
004046F2  |.  50            push    eax                              ; |hWnd => NULL
004046F3  |.  FF15 5C924200 call    dword ptr [<&USER32.SetWindowTex>; \SetWindowTextA
004046F9  |.  C3            retn
004046FA  |>  8B0D 440A4300 mov     ecx, dword ptr [430A44]
00404700  |.  68 C89C4200   push    00429CC8                         ; /Text = "Flash Jigsaw Producer (unregistered)"
00404705  |.  51            push    ecx                              ; |hWnd => NULL
00404706  |.  FF15 5C924200 call    dword ptr [<&USER32.SetWindowTex>; \SetWindowTextA
0040470C  \.  C3            retn
0040470D      90            nop
0040470E      90            nop


可以发现004046E0~0040470C 是一段函数。

我们可以发现je跳转比较关键,在这里可以先尝试让je不跳转。但是这样只能使标题中不会出现(unregistered),被屏蔽的功能还是不能使用。

直接改je跳转不行,我们可以看看引起je跳不跳转到al,al是call这个函数的参数,我们需要找到call这个函数的地方,查看al的变化。


在004046E0下断点。重新加载程序。按F9运行到断点处。

可以在信息版本中看到调用这个函数的地址。

图片1



选中右键即可跳到call的地址。


想要找出call这个函数的地址,还可以选中004046E0,右键--〉查找参考--〉选定命令,即可看到call这个函数的地址。

图片2



我们可以看到,有两地方call这个函数,在这两个地方都下断点。重新加载程序,按F9运行到第一个调用函数的命令。

004047AB  |.  68 60034300   push    00430360                         ; /IniFileName = "C:\Users\vbox32\AppData\Local\YavSoft\fjproducer\startup.ini"
004047B0  |.  6A 28         push    28                               ; |BufSize = 28 (40.)
004047B2  |.  68 34034300   push    00430334                         ; |ReturnBuffer = fjproduc.00430334
004047B7  |.  68 089D4200   push    00429D08                         ; |Default = "<-No Pass->"
004047BC  |.  51            push    ecx                              ; |Key => "Password"
004047BD  |.  68 149D4200   push    00429D14                         ; |Section = "Registration"
004047C2  |.  FF15 68904200 call    dword ptr [<&KERNEL32.GetPrivate>; \GetPrivateProfileStringA
004047C8  |.  68 34034300   push    00430334                         ;  ASCII "<No Pass>"
004047CD  |.  E8 6EFEFFFF   call    00404640
004047D2  |.  50            push    eax
004047D3  |.  E8 08FFFFFF   call    004046E0
004047D8  |.  83C4 08       add     esp, 8
004047DB  |.  5E            pop     esi
004047DC  |.  83C4 28       add     esp, 28
004047DF  \.  C3            retn



我们可以发现改变al的是call 004046E0,在它上面下断点,进入这个函数,可以发现这个函数是计算密钥对不对的函数。


00404640  /$  83EC 2C       sub     esp, 2C
00404643  |.  56            push    esi
00404644  |.  8B7424 34     mov     esi, dword ptr [esp+34]
00404648  |.  8BC6          mov     eax, esi
0040464A  |.  8D50 01       lea     edx, dword ptr [eax+1]
0040464D  |.  8D49 00       lea     ecx, dword ptr [ecx]
00404650  |>  8A08          /mov     cl, byte ptr [eax]
00404652  |.  40            |inc     eax
00404653  |.  84C9          |test    cl, cl
00404655  |.^ 75 F9         \jnz     short 00404650
00404657  |.  2BC2          sub     eax, edx
00404659  |.  83F8 04       cmp     eax, 4
0040465C  |.  73 07         jnb     short 00404665
0040465E      32C0          xor     al, al
00404660  |.  5E            pop     esi
00404661  |.  83C4 2C       add     esp, 2C
00404664  |.  C3            retn
00404665  |>  6A 03         push    3
00404667  |.  68 C49C4200   push    00429CC4                         ;  ASCII "fjr"
0040466C  |.  56            push    esi
0040466D  |.  E8 6EAA0100   call    0041F0E0
00404672  |.  83C4 0C       add     esp, 0C
00404675  |.  85C0          test    eax, eax
00404677  |.^ 75 E5         jnz     short 0040465E



F8单步运行,可以发现是xor al,al 把al变成0的,可以把xor al,al  改成mov  al,1。在运行,可以发被屏蔽的功能已经可以用了。








  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OllyDbg是一款用于调试和分析Windows可执行文件的工具。使用它可以帮助开发人员理解程序的运行方式,以便进行错误修复和代码优化等工作。 要开始使用OllyDbg,你可以按照以下步骤进行操作: 1. 下载和安装OllyDbg:你可以从OllyDbg的主页(http://home.t—online.de/home/Ollydbg)下载最新版本的OllyDbg,并按照安装向导进行安装。 2. 启动OllyDbg:你可以通过命令行指定可执行文件,也可以从菜单中选择,或直接拖放可执行文件到OllyDbg中。另外,你还可以重新启动上一个被调试程序,或者挂接(Attach)一个正在运行的程序。OllyDbg支持即时调试,不需要安装,可以直接在软盘中运行。 3. 调试功能:一旦你打开了一个可执行文件,OllyDbg将会显示程序的汇编代码和相关的调试信息。你可以使用OllyDbg的各种功能来分析代码、设置断点、查看和修改寄存器和内存中的值,以及跟踪程序的执行流程。 4. 插件功能:如果你需要增加更多功能,你可以使用OllyDbg的插件。插件是一个DLL,可以通过OllyDbg的主页免费下载。插件可以提供额外的调试功能,例如反汇编插件、内存查看插件、脚本扩展等。 请注意,OllyDbg的插件是无法通过调试OllyDbg本身的方式来进行调试的,因为Windows系统不能在同一个应用程序中加载和运行两个可执行文件。 总之,OllyDbg是一款功能强大而灵活的调试工具,使用它可以帮助你分析和调试Windows可执行文件。你可以根据需要选择运行方式、设置断点、查看和修改内存值等。如果需要更多功能,可以考虑使用插件来扩展OllyDbg的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Ollydbg入门](https://blog.csdn.net/n3verl4nd/article/details/84443295)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值