软件 ----- 超星数字图书馆3.8
查壳,为ASProtect 1.1b Registered [SAC] -> Alexey Solodovnikov
OD载入程序,
00B1C001 > 60 PUSHAD \\入口
00B1C002 E9 FC050000 JMP ssreader.00B1C603
00B1C007 55 PUSH EBP
00B1C008 8930 MOV DWORD PTR DS:[EAX],ESI
00B1C00A 856D 17 TEST DWORD PTR SS:[EBP+17],EBP
00B1C00D 8E06 MOV ES,WORD PTR DS:[ESI] ; 修正的段位寄存器
F9运行。
0144FF94 8DC0 LEA EAX,EAX ; 非法使用寄存器
0144FF96 EB 01 JMP SHORT 0144FF99
0144FF98 68 648F0500 PUSH 58F64
0144FF9D 0000 ADD BYTE PTR DS:[EAX],AL
0145053D 8DC0 LEA EAX,EAX ; 非法使用寄存器
0145053F EB 01 JMP SHORT 01450542
01450541 68 648F0500 PUSH 58F64
01450546 0000 ADD BYTE PTR DS:[EAX],AL
01450548 00EB ADD BL,CH
0145054A 02E8 ADD CH,AL
继续Shift+F9 12次到最后一次SEH异常。
Alt+M 打开内存镜像
内存镜像
内存镜像,项目 14
内存镜像,项目 13
地址=00400000
大小=00001000 (4096.)
Owner=ssreader 00400000 (itself)
区段=
包含=PE header
类型=Imag 01001002
访问=R
初始访问=RWE
地址=00401000
大小=00392000 (3743744.)
Owner=ssreader 00400000
区段=
包含=code
类型=Imag 01001002
访问=R
初始访问=RWE
在Code段下 内存访问断点
Shift+F9运行
程序到
00401C30 EB 10 JMP SHORT ssreader.00401C42
00401C32 66:623A BOUND DI,DWORD PTR DS:[EDX]
00401C35 43 INC EBX
00401C36 2B2B SUB EBP,DWORD PTR DS:[EBX]
00401C38 48 DEC EAX
00401C39 4F DEC EDI
00401C3A 4F DEC EDI
00401C3B 4B DEC EBX
00401C3C 90 NOP
迷惑,看前人的经验,应该是到出口点了,为什么我这里没有到。有没有高手帮忙看看,是不是我那里超做失误,或者是有2个壳,等其他原因.
F8下走,
00401C59 E8 96953600 CALL ssreader.0076B1F4
00401C5E 5A POP EDX
00401C5F E8 F4943600 CALL ssreader.0076B158
00401C64 E8 CB953600 CALL ssreader.0076B234
00401C69 6A 00 PUSH 0
00401C6B E8 5CAE3600 CALL ssreader.0076CACC
00401C70 59 POP ECX
00401C71 68 34307900 PUSH ssreader.00793034
00401C76 6A 00 PUSH 0
00401C78 E8 1DFF3800 CALL ssreader.00791B9A
00401C7D A3 93307900 MOV DWORD PTR DS:[793093],EAX
00401C82 6A 00 PUSH 0
00401C84 E9 43583700 JMP ssreader.007774CC //下跳了
00401C89 > E9 8AAE3600 JMP ssreader.0076CB18
00401C8E 33C0 XOR EAX,EAX
---
007774CC 55 PUSH EBP // 不知道这里是不是程序出口点?
007774CD 8BEC MOV EBP,ESP
007774CF 83C4 F4 ADD ESP,-0C
007774D2 53 PUSH EBX
007774D3 56 PUSH ESI
007774D4 57 PUSH EDI
随便问下, ASProtect 1.1b脱壳后修复程序,是怎么修复?
[培训]科锐逆向工程师培训第53期2025年7月8日开班!