damgda 发表于 2014-10-19 23:48

WinXAR.v2.0破解过程分析

本帖最后由 damgda 于 2014-10-20 09:58 编辑

主程序WinXAR.exe 用的PEtite 2.x加壳,脱壳没有任何难度,esp定律,alt+F9几次后到达oep下一行,dump,修复。追码过程我是带壳分析的,脱壳是后来做的,因为很少见到这种壳。
未注册的时候:


注册后:

首先填入假码:12345-AAAAA-67890-BBBBB-123CC
用户名:52pojie

跟踪过程发现第一、三组和第第四组的前三位与注册无关,
注册码是第二、四组及注册码的后两位
看看关键代码:
0051510D|.55            push ebp
0051510E|.68 A7525100   push WinXAR.005152A7
00515113|.64:FF30       push dword ptr fs:
00515116|.64:8920       mov dword ptr fs:,esp
00515119|.8D55 F8       lea edx,
0051511C|.8B83 FC020000 mov eax,dword ptr ds:
00515122|.E8 6DD1F5FF   call WinXAR.00472294
00515127|.FF75 F8       push
0051512A|.8D55 F4       lea edx,
0051512D|.8B83 04030000 mov eax,dword ptr ds:
00515133|.E8 5CD1F5FF   call WinXAR.00472294
00515138|.FF75 F4       push
0051513B|.8D55 F0       lea edx,
0051513E|.8B83 0C030000 mov eax,dword ptr ds:
00515144|.E8 4BD1F5FF   call WinXAR.00472294
00515149|.FF75 F0       push
0051514C|.8D55 EC       lea edx,
0051514F|.8B83 14030000 mov eax,dword ptr ds:
00515155|.E8 3AD1F5FF   call WinXAR.00472294
0051515A|.FF75 EC       push
0051515D|.8D55 E8       lea edx,
00515160|.8B83 1C030000 mov eax,dword ptr ds:
00515166|.E8 29D1F5FF   call WinXAR.00472294
0051516B|.FF75 E8       push
0051516E|.8D45 FC       lea eax,
00515171|.BA 05000000   mov edx,0x5
00515176|.E8 A9FAEEFF   call WinXAR.00404C24
0051517B|.8B45 FC       mov eax,
0051517E|.E8 01CAFDFF   call WinXAR.004F1B84
00515183|.84C0          test al,al
00515185|.0F84 E0000000 je WinXAR.0051526B                     ; -----------------------------关键跳,可以直接爆破掉
0051518B|.8D55 E4       lea edx,
0051518E|.8B83 3C030000 mov eax,dword ptr ds:
00515194|.E8 FBD0F5FF   call WinXAR.00472294
00515199|.837D E4 00    cmp ,0x0
0051519D|.75 26         jnz XWinXAR.005151C5                     ; -----------------判断是否有username
0051519F|.8B83 3C030000 mov eax,dword ptr ds:
005151A5|.8B10          mov edx,dword ptr ds:
005151A7|.FF92 C4000000 call dword ptr ds:
005151AD|.66:8B0D B4525>mov cx,word ptr ds:
005151B4|.B2 01         mov dl,0x1
005151B6|.B8 C0525100   mov eax,WinXAR.005152C0                  ;Please enter your full name.
005151BB|.E8 80A1FDFF   call WinXAR.004EF340
005151C0|.E9 C7000000   jmp WinXAR.0051528C
005151C5|>8D55 E0       lea edx,
005151C8|.8B83 FC020000 mov eax,dword ptr ds:
005151CE|.E8 C1D0F5FF   call WinXAR.00472294
005151D3|.FF75 E0       push
005151D6|.8D55 DC       lea edx,
005151D9|.8B83 04030000 mov eax,dword ptr ds:
005151DF|.E8 B0D0F5FF   call WinXAR.00472294
005151E4|.FF75 DC       push
005151E7|.8D55 D8       lea edx,
005151EA|.8B83 0C030000 mov eax,dword ptr ds:
005151F0|.E8 9FD0F5FF   call WinXAR.00472294
005151F5|.FF75 D8       push
005151F8|.8D55 D4       lea edx,
005151FB|.8B83 14030000 mov eax,dword ptr ds:
00515201|.E8 8ED0F5FF   call WinXAR.00472294
00515206|.FF75 D4       push
00515209|.8D55 D0       lea edx,
0051520C|.8B83 1C030000 mov eax,dword ptr ds:
00515212|.E8 7DD0F5FF   call WinXAR.00472294
00515217|.FF75 D0       push
0051521A|.A1 788E5200   mov eax,dword ptr ds:          ;啸R
0051521F|.BA 05000000   mov edx,0x5
00515224|.E8 FBF9EEFF   call WinXAR.00404C24
00515229|.8D55 CC       lea edx,
0051522C|.8B83 3C030000 mov eax,dword ptr ds:
00515232|.E8 5DD0F5FF   call WinXAR.00472294
00515237|.8B55 CC       mov edx,
0051523A|.A1 10845200   mov eax,dword ptr ds:          ;去R
0051523F|.E8 B4F6EEFF   call WinXAR.004048F8
00515244|.A1 E8815200   mov eax,dword ptr ds:          ;磨R
00515249|.C600 01       mov byte ptr ds:,0x1
0051524C|.66:8B0D B4525>mov cx,word ptr ds:
00515253|.B2 02         mov dl,0x2
00515255|.B8 E8525100   mov eax,WinXAR.005152E8                  ;Thank you for registering!
0051525A|.E8 E1A0FDFF   call WinXAR.004EF340
0051525F|.C783 4C020000>mov dword ptr ds:,0x1
00515269|.EB 21         jmp XWinXAR.0051528C
0051526B|>8B83 FC020000 mov eax,dword ptr ds:
00515271|.8B10          mov edx,dword ptr ds:
00515273|.FF92 C4000000 call dword ptr ds:
00515279|.66:8B0D B4525>mov cx,word ptr ds:
00515280|.B2 01         mov dl,0x1
00515282|.B8 0C535100   mov eax,WinXAR.0051530C                  ;Invalid register code.
00515287|.E8 B4A0FDFF   call WinXAR.004EF340
0051528C|>33C0          xor eax,eax
0051528E|.5A            pop edx
0051528F|.59            pop ecx
00515290|.59            pop ecx
00515291|.64:8910       mov dword ptr fs:,edx
00515294|.68 AE525100   push WinXAR.005152AE
00515299|>8D45 CC       lea eax,
0051529C|.BA 0D000000   mov edx,0xD
005152A1|.E8 22F6EEFF   call WinXAR.004048C8
005152A6\.C3            retn

