首页
社区
课程
招聘
[旧帖] [原创]ADSL密码终结者脱壳+自效验+追码(申请邀请码) 0.00雪花
发表于: 2011-11-13 11:53 2286

[旧帖] [原创]ADSL密码终结者脱壳+自效验+追码(申请邀请码) 0.00雪花

2011-11-13 11:53
2286
【目标】ADSL密码终结者脱壳+自效验+追码
【工具】OD1.10+PEID
【下载地址】http://down.qiannao.com/space/file/323186/share/2011/8/25/adsl.rar/.page
【简要说明】第一次写东西 如有什么不足之处,请多指教

【详细过程】
----------------------------脱壳---------------------------
使用PEID查壳发现使用的是ASPack2.12壳    用OD载入  在0051D002处使用ESP定律下硬件访问断点  F9之后来到 0051D3B0
0051D3B0    /75 08                 jnz short adsl.0051D3BA
0051D3B2    |B8 01000000           mov eax,1
0051D3B7    |C2 0C00               retn 0C
0051D3BA    \68 CCDC4E00           push adsl.004EDCCC
0051D3BF     C3                    retn          传说中的光明之巅
0051D3C0     8B85 26040000         mov eax,dword ptr ss:[ebp+426]

来到004EDCCC  看入口点这个程序应该是Delphi程序  先别急着关掉 后面有用
--------------------------自效验---------------------------
打开脱壳后的文件发现程序无法运行看来是遇到自效验了 同时载入两个EXE 单步跟踪到如下位置
004EDDC9    .  8B15 0C304F00       mov edx,dword ptr ds:[4F300C]
004EDDCF    .  8B52 04             mov edx,dword ptr ds:[edx+4]
004EDDD2    .  E8 6169F1FF         call dump.00404738
004EDDD7    .  74 0A               je short dump.004EDDE3   关键跳修改为jmp就可以了
004EDDD9    .  E8 965FF1FF         call dump.00403D74
004EDDDE    .  E9 82000000         jmp dump.004EDE65
004EDDE3    >  33C0                xor eax,eax
004EDDE5    .  5A                  pop edx
004EDDE6    .  59                  pop ecx

-----------------------------追码---------------------------
好 脱壳 自效验解决之后开始进入追码
首先我们看一下错误的注册信息 “请填入有效的注册码”
由于MessageBoxA断点下不下来  所以我们查找ASCII    列表的最下面有我们需要的东西
双击“请填入有效的注册码”我们来到004ECEBC       我们直接在段首下断点004ECE8B
F9运行   随便输入点东西我们来到
004ECE8B    .  53                  push ebx       段首
004ECE8C    .  8BD8                mov ebx,eax
004ECE8E    .  33C0                xor eax,eax
004ECE90    .  55                  push ebp
004ECE91    .  68 2ED04E00         push dump1.004ED02E
004ECE96    .  64:FF30             push dword ptr fs:[eax]
004ECE99    .  64:8920             mov dword ptr fs:[eax],esp
004ECE9C    .  8D55 F4             lea edx,dword ptr ss:[ebp-C]
004ECE9F    .  8B83 0C030000       mov eax,dword ptr ds:[ebx+30C]
004ECEA5    .  E8 1A70F7FF         call dump1.00463EC4               取得注册码长度
004ECEAA    .  8B45 F4             mov eax,dword ptr ss:[ebp-C]     取得注册码
004ECEAD    .  E8 3A77F1FF         call dump1.004045EC               
004ECEB2    .  83F8 10             cmp eax,10                                  长度是否等于16
004ECEB5    .  74 14               je short dump1.004ECECB            等于则跳,不等则挂
004ECEB7    .  E8 9407F2FF         call dump1.0040D650
004ECEBC    .  B8 44D04E00         mov eax,dump1.004ED044
004ECEC1    .  E8 9EA2F4FF         call dump1.00437164
004ECEC6    .  E9 38010000         jmp dump1.004ED003

