首页
社区
课程
招聘
[旧帖] [原创]两种方法“以自己的名字注册ASProtect加壳程序” 0.00雪花
发表于: 2009-9-5 12:24 981

[旧帖] [原创]两种方法“以自己的名字注册ASProtect加壳程序” 0.00雪花

2009-9-5 12:24
981
---------------------------------------------------------------------------------
以壳解壳脱ASProtect 1.23 RC4 - 1.3.08.24 -> Alexey Solodovnikov之Crystal Button v2.50+用自己的名字注册
这个很简单。。拿来练练手吧
********************************************************************************************
OD设置忽略除了内存访问之外的所有异常!
00401000 cry> 68 01009000     push crysb.00900001 //入口!
00401005       E8 01000000     call crysb.0040100B
0040100A       C3              retn
0040100B       C3              retn
0040100C       EB 6E           jmp short crysb.0040107C
0040100E       C2 6873         retn 7368

Shift+F9走!第23次的时候第2次看到硬盘指纹。。。

016D46A5       3100            xor dword ptr ds:[eax],eax //第23次
016D46A7       EB 01           jmp short 016D46AA
016D46A9       68 648F0500     push 58F64
016D46AE       0000            add byte ptr ds:[eax],al
016D46B0       00EB            add bl,ch

堆栈提示:
0012FF50     016C0000
0012FF54     016A0000
0012FF58     016D4138
0012FF5C     016E94E4    ASCII "6uob9ACQoUA="
0012FF60     016D3616    返回到 016D3616 来自 016C2524
0012FF64     016A0000

在CODE段下断,Shift+F9运行!

004085E0       8B4424 04       mov eax,dword ptr ss:[esp+4] //到这里!
004085E4       A3 98324C00     mov dword ptr ds:[4C3298],eax //[4C3298]是保存注册地址的
004085E9       C2 0400         retn 4

004085E4    A3 98324C00     mov dword ptr ds:[4C3298],eax

继续Shift+F9运行,第26次到达最后一次异常!

016D39EC       3100            xor dword ptr ds:[eax],eax //最后一次异常
016D39EE       64:8F05 0000000>pop dword ptr fs:[0]
016D39F5       58              pop eax
016D39F6       833D B07E6D01 0>cmp dword ptr ds:[16D7EB0],0
016D39FD       74 14           je short 016D3A13
016D39FF       6A 0C           push 0C
016D3A01       B9 B07E6D01     mov ecx,16D7EB0
016D3A06       8D45 F8         lea eax,dword ptr ss:[ebp-8]
016D3A09       BA 04000000     mov edx,4
016D3A0E       E8 2DD1FFFF     call 016D0B40
016D3A13       FF75 FC         push dword ptr ss:[ebp-4]
016D3A16       FF75 F8         push dword ptr ss:[ebp-8]
016D3A19       8B45 F4         mov eax,dword ptr ss:[ebp-C]
016D3A1C       8338 00         cmp dword ptr ds:[eax],0
016D3A1F       74 02           je short 016D3A23
016D3A21       FF30            push dword ptr ds:[eax]
016D3A23       FF75 F0         push dword ptr ss:[ebp-10]
016D3A26       FF75 EC         push dword ptr ss:[ebp-14]
016D3A29       C3              retn //F2断下来,注意堆栈!

堆栈提示:
0012FF5C     016E7E9C
0012FF60     00400000    crysb.00400000
0012FF64     574F42C8
0012FF68     0012FFA4 =======>0012FF68
0012FF6C     016C0000

先要到达retn

0013FF68   0013FFA4

hr 0012FF68,F9运行!

016E8019      /EB 44           jmp short 016E805F //到这里,删除断点,F7一下!
016E801B      |EB 01           jmp short 016E801E
016E801D      |9A 51579CFC BF0>call far 00BF:FC9C5751
016E8024      |0000            add byte ptr ds:[eax],al
016E8026      |00B9 00000000   add byte ptr ds:[ecx],bh
016E802C      |F3:AA           rep stos byte ptr es:[edi]

