能力值:
( LV9,RANK:490 )
|
-
-
2 楼
支持并学习一下!
有时间也来写一个玩玩!
|
能力值:
( LV9,RANK:180 )
|
-
-
3 楼
LS的东西都太难了
不玩了.
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
我调试了一下午都没弄明白,现在有点晕, ,貌似连输入lz的密码也不行,明天再试一试
还是不行,sigh
请教下,不知道是不是我的分析有误
函数 004014C0:
//char str[]代表注册码
FEBAF001→[ebp-4]
↓
———————————————
↓ ↓
if(str[0]=='t') else
↓ ↓
↓ str[2]^FEBAF001→[ebp-4]
↓ ↓ rol 4
—————————————————
↓ rol 8
strlen(str)==7
↓
————————————————————
↓ ↓
Yes no
↓ ↓
↓ str[5]^[ebp-4]→[ebp-4]
↓ ↓
————————————————————
↓ rol 4
str[0]-str[4]==2
↓
—————————————————
↓ ↓
Yes no
↓ ↓
str[4]^[ebp-4]→[ebp-4] str[6]^[ebp-4]→[ebp-4]
↓ ↓
—————————————————
↓
Str[4]-str[1]==0xA
↓
————————————————
↓ ↓
Yes No
↓ ↓ rol 0x10
str[2]^[ebp-4]→[ebp-4] ↓
↓ rol 8 ↓
————————————————
↓
str[1]-str[2]==0x35
↓
————————————————————————
↓ ↓
Yes No
↓ rol 0x10 ↓
↓ str[5]^[ebp-4]→[ebp-4]
↓ ↓
————————————————————————
↓
[ebp-4]^(str[0]-str[3])→[ebp-4]
↓
str[4]^[ebp-4]→[ebp-4]
↓ rol 8
Str[5]==0x69
↓
———————————————————
↓ ↓
Yes no
↓ ↓
↓ F001F001→[ebp-4]
↓ ↓
———————————————————
↓
Str[5]^[ebp-4]→[ebp-4] (AF0E7CEF)
↓
Str[6]==0x6E
↓
——————————————————
↓ ↓
Yes no
↓ ↓
↓ BADDF00D→[ebp-4]
↓ ↓
———————————————————
↓
返回 [ebp-4](须等于AF0E7C86)
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
支持一下,
慢慢看
|
能力值:
( LV7,RANK:110 )
|
-
-
6 楼
回复fonilye: "返回 [ebp-4](须等于AF0E7C86)"为什么是AF0E7C86???,我觉得cmp dword ptr [ebp-558], AF006DC3里的AF006DC3应该是常量,不会因为换了机器就改变呀???
0040141E . 8985 A8FAFFFF mov dword ptr [ebp-558], eax
00401424 . 8B0D D8414100 mov ecx, dword ptr [4141D8]
0040142A . 890D DC414100 mov dword ptr [4141DC], ecx
00401430 . 8B95 A8FAFFFF mov edx, dword ptr [ebp-558]
00401436 . 3315 D0414100 xor edx, dword ptr [4141D0]
0040143C . 8995 A8FAFFFF mov dword ptr [ebp-558], edx
00401442 . A1 DC414100 mov eax, dword ptr [4141DC]
00401447 . A3 E0414100 mov dword ptr [4141E0], eax
0040144C . 8B8D A8FAFFFF mov ecx, dword ptr [ebp-558]
00401452 . 330D E0414100 xor ecx, dword ptr [4141E0]
00401458 . 898D A8FAFFFF mov dword ptr [ebp-558], ecx
0040145E . 81BD A8FAFFFF>cmp dword ptr [ebp-558], AF006DC3
00401468 . 74 0F je short 00401479
0040146A . 68 58104100 push 00411058 ; wrong!\n
0040146F . E8 7F0B0000 call 00401FF3
请看看dword ptr [4141D8],dword ptr [4141D0],dword ptr [4141DC],dword ptr [4141E0]这几个地方的数据,我的机子上全是0所以可以用AF006DC3直接逆出注册码第4位,如果以上几个地方的数据不为0,我猜应该是一些机器特征。详细还等你的分析。
|
能力值:
( LV7,RANK:110 )
|
-
-
7 楼
是大侠你不想吧!
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
那个值是逆推得出来的,不知道会不会用到机器特征码,可以试一下,在
00401416 . E8 A5000000 call 004014C0
返回处将eax改成AF0E7C86试试能不能跳到“you got it”。在我的机器上能
程序开始时(即eip=0040251E时)
都是零
调试到eip=0040144C时
[4141D0]是0,[4141D4]、[4141D8]、[4141DC]、[4141E0]是相同的,都是0E1145
更难过的是直接爆破[00401468]时
00401468 /75 0F jnz short 00401479
程序报错
|
能力值:
( LV6,RANK:90 )
|
-
-
9 楼
流程图都画出来了。。。
|
能力值:
( LV7,RANK:110 )
|
-
-
10 楼
00401235 . 83C4 04 add esp, 4
00401238 . FF05 D0414100 inc dword ptr [4141D0]
0040123E . 0F31 rdtsc <----------anti-debug
00401240 . 0105 D4414100 add dword ptr [4141D4], eax
这里有anti-debug,如果anti-debug后[4141D4]就不为0(每一次数值都不同),结果就不对了,隐藏OD试试!!
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
lz正解,茅塞顿开,多谢
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
其实我一直想问个问题,他们标的什么注册码长度啊,计算的CALL了是如何知道的呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
顶下 慢慢看``
|
|
|