跳转后来到
004ECECB    > \33C9                xor ecx,ecx
004ECECD    .  B2 01               mov dl,1
004ECECF    .  A1 CCBB4100         mov eax,dword ptr ds:[41BBCC]
004ECED4    .  E8 4740F3FF         call dump1.00420F20
004ECED9    .  8945 FC             mov dword ptr ss:[ebp-4],eax
004ECEDC    .  8D55 EC             lea edx,dword ptr ss:[ebp-14]
004ECEDF    .  A1 E4114F00         mov eax,dword ptr ds:[4F11E4]
004ECEE4    .  8B00                mov eax,dword ptr ds:[eax]
004ECEE6    .  E8 5172F9FF         call dump1.0048413C                 取得程序运行目录
004ECEEB    .  8B45 EC             mov eax,dword ptr ss:[ebp-14]
004ECEEE    .  8D55 F0             lea edx,dword ptr ss:[ebp-10]
004ECEF1    .  E8 0EC6F1FF         call dump1.00409504
004ECEF6    .  8D45 F0             lea eax,dword ptr ss:[ebp-10]
004ECEF9    .  BA 60D04E00         mov edx,dump1.004ED060                          ;  ASCII "licence.dat"
004ECEFE    .  E8 F176F1FF         call dump1.004045F4              载入程序运行目录的DAT
004ECF03    .  8B45 F0             mov eax,dword ptr ss:[ebp-10]
004ECF06    .  E8 69C5F1FF         call dump1.00409474
004ECF0B    .  84C0                test al,al                      判断文件是否存在 存在为1 不存在为0
004ECF0D    .  75 40               jnz short dump1.004ECF4F         存在则跳 不存在则创建  我们自己创建一个

创建之后来到
004ECF4F    > \6A 42               push 42
004ECF51    .  8D55 DC             lea edx,dword ptr ss:[ebp-24]
004ECF54    .  A1 E4114F00         mov eax,dword ptr ds:[4F11E4]
004ECF59    .  8B00                mov eax,dword ptr ds:[eax]
004ECF5B    .  E8 DC71F9FF         call dump1.0048413C
004ECF60    .  8B45 DC             mov eax,dword ptr ss:[ebp-24]
004ECF63    .  8D55 E0             lea edx,dword ptr ss:[ebp-20]
004ECF66    .  E8 99C5F1FF         call dump1.00409504
004ECF6B    .  8D45 E0             lea eax,dword ptr ss:[ebp-20]
004ECF6E    .  BA 60D04E00         mov edx,dump1.004ED060                          ;  ASCII "licence.dat"
004ECF73    .  E8 7C76F1FF         call dump1.004045F4           读取licence.dat
004ECF78    .  8B4D E0             mov ecx,dword ptr ss:[ebp-20]                   ; |
004ECF7B    .  B2 01               mov dl,1                                        ; |
004ECF7D    .  A1 60BA4100         mov eax,dword ptr ds:[41BA60]                   ; |
004ECF82    .  E8 693BF3FF         call dump1.00420AF0                             ; \dump1.00420AF0
004ECF87    .  8945 F8             mov dword ptr ss:[ebp-8],eax
004ECF8A    >  33C0                xor eax,eax
004ECF8C    .  55                  push ebp
004ECF8D    .  68 EDCF4E00         push dump1.004ECFED
004ECF92    .  64:FF30             push dword ptr fs:[eax]
004ECF95    .  64:8920             mov dword ptr fs:[eax],esp
004ECF98    .  8D55 D8             lea edx,dword ptr ss:[ebp-28]
004ECF9B    .  8B83 0C030000       mov eax,dword ptr ds:[ebx+30C]
004ECFA1    .  E8 1E6FF7FF         call dump1.00463EC4            取出licence.dat文件内容
004ECFA6    .  8B55 D8             mov edx,dword ptr ss:[ebp-28]
004ECFA9    .  8B45 FC             mov eax,dword ptr ss:[ebp-4]
004ECFAC    .  E8 8340F3FF         call dump1.00421034
004ECFB1    .  6A 00               push 0
004ECFB3    .  6A 00               push 0
004ECFB5    .  8B55 FC             mov edx,dword ptr ss:[ebp-4]
004ECFB8    .  8B45 F8             mov eax,dword ptr ss:[ebp-8]
004ECFBB    .  E8 B438F3FF         call dump1.00420874
004ECFC0    .  E8 8B06F2FF         call dump1.0040D650
004ECFC5    .  B8 74D04E00         mov eax,dump1.004ED074
004ECFCA    .  E8 95A1F4FF         call dump1.00437164       提示说需要重新运行程序来验证注册码
004ECFCF    .  33C0                xor eax,eax
004ECFD1    .  5A                  pop edx
004ECFD2    .  59                  pop ecx
004ECFD3    .  59                  pop ecx

