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。在运行,可以发被屏蔽的功能已经可以用了。

时间: 2024-11-16 20:46:09

OllyDbg 使用笔记 (十)的相关文章

OllyDbg 使用笔记 (二)

参考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 TraceMe.exe下载地址:http://pan.baidu.com/s/1c0s2twO TraceMe.exe 程序破解 程序见下图,破解目标:使我们能够验证成功. 图片1 由于输入肯定会用到获取对话框文本的API,所以在反汇编面板 按Ctrl+G搜索GetDlgItemTextA,试试看. 图片2 也可以按Ctrl+N 打开程序的导入表.查看程序导入了那些函数,选中GetDlgItemTextA,右键 选择在反汇编窗口中跟随输入

OllyDbg 使用笔记 (一)

参考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 ollydbg下载地址:http://tools.pediy.com/debuggers.htm hello.exe下载地址:http://pan.baidu.com/s/1c0iYQOC 一.OllyDbg基本界面 图片1 如果按窗口切换按钮出现下面的情况,乱了,只需要双击一个窗口让它全屏就行了. 图片2 二.部分快捷键介绍 F3 : 打开目标文件 F2 : 设置断点 F7:单步步进,遇到CALL跟进 F8:单步步过,遇到CALL路过,

Swift学习笔记十二:下标脚本(subscript)

下标脚本就是对一个东西通过索引,快速取值的一种语法,例如数组的a[0].这就是一个下标脚本.通过索引0来快速取值.在Swift中,我们可以对类(Class).结构体(structure)和枚举(enumeration)中自己定义下标脚本的语法 一.常规定义 class Student{ var scores:Int[] = Array(count:5,repeatedValue:0) subscript(index:Int) -> Int{ get{ return scores[index];

第十七篇:实例分析(3)--初探WDDM驱动学习笔记(十)

续: 还是记录一下, BltFuncs.cpp中的函数作用: CONVERT_32BPP_TO_16BPP 是将32bit的pixel转换成16bit的形式. 输入是DWORD 32位中, BYTE 0,1,2分别是RGB分量, 而BYTE3则是不用的 为了不减少color的范围, 所以,都是取RGB8,8,8的高RGB5, 6, 5位, 然后将这16位构成一个pixel. CONVERT_16BPP_TO_32BPP是将16bit的pixel转换成32bit的形式 输入是WORD 16BIT中

初探swift语言的学习笔记十(block)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/35783341 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! 在前面一些学习中,原本把闭包给理解成了block尽管有很多相似之处,但block还是有他自己的独特之外.近日,在写oc/swift混合编码时,有时候需要swift回调oc,oc回调swift . 因此我把swift中的 block 常见的声明和写

swift 笔记 (十六) —— 可选链

可选链(Optional Chaining) 我们都知道"可选型"是什么,那么可选链又是什么,举个例子解释一下: struct MyName{ var name } struct MyInfo { var myName:MyName? = MyName() } class MyClass { var structInstance: MyInfo? = MyInfo() } 这里有两个结构体和一个类,当,这个类实例化的时候: var myInstance = MyClass() 所有的可

Swift学习笔记十:属性

1.存储属性       1. 作为特定类或结构实例的一部分,存储属性存储着常量或者变量的值.存储属性可分为变量存储属性(关键字var描述)和常量存储属性(关键字let描述). struct student{ let name = "" var score = 0 } let a = student(name:"小笨狼",score:96)           注意:                ① 定义储存属性时,需要为每一个属性定义一个默认值.在初始化的时候,

python学习笔记十——异常处理

1.try: command except 错误类型,记录错误信息变量: command finally: command try...finally的用处是无论是否发生异常都要确保资源释放代码的执行.一般来说,如果没有发生错误,执行过try语句块之后执行finally语句块,完成整个流程.如果try语句块发生了异常,抛出了这个异常,此时就马上进入finally语句块进行资源释放处理.如下从几个细节讨论finally的特性. 1).try中的return: 当在try语句块中含有return语句

OllyDbg 使用笔记 (八)

参考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 示例程序下载:http://pan.baidu.com/s/1jG5NKBs 分析 这个程序,未注册版本限制了一些功能. 尝试在register界面写入email和密钥 会弹出注册未成功的窗口.可以利用窗口中的文字作为突破口.在OD中 查找 所有参考文本字串 图片1 暴力破解 查看 未注册成功后弹出窗口中的字符串的代码: 004299AB . 57 push edi 004299AC . 50 push eax 004299AD . E8

ollydbg使用笔记(五)

OllyDbg 使用笔记 (五) 参考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 pixtopainbook安装包 下载地址  http://pan.baidu.com/s/191ArG pixtopainbook 破解 pixtopainbook是一个电话簿软件,未注册版本,最多只能添加3个组,每个组最多添加4个人. 去除添加人数跟组数限制 ollydbg 加载 ,按F9运行. 如果OD暂停,在下面出现"异常 E06D7363 - 使用Shift+F7/F8/F9来忽略程序