飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2384|回复: 3

第三课作业:去除程序退出时弹出网页(已更改)

[复制链接]
  • TA的每日心情
    奋斗
    2016-10-21 20:30
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2005-9-29 01:10:37 | 显示全部楼层 |阅读模式
    【破文标题】笑看人生(试用版)V2.01去除程序退出时弹出网页
    破解作者】hrbx
    【作者主页】hrbx.ys168.com
    【作者邮箱】[email protected]
    【破解平台】WinXP
    【使用工具】flyOD1.10、Peid
    【破解日期】2005-9-6 0:21:21
    【软件名称】笑看人生(试用版)V2.01
    【软件大小】1.28MB
    【下载地址】PYG官方论坛
    【加壳方式】无
    【软件简介】学员第三课作业
    --------------------------------------------------------------------------------------
    【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
    --------------------------------------------------------------------------------------
    【破解过程】
    1、查壳。用PEID扫描,显示为Borland Delphi 6.0 - 7.0,软件无壳。
    2、试运行软件。软件退出时会弹出作者网页,地址为:http://5green.nease.net
    3、方法一:

    OD载入,命令行下断点:bp ShellExecuteA,回车,F9运行,点击退出按钮,程序中断在如下位置:

    773F8B97 s>  55                 push ebp
    773F8B98     8BEC               mov ebp,esp
    773F8B9A     83EC 3C          sub esp,3C
    773F8B9D     8B45 08          mov eax,dword ptr ss:[ebp+8]
    773F8BA0     8365 E4 00     and dword ptr ss:[ebp-1C],0
    773F8BA4     8945 CC          mov dword ptr ss:[ebp-34],eax
    773F8BA7     8B45 0C          mov eax,dword ptr ss:[ebp+C]
    773F8BAA     8945 D0          mov dword ptr ss:[ebp-30],eax
    773F8BAD     8B45 10          mov eax,dword ptr ss:[ebp+10]
    773F8BB0     8945 D4          mov dword ptr ss:[ebp-2C],eax
    773F8BB3     8B45 14          mov eax,dword ptr ss:[ebp+14]
    773F8BB6     56                  push esi
    773F8BB7     8945 D8          mov dword ptr ss:[ebp-28],eax
    773F8BBA     8B45 18          mov eax,dword ptr ss:[ebp+18]
    773F8BBD     57                  push edi
    773F8BBE     8945 DC          mov dword ptr ss:[ebp-24],eax
    773F8BC1     8B45 1C          mov eax,dword ptr ss:[ebp+1C]
    773F8BC4     6A 06             push 6
    773F8BC6     8945 E0          mov dword ptr ss:[ebp-20],eax
    773F8BC9     59                  pop ecx

    这时,看堆栈友好提示:

    0012FC54   004B0455   /CALL 到 ShellExecuteA
    0012FC58   00220476   |hWnd = 00220476 ('笑看人生(试用版)V2.01',class='TForm1',parent=001A04D0)
    0012FC5C   00000000   |Operation = NULL
    0012FC60   004B0460   |FileName = "http://5green.nease.net"
    0012FC64   00000000   |Parameters = NULL
    0012FC68   00000000   |DefDir = NULL
    0012FC6C   00000001   \IsShown = 1
    0012FC70   00B2DCF4
    0012FC74   0043F1E6   返回到 unpack.0043F1E6

    在0012FC54   004B0455   /CALL 到 ShellExecuteA这一行右键--在反汇编窗口中跟随,来到:

    004B0441       68 60044B00    push unpack.004B0460                ;  ASCII "http://5green.nease.net"
    004B0446    .  6A 00              push 0
    004B0448    .  8BC3               mov eax,ebx
    004B044A       E8 6D3EF9FF    call unpack.004442BC
    004B044F       50                   push eax
    004B0450       E8 3331F8FF    call <jmp.&shell32.ShellExecuteA>  ;  这个就是退出软件弹出作者网页的CALL,NOP掉
    004B0455    .  8BC3               mov eax,ebx                        ;  <======在反汇编窗口中跟随后来到这里
    004B0457       E8 649DFAFF    call unpack.0045A1C0               ;  点击“退出”按钮时调用此CALL退出软件
    004B045C    .  5B                  pop ebx
    004B045D    .  C3                 retn

    4、方法二:

    OD载入,右键--Ultra String Reference--Find ASCII,查找“http://5green.nease.net
    找到后双击来到如下位置:

    004B0439    .  8BD8                                mov ebx,eax
    004B043B    .  6A 01                               push 1
    004B043D    .  6A 00                               push 0
    004B043F    .  6A 00                                push 0
    004B0441       68 60044B00    push unpack.004B0460                ;  ASCII "http://5green.nease.net",<=====双击后来到这
    004B0446    .  6A 00                               push 0
    004B0448    .  8BC3                                mov eax,ebx
    004B044A       E8 6D3EF9FF                     call unpack.004442BC
    004B044F       50                                    push eax
    004B0450       E8 3331F8FF                     call <jmp.&shell32.ShellExecuteA>   ;  这个就是退出软件弹出作者网页的CALL,NOP掉
    004B0455    .  8BC3                                mov eax,ebx
    004B0457       E8 649DFAFF                     call unpack.0045A1C0                ;  点击“退出”按钮时调用此CALL退出软件
    004B045C    .  5B                                    pop ebx
    004B045D    .  C3                                    retn

    5、改法1:
    上面的代码一目了然,在点击“退出”按钮时软件先调用ShellExecuteA打开网页,然后调用004B0457处的CALL unpack.0045A1C0结束程序。所以将004B0450处的call <jmp.&shell32.ShellExecuteA>直接NOP掉即可,或者也可将004B0441处的push unpack.004B0460改为push 0。

    6、改法2:
    在004B0450处F2下断,F9运行,点击“退出”按钮立即中断在:
    004B0450       E8 3331F8FF    call <jmp.&shell32.ShellExecuteA>   ;  中断在这里,F7进入
    004B0455    .  8BC3           mov eax,ebx
    004B0457       E8 649DFAFF    call unpack.0045A1C0               
    004B045C    .  5B             pop ebx

    进入004B0450处的CALL来到:

    00433588    $- FF25 0C784B00  jmp dword ptr ds:[<&shell32.ShellEx>;  shell32.ShellExecuteA
    0043358E       8BC0           mov eax,eax
    00433590    .  55             push ebp
    00433591    .  8BEC           mov ebp,esp
    00433593    .  33C0           xor eax,eax
    00433595    .  55             push ebp
    00433596    .  68 B5354300    push unpack.004335B5
    0043359B    .  64:FF30        push dword ptr fs:[eax]
    0043359E    .  64:8920        mov dword ptr fs:[eax],esp
    004335A1    .  FF05 206B4B00  inc dword ptr ds:[4B6B20]
    004335A7    .  33C0           xor eax,eax
    004335A9    .  5A             pop edx
    004335AA    .  59             pop ecx
    004335AB    .  59             pop ecx
    004335AC    .  64:8910        mov dword ptr fs:[eax],edx
    004335AF    .  68 BC354300    push unpack.004335BC
    004335B4    >  C3             retn                                ;  RET 用来作为跳转到 004335BC

    将00433588 处的jmp dword ptr ds:[<&shell32.ShellEx>改为jmp 004335B4.
    --------------------------------------------------------------------------------------
    【破解总结】
    1.对于软件在开启或退出时弹出网页的情况,可下断点:
    BP ShellExecuteA
    BP ShellExecuteExA
    BP WinExec
    找到合适的NOP掉就可以了。
    2.如果程序比较简单可以搜索弹出来的网址字符串,找到后将网址改掉也可。

    --------------------------------------------------------------------------------------
    【版权声明】本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!


    [ Last edited by hrbx on 2005-9-29 at 08:24 AM ]
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-12-1 11:04
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2005-9-29 01:21:47 | 显示全部楼层
    NOP虽然方便,但是不如跳转好,希望养成改跳转的习惯.(教程中说了原因)
    还有,你的作业并没有完成~~ 仔细看教程! 呵呵
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2016-10-21 20:30
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2005-9-29 01:38:19 | 显示全部楼层
    谢谢飘云老师指点!

    1.进入004B0450处的CALL将00433588 处的jmp dword ptr ds:[<&shell32.ShellEx>改为jmp 004335B4.改跳转是否这样改?
    2.作业没有完成具体指什么?/:?

    [ Last edited by hrbx on 2005-9-29 at 08:26 AM ]
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-12-1 11:04
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2005-9-29 11:57:28 | 显示全部楼层
    改这种东西的的最佳方法就是,执行的代码越少越好(跳过越多)

    演示的那个东西不是还有一个退出时的nag吗? 你没认真看教程!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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