首页
社区
课程
招聘
[讨论]莫名其妙的爆破
发表于: 2006-9-16 10:29 5600

[讨论]莫名其妙的爆破

2006-9-16 10:29
5600
首先声明,本人绝对菜鸟一只,前几天从公司拷贝一份打印软件回来,准备安装到自已机器上玩玩的,打开出现这个界面 ,用户名密码已知,输入后却出现这个界面,要注册,看过几篇破文,打开peid查壳,显示为无壳,用delphi4编写,立马输入注册号那里输入123456789,弹出提示“注册号错误,请重新输入”,好了,ollydbg载入,很快找到错误信息
00557FCC  /.  55            push    ebp
00557FCD  |.  8BEC          mov     ebp, esp
00557FCF  |.  83C4 F8       add     esp, -8
00557FD2  |.  8955 F8       mov     [ebp-8], edx
00557FD5  |.  8945 FC       mov     [ebp-4], eax
00557FD8  |.  C605 18525800>mov     byte ptr [585218], 0
00557FDF  |.  8B45 FC       mov     eax, [ebp-4]
00557FE2  |.  E8 6998EFFF   call    00451850
00557FE7  |.  59            pop     ecx
00557FE8  |.  59            pop     ecx
00557FE9  |.  5D            pop     ebp
00557FEA  \.  C3            retn
00557FEB      90            nop
00557FEC  /.  55            push    ebp
00557FED  |.  8BEC          mov     ebp, esp
00557FEF  |.  83C4 F4       add     esp, -0C
00557FF2  |.  894D F8       mov     [ebp-8], ecx
00557FF5  |.  8955 F4       mov     [ebp-C], edx
00557FF8  |.  8945 FC       mov     [ebp-4], eax
00557FFB  |.  8B45 F8       mov     eax, [ebp-8]
00557FFE  |.  C600 02       mov     byte ptr [eax], 2
00558001  |.  8BE5          mov     esp, ebp
00558003  |.  5D            pop     ebp
00558004  \.  C3            retn
00558005      8D40 00       lea     eax, [eax]
00558008  /.  55            push    ebp
00558009  |.  8BEC          mov     ebp, esp
0055800B  |.  33C9          xor     ecx, ecx
0055800D  |.  51            push    ecx
0055800E  |.  51            push    ecx
0055800F  |.  51            push    ecx
00558010  |.  51            push    ecx
00558011  |.  51            push    ecx
00558012  |.  51            push    ecx
00558013  |.  8955 F4       mov     [ebp-C], edx
00558016  |.  8945 FC       mov     [ebp-4], eax
00558019  |.  33C0          xor     eax, eax
0055801B  |.  55            push    ebp
0055801C  |.  68 FB805500   push    005580FB
00558021  |.  64:FF30       push    dword ptr fs:[eax]
00558024  |.  64:8920       mov     fs:[eax], esp
00558027  |.  8D55 F0       lea     edx, [ebp-10]
0055802A  |.  8B45 FC       mov     eax, [ebp-4]
0055802D  |.  8B80 D8020000 mov     eax, [eax+2D8]
00558033  |.  E8 60E5EDFF   call    00436598
00558038  |.  8B45 F0       mov     eax, [ebp-10]
0055803B  |.  8D55 F8       lea     edx, [ebp-8]
0055803E  |.  E8 251FEBFF   call    00409F68
00558043  |.  837D F8 00    cmp     dword ptr [ebp-8], 0
00558047  |.  74 44         je      short 0055808D
00558049  |.  8B45 F8       mov     eax, [ebp-8]
0055804C  |.  E8 BBC2EAFF   call    0040430C
00558051  |.  85C0          test    eax, eax
00558053  |.  7E 38         jle     short 0055808D
00558055  |.  8D45 EC       lea     eax, [ebp-14]
00558058  |.  50            push    eax
00558059  |.  8B45 F8       mov     eax, [ebp-8]
0055805C  |.  E8 ABC2EAFF   call    0040430C
00558061  |.  8BC8          mov     ecx, eax
00558063  |.  BA 02000000   mov     edx, 2
00558068  |.  8B45 F8       mov     eax, [ebp-8]
0055806B  |.  E8 A4C4EAFF   call    00404514
00558070  |.  8B45 EC       mov     eax, [ebp-14]
00558073  |.  50            push    eax
00558074  |.  8D45 E8       lea     eax, [ebp-18]
00558077  |.  8B55 F8       mov     edx, [ebp-8]
0055807A  |.  8A12          mov     dl, [edx]
0055807C  |.  E8 B3C1EAFF   call    00404234
00558081  |.  8B4D E8       mov     ecx, [ebp-18]
00558084  |.  8D45 F8       lea     eax, [ebp-8]
00558087  |.  5A            pop     edx
00558088  |.  E8 CBC2EAFF   call    00404358
0055808D  |>  8B45 F8       mov     eax, [ebp-8]
00558090  |.  E8 3BC4EAFF   call    004044D0
00558095  |.  50            push    eax
00558096  |.  E8 212FFBFF   call    <jmp.&secret.registKey>
0055809B  |.  E8 0C2FFBFF   call    <jmp.&secret.canEnter>
005580A0  |.  84C0          test    al, al
005580A2  |.  75 1D         jnz     short 005580C1
005580A4  |.  B8 10815500   mov     eax, 00558110                    ;  注册号错误,请重新输入!
005580A9  |.  E8 6A65F0FF   call    0045E618
005580AE  |.  8B45 FC       mov     eax, [ebp-4]
005580B1  |.  8B80 D8020000 mov     eax, [eax+2D8]
005580B7  |.  8B10          mov     edx, [eax]
005580B9  |.  FF92 B0000000 call    [edx+B0]
005580BF  |.  EB 0F         jmp     short 005580D0
005580C1  |>  C605 18525800>mov     byte ptr [585218], 1
005580C8  |.  8B45 FC       mov     eax, [ebp-4]
005580CB  |.  E8 8097EFFF   call    00451850
005580D0  |>  33C0          xor     eax, eax
005580D2  |.  5A            pop     edx
005580D3  |.  59            pop     ecx
005580D4  |.  59            pop     ecx
005580D5  |.  64:8910       mov     fs:[eax], edx
005580D8  |.  68 02815500   push    00558102
005580DD  |>  8D45 E8       lea     eax, [ebp-18]
005580E0  |.  BA 02000000   mov     edx, 2
005580E5  |.  E8 C6BFEAFF   call    004040B0
005580EA  |.  8D45 F0       lea     eax, [ebp-10]
005580ED  |.  E8 9ABFEAFF   call    0040408C
005580F2  |.  8D45 F8       lea     eax, [ebp-8]
005580F5  |>  E8 92BFEAFF   call    0040408C
005580FA  \.  C3            retn
005580FB   .^ E9 C4B8EAFF   jmp     004039C4
00558100   .^ EB DB         jmp     short 005580DD
00558102   .  8BE5          mov     esp, ebp
00558104   .  5D            pop     ebp
00558105   .  C3            retn

