吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5211|回复: 3
收起左侧

[原创] 分析某文件夹设置软件破文

[复制链接]
Charlie 发表于 2011-9-29 13:45
本帖最后由 Charlie 于 2011-9-29 13:50 编辑

【文章标题】: 分析文件夹设置软件破文
【文章作者】: Charlie
【作者邮箱】: charlie1992@qq.com
【作者主页】: http://2403320793.qzone.qq.com
【作者QQ号】: 2403320793
【软件名称】: 文件夹设置软件
【软件大小】: 1.23 MB
【下载地址】: http://thenlong.myetang.com/mysoft/fs0810.exe
【加壳方式】: UPX 0.89.6 - 1.02 / 1.05 - 2.90 ->
【保护方式】: 压缩壳
【编写语言】: Borland Delphi 6.0 - 7.0
【使用工具】: Od PEID keymake
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  
  PEDI查下壳 UPX 0.89.6 - 1.02 / 1.05 - 2.90
  
  对于这壳相信 不需要说怎么脱了吧....
  
  OK 我们打开脱壳后的Unpack.exe 发现(软件输入注册码)无法输入且确定按钮是灰色的
  
  这种类型的软件应该会有标记,我们运行Regmon(注册表监视软件)  File monitor(检测程序读取硬盘什么文件)
  
  监视软件打开后 正常运行unpack 发现 程序读取了它目录下的fs.ini文件 OK 我们打开来看下
  
  RegName=  
  
  RegCode=RegCode
      
  这里为注册名信息 我们把这里改为 RegName= Charlie
  
  修改保存之后 我们把程序载入OD F9运行  在输入注册号码那里 发现注册名显示的是Charlie
  
  我们这时候随便输入注册号 123456789 点击确定 提示 该注册号已被别人用过....
  
  此时 F12 ALT+K   找到 0012F31C 0045E067 ?<Jmp.user32.Messageboxa>  文件夹设 0045E062
  
  双击进入此调用CALL  朝下找
  
  0045E0D0  \.  C3            retn
  0045E0D1   .^ E9 925DFAFF   jmp     00403E68
  0045E0D6   .^ EB 9F         jmp     short 0045E077
  0045E0D8   .  8B45 F8       mov     eax, dword ptr [ebp-8]
  0045E0DB   .  5F            pop     edi
  0045E0DC   .  5E            pop     esi
  0045E0DD   .  5B            pop     ebx
  0045E0DE   .  8BE5          mov     esp, ebp
  0045E0E0   .  5D            pop     ebp
  0045E0E1   .  C2 0400       retn    4         这里下断 F9运行OD 点确定 断在这里  此时F8单步向下走
  
  来到这里
  
  00494893    B8 54494900     mov     eax, 00494954
  00494898    E8 9BFDFFFF     call    00494638
  0049489D    33C0            xor     eax, eax
  0049489F    5A              pop     edx
  004948A0    59              pop     ecx
  004948A1    59              pop     ecx
  004948A2    64:8910         mov     dword ptr fs:[eax], edx
  
  我们上翻  找到此处的断首
  
  004947F7    55              push    ebp     此处断首下断
  004947F8    68 B8484900     push    004948B8
  004947FD    64:FF30         push    dword ptr fs:[eax]
  00494800    64:8920         mov     dword ptr fs:[eax], esp
  00494803    8D55 FC         lea     edx, dword ptr [ebp-4]
  00494806    8B83 F4020000   mov     eax, dword ptr [ebx+2F4]
  
  F9 运行 点击确定 程序断在 004947F7 我们F8向下跟踪分析下代码
  
  00494803    8D55 FC         lea     edx, dword ptr [ebp-4]
  00494806    8B83 F4020000   mov     eax, dword ptr [ebx+2F4]
  0049480C    E8 1796FAFF     call    0043DE28
  00494811    8D55 F8         lea     edx, dword ptr [ebp-8]
  00494814    8B83 F8020000   mov     eax, dword ptr [ebx+2F8]
  0049481A    E8 0996FAFF     call    0043DE28
  0049481F    837D F8 00      cmp     dword ptr [ebp-8], 0   比较是否输入用户名 如无 确定不可用
  00494823    74 6E           je      short 00494893         如有则继续
  00494825    8D55 F4         lea     edx, dword ptr [ebp-C]
  00494828    8B45 FC         mov     eax, dword ptr [ebp-4]
  0049482B    E8 70FEFFFF     call    004946A0               此算法CALL 为把我们输入的用户名放到EAX算出注册码
  00494830    8B45 F8         mov     eax, dword ptr [ebp-8] 经过算法CALL 算出真码放入EDX
  00494833    8B55 F4         mov     edx, dword ptr [ebp-C] 假码 真码进行比较 00494836出现真码
  00494836    E8 8500F7FF     call    004048C0               取此处信息用Keymack即可做注册机
  0049483B    75 4A           jnz     short 00494887         相等则成功 不相等则失败
  0049483D    8B45 F8         mov     eax, dword ptr [ebp-8]
  00494840    50              push    eax
  00494841    A1 A85C4A00     mov     eax, dword ptr [4A5CA8]
  00494846    8B00            mov     eax, dword ptr [eax]
  00494848    B9 D0484900     mov     ecx, 004948D0                    ; ASCII "RegCode"
  0049484D    BA E0484900     mov     edx, 004948E0                    ; ASCII "Setting"
  
  
  我们F7跟进 0049482B CALL
  
  004946A0  /$  55            push    ebp
  004946A1  |.  8BEC          mov     ebp, esp
  004946A3  |.  83C4 F8       add     esp, -8
  004946A6  |.  53            push    ebx
  004946A7  |.  56            push    esi
  004946A8  |.  57            push    edi                    取输入用户名的位数 放入EAX
  004946A9  |.  8955 F8       mov     dword ptr [ebp-8], edx 输入用户名的位数移到Edi
  004946AC  |.  8945 FC       mov     dword ptr [ebp-4], eax
  004946AF  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  004946B2  |.  E8 AD02F7FF   call    00404964
  004946B7  |.  33C0          xor     eax, eax
  004946B9  |.  55            push    ebp
  004946BA  |.  68 29474900   push    00494729
  004946BF  |.  64:FF30       push    dword ptr fs:[eax]
  004946C2  |.  64:8920       mov     dword ptr fs:[eax], esp
  004946C5  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  004946C8  |.  E8 AF00F7FF   call    0040477C
  004946CD  |.  8BF8          mov     edi, eax
  004946CF  |.  85FF          test    edi, edi                              检测是否有输入
  004946D1  |.  7E 35         jle     short 00494708                        有输入则继续
  004946D3  |.  BE 01000000   mov     esi, 1                                1赋值给esi
  004946D8  |>  8B45 FC       /mov     eax, dword ptr [ebp-4]               用户名放入EAX
  004946DB  |.  8A5C30 FF     |mov     bl, byte ptr [eax+esi-1]             依次取用户名每位的十六制放入bl
  004946DF  |.  33C0          |xor     eax, eax                             清零
  004946E1  |.  8AC3          |mov     al, bl                               EAX清零 且将前面取的用户名某位的十六制移到Al
  004946E3  |.  83F8 4F       |cmp     eax, 4F                              比较用户名对应的十六进制是否大于4F
  004946E6  |.  7F 07         |jg      short 004946EF                       若大于则跳到4946EF 若小于继续运行计算
  004946E8  |.  03C0          |add     eax, eax                             Eax×2
  004946EA  |.  83E8 1F       |sub     eax, 1F                              eax-1值放到eax
  004946ED  |.  EB 07         |jmp     short 004946F6                       跳到4946F6 继续循环计算
  004946EF  |>  03C0          |add     eax, eax
  004946F1  |.  2D 80000000   |sub     eax, 80
  004946F6  |>  8BD8          |mov     ebx, eax                             每一位都计算完毕后,得到的值移到ebx
  004946F8  |.  8D45 FC       |lea     eax, dword ptr [ebp-4]
  004946FB  |.  E8 CC02F7FF   |call    004049CC
  00494700  |.  885C30 FF     |mov     byte ptr [eax+esi-1], bl             每一位用户名算后的值 放在替换原来那一位的值
  00494704  |.  46            |inc     esi                                   esi加1
  00494705  |.  4F            |dec     edi                                  edi减一
  00494706  |.^ 75 D0         \jnz     short 004946D8                       计算完毕 跳出循环
  00494708  |>  8B45 F8       mov     eax, dword ptr [ebp-8]
  0049470B  |.  8B55 FC       mov     edx, dword ptr [ebp-4]
  0049470E  |.  E8 05FEF6FF   call    00404518
  00494713  |.  33C0          xor     eax, eax
  00494715  |.  5A            pop     edx
  00494716  |.  59            pop     ecx
  00494717  |.  59            pop     ecx
  00494718  |.  64:8910       mov     dword ptr fs:[eax], edx
  0049471B  |.  68 30474900   push    00494730
  00494720  |>  8D45 FC       lea     eax, dword ptr [ebp-4]
  00494723  |.  E8 9CFDF6FF   call    004044C4
  00494728  \.  C3            retn
  00494729   .^ E9 3AF7F6FF   jmp     00403E68
  0049472E   .^ EB F0         jmp     short 00494720
  00494730   .  5F            pop     edi
  00494731   .  5E            pop     esi
  00494732   .  5B            pop     ebx
  00494733   .  59            pop     ecx
  00494734   .  59            pop     ecx
  00494735   .  5D            pop     ebp
  00494736   .  C3            retn
  
  
  最后得到
  用户名:Charlie
  注册码:gPBdXRJ
  
00494836  |.  E8 8500F7FF   call    004048C0  EDX
  
中断地址 494836
中断次数 1
第一字节 E8
指令长度 5
保存内存方式 为寄存器EDX
keygen到这里就完美结束了 当然了 追码到494836 即可 我追下来的目的只是学习交流而已.
额系小菜一个,大虾游走的啦....
--------------------------------------------------------------------------------
【版权声明】: 本文原创于Charlie, 转载请注明作者并保持文章的完整, 谢谢!
                                                       2011年09月29日 13:09:48

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| Charlie 发表于 2011-9-29 13:45
(*^__^*) 嘻嘻……  自己的沙发
Emil 发表于 2011-10-1 22:35
natdon 发表于 2011-10-2 14:08
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 10:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表