让我们看看0051517E|.E8 01CAFDFF   call WinXAR.004F1B84处的代码:

004F1B98|.55            push ebp
004F1B99|.68 BB1C4F00   push WinXAR.004F1CBB
004F1B9E|.64:FF30       push dword ptr fs:
004F1BA1|.64:8920       mov dword ptr fs:,esp
004F1BA4|.8BC3          mov eax,ebx
004F1BA6|.E8 B92FF1FF   call WinXAR.00404B64
004F1BAB|.83F8 19       cmp eax,0x19
004F1BAE|.74 07         je XWinXAR.004F1BB7
004F1BB0|.33DB          xor ebx,ebx
004F1BB2|.E9 E9000000   jmp WinXAR.004F1CA0
004F1BB7|>8D45 F4       lea eax,
004F1BBA|.50            push eax
004F1BBB|.B9 05000000   mov ecx,0x5
004F1BC0|.BA 01000000   mov edx,0x1
004F1BC5|.8BC3          mov eax,ebx
004F1BC7|.E8 F831F1FF   call WinXAR.00404DC4
004F1BCC|.FF75 F4       push
004F1BCF|.8D45 F0       lea eax,
004F1BD2|.50            push eax
004F1BD3|.B9 05000000   mov ecx,0x5
004F1BD8|.BA 0B000000   mov edx,0xB
004F1BDD|.8BC3          mov eax,ebx
004F1BDF|.E8 E031F1FF   call WinXAR.00404DC4
004F1BE4|.FF75 F0       push
004F1BE7|.8D45 EC       lea eax,
004F1BEA|.50            push eax
004F1BEB|.B9 03000000   mov ecx,0x3
004F1BF0|.BA 15000000   mov edx,0x15
004F1BF5|.8BC3          mov eax,ebx
004F1BF7|.E8 C831F1FF   call WinXAR.00404DC4
004F1BFC|.FF75 EC       push
004F1BFF|.8D45 FC       lea eax,
004F1C02|.BA 03000000   mov edx,0x3
004F1C07|.E8 1830F1FF   call WinXAR.00404C24
004F1C0C|.8D45 E8       lea eax,
004F1C0F|.50            push eax
004F1C10|.B9 05000000   mov ecx,0x5
004F1C15|.BA 06000000   mov edx,0x6
004F1C1A|.8BC3          mov eax,ebx
004F1C1C|.E8 A331F1FF   call WinXAR.00404DC4
004F1C21|.FF75 E8       push
004F1C24|.8D45 E4       lea eax,
004F1C27|.50            push eax
004F1C28|.B9 05000000   mov ecx,0x5
004F1C2D|.BA 10000000   mov edx,0x10
004F1C32|.8BC3          mov eax,ebx
004F1C34|.E8 8B31F1FF   call WinXAR.00404DC4
004F1C39|.FF75 E4       push
004F1C3C|.8D45 E0       lea eax,
004F1C3F|.50            push eax
004F1C40|.B9 02000000   mov ecx,0x2
004F1C45|.BA 18000000   mov edx,0x18
004F1C4A|.8BC3          mov eax,ebx
004F1C4C|.E8 7331F1FF   call WinXAR.00404DC4
004F1C51|.FF75 E0       push
004F1C54|.8D45 F8       lea eax,
004F1C57|.BA 03000000   mov edx,0x3
004F1C5C|.E8 C32FF1FF   call WinXAR.00404C24
004F1C61|.8D4D DC       lea ecx,
004F1C64|.BA 310E331C   mov edx,0x1C330E31
004F1C69|.8B45 FC       mov eax,
004F1C6C|.E8 C7F4FFFF   call WinXAR.004F1138
004F1C71|.8B55 DC       mov edx,
004F1C74|.8D45 FC       lea eax,                        ;此处寄存器EDX出现类似注册码,但是多了最后一位
004F1C77|.E8 C02CF1FF   call WinXAR.0040493C
004F1C7C|.8D45 D8       lea eax,
004F1C7F|.50            push eax
004F1C80|.B9 0C000000   mov ecx,0xC
004F1C85|.BA 01000000   mov edx,0x1
004F1C8A|.8B45 FC       mov eax,
004F1C8D|.E8 3231F1FF   call WinXAR.00404DC4
004F1C92|.8B55 D8       mov edx,
004F1C95|.8B45 F8       mov eax,
004F1C98|.E8 1330F1FF   call WinXAR.00404CB0
004F1C9D|.0F94C3      sete bl
004F1CA0|>33C0          xor eax,eax
004F1CA2|.5A            pop edx
004F1CA3|.59            pop ecx
004F1CA4|.59            pop ecx
004F1CA5|.64:8910       mov dword ptr fs:,edx
004F1CA8|.68 C21C4F00   push WinXAR.004F1CC2
004F1CAD|>8D45 D8       lea eax,
004F1CB0|.BA 0A000000   mov edx,0xA
004F1CB5|.E8 0E2CF1FF   call WinXAR.004048C8
004F1CBA\.C3            retn