看了半天,也看不懂他的算法,凭感觉将005580A2处的jnz short 005580C1改成jz short 005580C1,保存,一运行,随便输入注册号,虽然可以进了,不知道为什么,但是退出后在进还是要输入注册号,小弟比较郁闷,在这里肯求各位指点小弟一二,小弟感激不尽,如有可能,请指点小弟应该从哪里分析这段代码

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
首先申明:我是菜鸟

个人感觉 应该 分析

00558096  |.  E8 212FFBFF   call    <jmp.&secret.registKey>
0055809B  |.  E8 0C2FFBFF   call    <jmp.&secret.canEnter>

f7 跟跟。。     进一步分析
2006-9-19 22:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
个人感觉他的主要是取得硬盘序列号,但是就是找不到那段主要代码,有没有高手来一起研究研究?
2006-9-21 09:45
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
经过跟踪分析,不出意外,这段就是算法
00586A9C >  102F            adc     [edi], ch
00586A9E    3900            cmp     [eax], eax
00586AA0 >  90              nop
00586AA1    2E:3900         cmp     cs:[eax], eax
00586AA4 >  A0 2C390000     mov     al, [392C]
00586AA9    0000            add     [eax], al
00586AAB    0089 44A27100   add     [ecx+71A244], cl
00586AB1    0000            add     [eax], al
00586AB3    006B 65         add     [ebx+65], ch
00586AB6    72 6E           jb      short 00586B26
00586AB8    65:6C           ins     byte ptr es:[edi], dx
00586ABA    3332            xor     esi, [edx]
00586ABC    2E:             prefix cs:
00586ABD    64:6C           ins     byte ptr es:[edi], dx
00586ABF    6C              ins     byte ptr es:[edi], dx
00586AC0    0000            add     [eax], al
00586AC2    0000            add     [eax], al
00586AC4    47              inc     edi
00586AC5    65:74 43        je      short 00586B0B
00586AC8    75 72           jnz     short 00586B3C
00586ACA    72 65           jb      short 00586B31
00586ACC    6E              outs    dx, byte ptr es:[edi]

但是本人没有汇编基础.希望各们仁兄能帮忙分析一下,最好在解译一下每段的意思
2006-9-22 11:43
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不懂,我菜鸟,学习中
2006-9-22 18:05
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
但是退出后在进还是要输入注册号
--------------------------------------------

可能是 1、注册码被保存在某个地方(注册表、key文件等) 每次程序启动, 或者程序的任何某个地方,  都可以检查 这个注册信息!

   如果经过查找 程序找不到这个注册信息, 当然 系统就要求注册,

  后者其他可能。。。   (我就不知道了)

对付方法:
   1、理解程序,分析出算法 找出注册码、写注册机  琢磨去吧

   2、分析 查找程序 要求注册的地方, 也像你这样子给爆破掉, 如果不影响程序功能的话, 不就可以实现

   (按分析的, 如果注册成功的话, 程序肯定去调用过程、函数去写注册表 或者 去写key文件,等等。。 就是思路了。。)

推荐dede一下。

以上是菜鸟的看法, 见笑
2006-9-23 12:10
0
雪    币: 433
活跃值: (176)
能力值: ( LV13,RANK:1250 )
在线值:
发帖
回帖
粉丝
7
最初由 redir 发布
经过跟踪分析,不出意外,这段就是算法
00586A9C > 102F adc [edi], ch
00586A9E 3900 cmp [eax], eax
00586AA0 > 90 nop
00586AA1 2E:3900 cmp cs:[eax], eax
........


晕。这段明显是花指令,也不想想在Windows NT下会允许ins,outs之类的端口操作吗?
2006-9-23 14:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 冲天剑 发布
晕。这段明显是花指令,也不想想在Windows NT下会允许ins,outs之类的端口操作吗?


正在学习中,请指点一下好吗?
2006-10-6 20:35
0
游客
登录 | 注册 方可回帖
返回
//