160 - 48 DueList.3

环境:
Windows xp sp3

工具:
Ollydbg
exeinfope

0x00 查壳

无壳的程序

0x01 分析

应该就是选上某个或多个框后点Check就能成功的,那应该就是不同框对应不同的值咯。旁边还有个提示:建议使用资源编辑器。
直接OD载入,看看不同的框代表什么值。

00401127   > /0FBE8E FE2040>movsx ecx,byte ptr ds:[esi+0x4020FE]     ;  这里获取框的值
0040112E   . |83F9 4D       cmp ecx,0x4D
00401131   . |74 2F         je XDueList_.00401162
00401133   . |890D 5E214000 mov dword ptr ds:[0x40215E],ecx
00401139   . |51            push ecx                                 ; /ButtonID
0040113A   . |FF75 08       push dword ptr ss:[ebp+0x8]              ; |hWnd
0040113D   . |E8 D0010000   call <jmp.&USER32.IsDlgButtonChecked>    ; \IsDlgButtonChecked
00401142   . |46            inc esi                                  ;  看看这个框是不是被选上了
00401143   . |83F8 00       cmp eax,0x0
00401146   .^ 74 DF         je XDueList_.00401127                    ;  是的话就往下计算,不是就下一个框
00401148   . |A1 5E214000   mov eax,dword ptr ds:[0x40215E]
0040114D   . |0FBE8E FE2040>movsx ecx,byte ptr ds:[esi+0x4020FE]
00401154   . |0FAFC1        imul eax,ecx
00401157   . |0FAFC6        imul eax,esi
0040115A   . |0105 62214000 add dword ptr ds:[0x402162],eax
00401160   .^\EB C5         jmp XDueList_.00401127
00401162   >  A1 62214000   mov eax,dword ptr ds:[0x402162]          ;  这个值要328FE
00401167   .  6BC0 4D       imul eax,eax,0x4D
0040116A   .  3D 6654F300   cmp eax,0xF35466
0040116F   .  75 20         jnz XDueList_.00401191

在401142处下个断点,选一个框就运行一次,18次就能知道哪几个框对应哪几个值了,而且还知道对应的顺序。如下:

复选框的编号:
 1  2  3  4  5  6  7  8  9
10 11 12 13 14 15 16 17 18

复选框的属性:
顺序 值    编号
1    0x16  4
2    0x49  2
3    0x5E  3
4    0x15  10
5    0x27  17
6    0x26  6
7    0x21  7
8    0x25  5
9    0x1D  18
10   0x59  8
11   0x53  9
12   0x37  11
13   0x31  12
14   0x48  13
15   0x5D  14
16   0xC   15
17   0x61  1
18   0x52  16
19   0x4D  结束

0x02 算法分析

计算过程就两三行:

00401148   .  A1 5E214000   mov eax,dword ptr ds:[0x40215E]
0040114D   .  0FBE8E FE2040>movsx ecx,byte ptr ds:[esi+0x4020FE]
00401154   .  0FAFC1        imul eax,ecx
00401157   .  0FAFC6        imul eax,esi
0040115A   .  0105 62214000 add dword ptr ds:[0x402162],eax
00401160   .^\EB C5         jmp XDueList_.00401127
00401162   >  A1 62214000   mov eax,dword ptr ds:[0x402162]          ;  这个值要328FE
00401167   .  6BC0 4D       imul eax,eax,0x4D
0040116A   .  3D 6654F300   cmp eax,0xF35466

因为每个复选框对应一个ID:
被选中的复选框的ID* 下一个复选框的ID *当前复选框的次序 = 被选中的复选框的值
最后一个复选框被选上的话会有一个0x4D作为结束的ID。
将所有被选中的复选框的值加起来,乘以0x4D,看看乘积是否为0xF35466,如果等于则成功。

注册机也不难写,每个框对应的值出来后,深搜一遍,看看哪种组合的情况下会等于即可。

于是得到:

2 3 4 5 6 7 11 14 15  //这是用到的值的次序编号,还有看看这些值是由哪几个位置的框计算出来的

对应的框框位置:

2 3 10 17 6 7 9 13 14

选上就好了:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值