飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2799|回复: 4

脱DLL问题

[复制链接]
  • TA的每日心情
    开心
    5 天前
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2009-8-17 14:55:42 | 显示全部楼层 |阅读模式
    软体名称: XX管理系统
    软体大小: 10.2MB
    软体语言: 简体中文
    软体类别: 流程软件
    PEiD: Anti007 V1.0-V2.X -> NsPacK Private   * Sign.By.fly *
    公司前段叫人开发的流程软件,因为这套软件是每台电脑使用都要一个加密狗,现在加了几台电脑没有狗用不了,而作者已经跑路找不到了想买都买不到..汗死.....
    主程序已经脱了.就差这个DLL.按主程序的方法脱不了
    下载地址:  http://www.rayfile.com/files/ca84b319-8a3f-11de-ab24-0014221f469f/
    分析过程
    .009D71B1 PR> $  9C                pushfd                         //入口处
    009D71B2     .  60                pushad
    009D71B3     .  E8 33000000       call PRSDLL.009D71EB
    009D71B8     >  5D                pop ebp
    009D71B9     .  B8 A3050150       mov eax,500105A3
    ........................
    009D7290     .  FFD0              call eax              //F2下断 F7进入
    009D7292     .  83C4 04           add esp,4
    009D7295     .  58                pop eax
    009D7296     .  5F                pop edi
    009D7297     .  50                push eax
    009D7298     .  68 00000000       push 0
    009D729D     .  68 0A000000       push 0A
    009D72A2     .  05 56160000       add eax,1656
    009D72A7     .  57                push edi
    009D72A8     .  FFD0              call eax
    .................................................
    00A0160E      E8 ED010000         call 00A01800
    00A01613      85C0                test eax,eax
    00A01615      74 38               je short 00A0164F      ///无狗这里改jnz可以跳过狗检测一直可以跑到OEP
    00A01617      43                  inc ebx
    00A01618      81FB FF000000       cmp ebx,0FF
    00A0161E    ^ 7C E0               jl short 00A01600
    00A01620      33DB                xor ebx,ebx
    00A01622      53                  push ebx
    00A01623      6A 01               push 1
    00A01625      FF35 9077A000       push dword ptr ds:[A07790]
    00A0162B      FF15 6460A000       call dword ptr ds:[A06064]               ; kernel32.ReleaseSemaphore
    00A01631      FF35 9077A000       push dword ptr ds:[A07790]
    -----------------------------------------------
    009D747D     .  5B                pop ebx
    009D747E     .  59                pop ecx
    009D747F     .  5E                pop esi
    009D7480     .  83C3 0C           add ebx,0C
    009D7483     .^ E2 E1             loopd short PRSDLL.009D7466
    009D7485     >  61                popad
    009D7486     .  9D                popfd
    009D7487     .- E9 749BF4FF       jmp PRSDLL.00921000             //JMP往OEP
    -------------------------------------------------
    00921000     > /A1 5A009400       mov eax,dword ptr ds:[94005A]     ////这里是OEP.
    00921005     . |C1E0 02           shl eax,2
    00921008     . |A3 5E009400       mov dword ptr ds:[94005E],eax
    0092100D     . |837C24 08 01      cmp dword ptr ss:[esp+8],1
    00921012     . |0F85 9B000000     jnz PRSDLL.009210B3
    00921018     . |803D 72009400 00  cmp byte ptr ds:[940072],0
    0092101F     . |74 24             je short PRSDLL.00921045
    00921021     . |E8 86E90100       call PRSDLL.0093F9AC                     ;  jmp to kernel32.GetVersion
    00921026     . |BA 73009400       mov edx,PRSDLL.00940073                  ;  ASCII "Nonshared DATA segment required"
    0092102B     . |25 00000080       and eax,80000000
    00921030     . |74 05             je short PRSDLL.00921037
    00921032     . |BA 93009400       mov edx,PRSDLL.00940093                  ;  ASCII "Cannot run multiple instances of a DLL under WIN32s"
    00921037     > |52                push edx
    00921038     . |E8 FBCB0100       call PRSDLL.0093DC38
    0092103D     . |58                pop eax
    0092103E     . |33C0              xor eax,eax
    00921040     . |E9 00010000       jmp PRSDLL.00921145
    00921045     > |FE05 72009400     inc byte ptr ds:[940072]
    0092104B     . |837C24 08 01      cmp dword ptr ss:[esp+8],1
    00921050     . |75 19             jnz short PRSDLL.0092106B
    00921052     . |57                push edi
    00921053     . |51                push ecx
    用OD插件DUMP提示"无法读取被调试进程的内存(00400000..004CFFFF)错误...但是插件的OEP是521000
    用LordPE DUMP没有提示
    用ImportREC无法修复指针.提示无法读取此内存.不是知道是不是OEP错了
    请大牛看看问题出在哪里?指点一下!!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2022-2-2 22:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-8-30 09:07:14 | 显示全部楼层
    貌似 inline Patch 的方法 好像可以.....  连脱壳好像都不用的...

      曾经在网络上看到过一篇相关文章,论坛还是博客,记不清了。

        只要在的程序的开头某处插入类似的SEH (结构化异常处理)[据说不脱壳的也OK],并在异常处理程序中针对要patch的地方设置“硬件断点”,等“硬件断点”激活后进行patch就可以了。这等于是在进程内嵌了一个微型的debugger,和进程外的debugger型的loader类似。


                    另外,我是新手 仅提供方法  不要问我具体操作步骤....
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2017-5-31 13:17
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2009-9-1 10:10:32 | 显示全部楼层
    DLL脱壳需要处理重定向。请搜索 “DLL脱壳”学习
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    5 天前
  • 签到天数: 4 天

    [LV.2]偶尔看看I

     楼主| 发表于 2009-9-3 10:01:47 | 显示全部楼层
    原帖由 cjteam 于 2009-9-1 10:10 发表
    DLL脱壳需要处理重定向。请搜索 “DLL脱壳”学习

    谢谢提醒.我竟然基本的重定向问题都忘记了.
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-12-27 19:17
  • 签到天数: 40 天

    [LV.5]常住居民I

    发表于 2009-9-11 00:17:48 | 显示全部楼层
    OEP 应该是471000
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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