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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlsbHZzbWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

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

图片2

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlsbHZzbWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

我们能够看到,有两地方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。

在执行,能够发被屏蔽的功能已经能够用了。

版权声明:本文博主原创文章。博客,未经同意不得转载。

OllyDbg 使用注意事项 (十)的更多相关文章

  1. OllyDbg 使用笔记 (十二)

    OllyDbg 使用笔记 (十二) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 演示样例程序下载地址:http://pan.baidu.com/s/1eQiV6aI 安装好程序 ...

  2. swift 注意事项 (十六) —— 可选链

    可选链(Optional Chaining) 我们都知道"可选型"是什么.那么可选链又是什么,举个样例解释一下: struct MyName{      var name } st ...

  3. OC-封装,继承,多态

    主要内容概括 标号 主题 内容 一 封装 面向对象三大特性;封装的概念/原因/好处/原则 二 *getter和setter setter / getter方法;注意点 三 自定义代码段 如何自定义代码 ...

  4. ApacheCN C/C++ 译文集 20211201 更新

    笨办法学C 中文版 前言 导言:C的笛卡尔之梦 练习0:准备 练习1:启用编译器 练习2:用Make来代替Python 练习3:格式化输出 练习4:Valgrind 介绍 练习5:一个C程序的结构 练 ...

  5. 【转载】C++ 与“类”有关的注意事项总结(十二):按成员初始化 与 按成员赋值

    原文:C++ 与"类"有关的注意事项总结(十二):按成员初始化 与 按成员赋值 一.按成员初始化(与构造函数和拷贝构造函数有关) 用一个类对象初始化另一个类对象,比如: Accou ...

  6. Dynamic CRM 2013学习笔记(十五)报表设计:报表入门、开发工具及注意事项

    本文是关于CRM 2013报表开发入门介绍,包括开发工具的使用,以及不同于普通Reporting service的相关注意事项. 一.CRM报表简介 报表有两种,SQL-based报表和Fetch-b ...

  7. 【Android Studio安装部署系列】三十六、Android studio3.2使用过程中注意事项

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio升级到3.2之后,运行旧项目的时候出现了各种情况,特此记录下. 一.打包选项多了,一般情况下选择APK即 ...

  8. Expo大作战(十九)--expo打包后,发布分用程序到商店的注意事项

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  9. salesforce 零基础学习(四十五)Approval Lock & UnLock相关注意事项

    我们都知道,当一条记录进入审批流程以后会自动加锁,apex提供Approval类的lock和unlock方法可以让我们使用代码对记录进行加锁和解锁. 项目中遇到一个需求,需要当某种情况下对记录进行先解 ...

随机推荐

  1. Direct UI

    在界面开发中,眼下DirectUI是个热门的技术名称,由于众多的知名公司都是用DirectUI方式作出了非常炫丽的界面.而对于大多数熟悉Win32控件,熟悉MFC开发的开发者来说,我们应该做何选择? ...

  2. Android Studio Gradle 添加.so 支持文件

    近期发展Android Wear 关注商品.官员Demo所有gradle 工程. 当然,我也用eclipse配置一个可行的环境. 问题来了,eclipse,android studio 开发 andr ...

  3. 基于S5pv210流媒体server的实现之网络摄像头(by liukun321 咕唧咕唧)

    这里仅介绍流媒体server端的实现思路.及编码注意问题,不会贴代码的详细实现. 直接入正题先介绍一下系统硬件框架: server端连接PC机用VLC播放例如以下图: server端应用程序能够分为图 ...

  4. BZOJ 2809 APIO2012 dispatching Treap+启示式合并 / 可并堆

    题目大意:给定一棵树,选定一棵子树中的一些点,薪水和不能超过m,求点的数量*子树根节点的领导能力的最大值 考虑对于每一个节点,我们维护一种数据结构,在当中贪心寻找薪金小的雇佣. 每一个节点暴力重建一定 ...

  5. WeText项目的服务端

    WeText项目的服务端 在<WeText项目:一个基于.NET实现的DDD.CQRS与微服务架构的演示案例>文章中,我介绍了自己用Visual Studio 2015(C# 6.0 wi ...

  6. hdu2563(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2563 解题思路:要分两种情况来考虑,a(n)为向上,b(n)为向左跟向右,f(n)为当前方案数.a(n ...

  7. centos 6.3 vnc连接—— catalog is not properly configured, attempting to determine an appropriate font p

    摘要:linux环境下,利用VNC连接远程桌面是经常用到的.这里,我们介绍centos上,利用VNC连接远程桌面的方法和常见的两个问题的解决方法1)由于字体问题,导致VNCserver无法启动 2)由 ...

  8. poj3764(dfs+Trie树+贪心)

    题目链接:http://poj.org/problem?id=3764 分析:好题!武森09年的论文中有道题CowXor,求的是线性结构上的,连续序列的异或最大值,用的办法是先预处理出前n项的异或值, ...

  9. 2014ACM/ICPC亚洲区西安站 F题 color (组合数学,容斥原理)

    题目链接:传送门 题意: n个格子排成一行.我们有m种颜色.能够给这些格子涂色,保证相邻的格子的颜色不同 问,最后恰好使用了k种颜色的方案数. 分析: 看完题目描写叙述之后立刻想到了一个公式 :C(m ...

  10. hdu3886(数位dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3886 题意:给一定区间[A,B],一串由/,\,-组成的符号串.求满足符号串的数字个数. •/表示数字 ...