现在我们发现这个程序需要重新运行才能够验证注册码,也就是说在下一次打开程序的时候才开始验证注册码,我们现在找不到他的注册算法,所以我们在重新看一下ASCII  在“注册码已经保存,请重新打开程序以验证注册码是否有效”下面我们发现  有一个OPEN指令 ,我感觉可能是从这里开始验证注册码  我们双击第一个licence.dat  来到004ED48D  

004ED464    .  55                  push ebp
004ED465    .  68 F7D54E00         push dump1.004ED5F7
004ED46A    .  64:FF30             push dword ptr fs:[eax]
004ED46D    .  64:8920             mov dword ptr fs:[eax],esp
004ED470    .  8D55 DC             lea edx,dword ptr ss:[ebp-24]
004ED473    .  A1 E4114F00         mov eax,dword ptr ds:[4F11E4]
004ED478    .  8B00                mov eax,dword ptr ds:[eax]
004ED47A    .  E8 BD6CF9FF         call dump1.0048413C
004ED47F    .  8B45 DC             mov eax,dword ptr ss:[ebp-24]
004ED482    .  8D55 E0             lea edx,dword ptr ss:[ebp-20]
004ED485    .  E8 7AC0F1FF         call dump1.00409504                     取得程序运行目录
004ED48A    .  8D45 E0             lea eax,dword ptr ss:[ebp-20]
004ED48D    .  BA 10D64E00         mov edx,dump1.004ED610                          ;  ASCII "licence.dat"
004ED492    .  E8 5D71F1FF         call dump1.004045F4                         载入DAT
004ED497    .  8B45 E0             mov eax,dword ptr ss:[ebp-20]
004ED49A    .  E8 D5BFF1FF         call dump1.00409474
004ED49F    .  84C0                test al,al                                              判断文件是否存在
004ED4A1    .  75 09               jnz short dump1.004ED4AC             存在则跳 不存在则不跳

跳转来到
004ED4AC    > \8D55 CC             lea edx,dword ptr ss:[ebp-34]

慢慢往下跟来到
004ED589    .  6A 00               push 0
004ED58B    .  6A 00               push 0
004ED58D    .  8B55 F8             mov edx,dword ptr ss:[ebp-8]
004ED590    .  8B45 F4             mov eax,dword ptr ss:[ebp-C]
004ED593    .  E8 DC32F3FF         call dump1.00420874   
004ED598    .  8B45 E4             mov eax,dword ptr ss:[ebp-1C]      这里可以直接取出正确的注册码
004ED59B    .  8B55 F4             mov edx,dword ptr ss:[ebp-C]
004ED59E    .  8B52 04             mov edx,dword ptr ds:[edx+4]      取出licence.dat里的注册码
004ED5A1    .  E8 9271F1FF         call dump1.00404738           对两个注册码进行比较
004ED5A6    .  0F9445 FF           sete byte ptr ss:[ebp-1]
004ED5AA    .  33C0                xor eax,eax

由于我的能力实在是有限 刚学逆向调试1个星期看这些代码我就已经很累了  写的比较乱 请多包涵
  希望版主大大给个邀请码

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 1
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
望高手写出注册算法
2011-11-13 11:59
0
雪    币: 3511
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
刚学就有这样的成绩,佩服
2011-11-13 12:05
0
雪    币: 106
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
顶楼主  在这里好好学哦
2011-11-13 13:32
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
( ^_^ )不错嘛
2011-11-13 14:24
0
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
现在有点看不懂,不过,,会继续努力呀!!
2011-11-13 17:38
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
仿佛…只有纯粹的原创才能弄到邀请码。就像一些不为人知的好东西…不过支持你
2011-11-14 08:23
0
雪    币: 295
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我相信你在破解自校验部分一定还省略了很关键的分析  不知道你是什么原因
2011-11-14 08:54
0
雪    币: 81
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
不错!!!!!!!!支持楼主
2011-11-14 09:39
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
关键部分都隐藏啦,没什么好看的。。。
2011-12-18 15:15
0
雪    币: 170
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pbt
11
都非常牛叉啊,羡慕。。。。。
2011-12-18 16:35
0
雪    币: 50
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
精彩作品  不错。
2011-12-18 16:47
0
游客
登录 | 注册 方可回帖
返回
//