016E805F       03C3            add eax,ebx //到这里,F8一下!
016E8061       BB C4000000     mov ebx,0C4 //这里就是我们以壳解壳的OEP=012E8061
016E8066       0BDB            or ebx,ebx
016E8068       75 07           jnz short 016E8071
016E806A       894424 1C       mov dword ptr ss:[esp+1C],eax
016E806E       61              popad

AsprDbgr 配合 ImportREC
00E769A9    BB C4000000     mov ebx,0C4

汗啊,要减去基址   00A769A9 这个还每次都不同 我估计是真正stolen code 上面的一段都可以
dump的一段里面

打开LordPE,完全DUMP这个进程!再区域脱壳Region016E0000-016EC000.dmp(016E0000-00400000=012E0000)

组装Unpack.exe

请出AsprDbgr 修复输入表!

AsprDbgr v1.0beta (:P) Made by me... Manko.

iEP=401000 (C:\Program Files\CrystalButton2\crysb.exe)

    IAT Start: 492000
          End: 492730
       Length: 730
      IATentry 492208 = 16D1CD8 resolved as GetCommandLineA
      IATentry 492224 = 16D1C64 resolved as GetModuleHandleA
      IATentry 492244 = 16D17A4 resolved as GetProcAddress
      IATentry 492288 = 16D1CC8 resolved as LockResource
      IATentry 492298 = 16D1C8C resolved as GetVersion
      IATentry 492320 = 16D1CB8 resolved as GetCurrentProcess
    12 invalid entries erased.
Dip-Table at adress: 16D7AB4
    0 4085E0 0 0 0 0 0 0 0 0 0 0 0 0
Last SEH passed. (16D39EE) Searching for signatures. Singlestepping to OEP!
    Call + OEP-jump-setup at: 16E6049 ( Code: E8000000 5D81ED )
    Mutated, stolen bytes at: 16E6095 ( Code: EB02CD20 EB02CD20 )
    Erase of stolen bytes at: 16E5FF8 ( Code: 9CFCBF37 606E01B9 )
      Repz ... found. Skipping erase of stolen bytes. ;)
possible (temp)OEP: 4364B6 (Reached from preOEP: 16E6009)

打开IR1.6,在OEP处添0364B6,获取输入表全部有效--再把OEP改成012E8061--修复抓取文件!

呵呵~可以运行,,现在我们来Pre-Dip注册一下~~

OD载入Unpack_.exe

还记得4C3298?

DD 4C3298

004C3298 016C3861 Unpack_.016C3861
004C329C 6D6F6F7A
004C32A0 00000000
004C32A4 00007963

找块空地。。我找004DFFF4写入******

现在修改成

004C3298 004DFFF4 ASCII "******"
004C329C 6D6F6F7A
004C32A0 00000000
004C32A4 00007963

因为没有试用标志。。。就不用改了

现在复制可执行文本--覆盖保存!

运行看看。。。呵呵已经注册给******了。。

抓个图留恋吧。。。到此为止。。。

***********
Stolen Code

push ebp
mov ebp,esp
push -1
push 49A4A8
push 4363B8
mov eax,dword ptr fs:[0]
push eax
mov dword ptr fs:[0],esp
sub esp,58
push ebx
push esi
push edi           
mov dword ptr ss:[ebp-18],esp

55 8B EC 6A FF 68 A8 A4 49 00 68 B8 63 43 00 64 A1 00 00 00 00 50 64 89 25 00 00 00 00 83 EC 58
53 56 57 89 65 E8

全F7下来

00E77B67    55              push ebp
00E77B68    8BEC            mov ebp,esp
00E77B6A    6A FF           push -1
00E77B6C    68 A8A44900     push 49A4A8
00E77B71    68 B8634300     push 4363B8
00E77B76    64:A1 00000000 mov eax,dword ptr fs:[0]

00E77B7F    50              push eax
00E77B80    64:8925 0000000>mov dword ptr fs:[0],esp
00E77B87    83EC 58         sub esp,58

00E77B8D    53              push ebx

00E77B91    56              push esi

00E77B95    57              push edi                                 ; ntdll.7C930208
00E77B96    8965 E8         mov dword ptr ss:[ebp-18],esp

截屏程序是对比 C++ 入口特征的

这里用等级一加插件修复

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//