环境:
Windows xp sp3

工具:
ollydbg
exeinfope

0x00 查壳

无壳的程序

0x01 分析


运行后随便输入点东西,

OD载入:

00401127   > /6A 00         push 0x0                                 ; /lParam = 0
00401129   . |6A 00         push 0x0                                 ; |wParam = 0
0040112B   . |6A 0E         push 0xE                                 ; |Message = WM_GETTEXTLENGTH
0040112D   . |6A 03         push 0x3                                 ; |ControlID = 3
0040112F   . |FF75 08       push dword ptr ss:[ebp+0x8]              ; |hWnd
00401132   . |E8 41020000   call <jmp.&USER32.SendDlgItemMessageA>   ; \SendDlgItemMessageA
00401137   . |A3 AF214000   mov dword ptr ds:[0x4021AF],eax
0040113C   . |83F8 00       cmp eax,0x0                              ;  不能为空
0040113F   . |0F84 D5000000 je DueList_.0040121A
00401145   . |83F8 08       cmp eax,0x8                              ;  大于8个就跳
00401148   . |0F8F CC000000 jg DueList_.0040121A
0040114E   . |8BF0          mov esi,eax
00401150   . |6A 00         push 0x0                                 ; /lParam = 0
00401152   . |6A 00         push 0x0                                 ; |wParam = 0
00401154   . |6A 0E         push 0xE                                 ; |Message = WM_GETTEXTLENGTH
00401156   . |6A 04         push 0x4                                 ; |ControlID = 4
00401158   . |FF75 08       push dword ptr ss:[ebp+0x8]              ; |hWnd
0040115B   . |E8 18020000   call <jmp.&USER32.SendDlgItemMessageA>   ; \SendDlgItemMessageA
00401160   . |83F8 00       cmp eax,0x0
00401163   . |0F84 B1000000 je DueList_.0040121A
00401169   . |3BF0          cmp esi,eax
0040116B   . |0F85 A9000000 jnz DueList_.0040121A                    ;  serial与name的长度不同就跳
00401171   . |68 60214000   push DueList_.00402160                   ; /lParam = 402160
00401176   . |6A 08         push 0x8                                 ; |wParam = 8
00401178   . |6A 0D         push 0xD                                 ; |Message = WM_GETTEXT
0040117A   . |6A 03         push 0x3                                 ; |ControlID = 3
0040117C   . |FF75 08       push dword ptr ss:[ebp+0x8]              ; |hWnd
0040117F   . |E8 F4010000   call <jmp.&USER32.SendDlgItemMessageA>   ; \SendDlgItemMessageA
00401184   . |68 79214000   push DueList_.00402179                   ; /lParam = 402179
00401189   . |6A 10         push 0x10                                ; |wParam = 10
0040118B   . |6A 0D         push 0xD                                 ; |Message = WM_GETTEXT
0040118D   . |6A 04         push 0x4                                 ; |ControlID = 4
0040118F   . |FF75 08       push dword ptr ss:[ebp+0x8]              ; |hWnd
00401192   . |E8 E1010000   call <jmp.&USER32.SendDlgItemMessageA>   ; \SendDlgItemMessageA
00401197   . |B9 FFFFFFFF   mov ecx,-0x1
0040119C   > |41            inc ecx
0040119D   . |0FBE81 602140>movsx eax,byte ptr ds:[ecx+0x402160]
004011A4   . |83F8 00       cmp eax,0x0                              ;  Switch (cases 0..7A)
004011A7   . |74 32         je XDueList_.004011DB
004011A9   . |BE FFFFFFFF   mov esi,-0x1
004011AE   . |83F8 41       cmp eax,0x41
004011B1   . |7C 67         jl XDueList_.0040121A                    ;  小于0x41的直接错误
004011B3   . |83F8 7A       cmp eax,0x7A
004011B6   . |77 62         ja XDueList_.0040121A                    ;  大于0x7a的就直接错误
004011B8   . |83F8 5A       cmp eax,0x5A
004011BB   . |7C 03         jl XDueList_.004011C0
004011BD   . |83E8 20       sub eax,0x20                             ;  Cases 5A ('Z'),5B ('['),5C ('\'),5D (']'),5E ('^'),5F ('_'),60 ('`'),61 ('a'),62 ('b'),63 ('c'),64 ('d'),65 ('e'),66 ('f'),67 ('g'),68 ('h'),69 ('i'),6A ('j'),6B ('k'),6C ('l'),6D ('m')... of switch 004011A4
004011C0   > |46            inc esi                                  ;  Cases 41 ('A'),42 ('B'),43 ('C'),44 ('D'),45 ('E'),46 ('F'),47 ('G'),48 ('H'),49 ('I'),4A ('J'),4B ('K'),4C ('L'),4D ('M'),4E ('N'),4F ('O'),50 ('P'),51 ('Q'),52 ('R'),53 ('S'),54 ('T')... of switch 004011A4
004011C1   . |0FBE96 172040>movsx edx,byte ptr ds:[esi+0x402017]     ;  找到相同的值
004011C8   . |3BC2          cmp eax,edx
004011CA   .^|75 F4         jnz XDueList_.004011C0
004011CC     |0FBE86 3C2040>movsx eax,byte ptr ds:[esi+0x40203C]     ;  在另一个字符串中找到对应位置的值
004011D3   . |8981 94214000 mov dword ptr ds:[ecx+0x402194],eax      ;  这里就是正确的serial
004011D9   .^|EB C1         jmp XDueList_.0040119C
004011DB   > |FF35 AF214000 push dword ptr ds:[0x4021AF]             ;  Case 0 of switch 004011A4
004011E1   . |68 94214000   push DueList_.00402194
004011E6   . |68 79214000   push DueList_.00402179
004011EB   . |E8 54000000   call DueList_.00401244                   ;  比较
004011F0   . |83F8 01       cmp eax,0x1
004011F3   .^|0F84 DEFEFFFF je DueList_.004010D7

搜一下错误信息的字符串,往上翻一翻就有了。下个断点观察一下,不难看出这里就是算法了。

0x02 算法分析

这个算法也是比较简单的,将输入的内容转为大写字母,与:

A1LSK2DJF4HGP3QWO5EIR6UTYZ8MXN7CBV9

比较,找到相同字符的位置,然后再从:

SU7CSJKF09NCSDO9SDF09SDRLVK7809S4NF

找到对应位置的字符,就是所求的serial

存在一个问题就是如果输入的内容在a(0x61)和Z(0x5A)之间的话,程序会错误,因为在上面的字符串中找不到对应的字符,所以会没有正确的serial

160 - 49 DueList.4相关推荐

  1. 160 - 47 DueList.2

    环境: Windows xp sp3 工具: Ollydbg exeinfope 0x00 查壳 无壳的程序 0x01 分析 运行后说需要keyfile,那就创建一个. OD载入找找看需要的keyfi ...

  2. 160 - 51 DueList.6

    环境: Windows xp sp3 工具: Ollydbg exeinfope 0x00 查壳 发现程序没有加壳,那么我们可以直接分析了. 0x01 分析 运行程序看一看 看到错误信息的字符串后我们 ...

  3. 160 - 50 DueList.5

    环境: Windows xp sp3 工具: Ollydbg exeinfope 0x00 查壳 可以看出程序有加壳,那么我们下一步就是脱壳了. 0x01 脱壳 看上去没什么特别的地方,就直接 单步跟 ...

  4. 160 - 48 DueList.3

    环境: Windows xp sp3 工具: Ollydbg exeinfope 0x00 查壳 无壳的程序 0x01 分析 应该就是选上某个或多个框后点Check就能成功的,那应该就是不同框对应不同 ...

  5. 使用示波器测量扬声器的阻抗实验数据

    扬声器对外的阻抗表现为一个复阻抗(带有电抗成分)的模型,对于 测量扬声器的阻抗 则需要通过交流信号测量的方式来完成对它的复阻抗的测量. 这方面可以使用专门 基于AD5933的阻抗测量 电路,或者网络分 ...

  6. 自动控制理论及matlab,自动控制理论及MATLAB实现

    本书系统地介绍了经典理论的基本内容,着重于基本概念.基本理论和基本方法的论述.全书共分8章:自动系统的基本概念.系统的建模.系统的时域分析法.系统的根轨迹法.系统的频率响应法.系统的校正.非线性系统. ...

  7. 特征抽取 PCA主成分分析

    一.方法 主成分分析也成主分量分析,利用降维的思想,将多个指标特征转化为少数的几个综合指标特征.是一种线性变化来简化数据集的技术.在减少维数的同时还尽可能多的保留数据集的特征. 作用在于: 降低维数, ...

  8. 神仙道人物属性基础知识普及

    神仙道人物初始属性有命中,闪避,破击,格挡,暴击,韧性,必杀,守护8种. 除去职业特色,每个人物初始属性只有命中,其他都为0,其命中属性为85%. 而职业带来基础属性:         剑灵初始附加属 ...

  9. python 大智慧接口_大智慧股票本地数据读取接口(含源码)

    适用于"大智慧新一代 Level-2 V3.03.08.0801 "的版本. 附件:数据表结构 ◎代码数据(cndm)结构 字段名含义类型备注 dm 代码 char jc 简称 c ...

最新文章

  1. 网页性能测试---webpagetest
  2. 树莓派出微控制器了!Raspberry Pi Pico 只需 4 美元
  3. python中range 函数_Python中的range函数
  4. c语言排序方法有哪几种?
  5. java宋江,Java编程内功-数据结构与算法「单链表」,
  6. Asp.NET的DESAES加密算法(转载)
  7. ABBYY FineReader 12PDF选项卡之图像及文字设置
  8. Android开发笔记(一百四十四)高仿支付宝的头部伸缩动画
  9. OSCache操作详解+标签使用
  10. CURL基于某个URL请求需要身份验证
  11. 佳能g2800清废墨_跪求佳能g2800 打印机 清零
  12. php解析mpp文件中的多级任务
  13. DDD 战术模型之聚合
  14. 对比“码绘”与“手绘”的区别
  15. uml的用例图中扩展关系与包含关系
  16. 2013年各大小IT公司待遇
  17. 提示用户更改计算机密码,验证你的Microsoft账户 温馨提示:在个人电脑上更改微软账户密码...
  18. c语言忽略转义字符,C语言转义字符
  19. 小试跨平台局域网文件传输工具NitroShare,几点感想
  20. 繁体中文和简体中文编码

热门文章

  1. 程序员外包避坑指南?
  2. 目录爆破工具 -- dirsearch
  3. thinkcmf搭建教程_5分钟快速入门
  4. 如何使用github搭建个人博客
  5. koa2 mongdb 做后端接口的小demo
  6. 使用 Web Tracing Framework 分析富 JS 应用的性能
  7. vue-cli 3.0 使用全过程讲解
  8. CSS3与页面布局学习笔记(二)——盒子模型(Box Model)、边距折叠、内联与块标签、CSSReset
  9. jzoj 6302. 提高组
  10. 搭建springboot环境