堆栈 ss:=00E996FC, (ASCII "LCAMUNAUPKTFL")
edx=00E8A0A0, (ASCII "1234567890123")
EDX里面的信息和堆栈里面都是LCAMUNAUPKTFL
LCAMUNAUPKTFL是13个字符
比AAAAA BBBBB CC多了一位,尝试分段LCAMUNAUPKTFL为LCAMU-NAUPK-TF
最后一位舍弃。


实验一:假设真码为12345-LCAMU-67890-NAUPK-123TF,用户名为:52pojie,填入注册框:

居然注册成功

实验二:更改注册码数字部分为11111-AAAAA-67890-BBBBB-123CC,验证部分仍然为 LFCJYNAUPKTFL 不变。
EAX 00000000
ECX 00000001
EDX 00EB9668 ASCII "LFCJYNAUPKTFL"
EBX 00EC6028 ASCII "11111AAAAA67890BBBBB123CC"

实验三:改变用户名为52pojie1,寄存器如下:
EAX 00000000
ECX 00000001
EDX 00EB9668 ASCII "LFCJYNAUPKTFL"
EBX 00EC6028 ASCII "11111AAAAA67890BBBBB123CC"
经过上述实验发现,注册码的比较与用户名无关,仅与注册码的第二、四组及第五组的最后两位相关,共12位。

注册码自行分段即可。
例如:
username:52pojie
key:12345-LCAMU-67890-NAUPK-123TF
名字任意,数字部分任意。
另外,注册码其实保存在该目录下的WinXAR.dat文件中。
你可以直接用我的dat文件。
附上注册机、脱壳后的主程序及原始安装包,希望以上分析对你有用。






damgda 发表于 2014-10-19 23:50

免CB,单独安装包的下载地址:http://jimisoft.com/soft/xarsetup.zip

alexjeniks 发表于 2014-10-20 00:19

感谢分享,这个很实用。

灵魂深处 发表于 2014-10-20 01:22

和winrar什么关系?

SoulKingLHW 发表于 2014-10-20 04:08

又见大牛! 哎! 我们这些小菜只能看看!

manbajie 发表于 2014-10-20 07:03

学习一下大神方法

damgda 发表于 2014-10-20 07:14

灵魂深处 发表于 2014-10-20 01:22
和winrar什么关系?

这个是读取xar格式的打包文件的,迅雷等软件就是用它加密的

Poner 发表于 2014-10-22 19:10

xar??怎么玩

damgda 发表于 2014-10-22 19:35

Poner 发表于 2014-10-22 19:10
xar??怎么玩

一种加密文件夹及文件的东西,你用这个看看迅雷目录的那些.xar的文件就明白了,里面是重要的配置文件,修改迅雷必备
页: [1]
查看完整版本: WinXAR.v2.0破解过程分析