PowerISO V4.3 Patch

| |
2009年2月5日
PowerISO V4.3 Patch
【文章标题】: PowerISO V4.3
【文章作者】: yangjt
【作者邮箱】: yangjietao123@163.com
【作者主页】: http://blog.sina.com.cn/yangjt
【作者QQ号】: 325002492
【下载地址】: 自己搜索下载
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  打开软件……发现蹦出一个nag,于是乎就想去掉它……
  
  OD装载……很显然……没有壳……然后找字符串……结果发现都是英文的……突然想到这是个多国语言版,于是乎找unreg这个字符,找到这个地方
  
代码:
  00432298   .  68 08314D00   push    004D3108                         ;  unregistered copy
  
  
  然后IDA打开分析之~~
  发现sub_432240这段函数里有很有意思的东西~~
  
代码:
    CString__operator_("PowerISO");
    if ( !(_BYTE)dword_5305B4 )
    {
      sub_48CDDF("(");
      v5 = sub_46F0F0(39, "Unregistered copy");
      sub_48CDDF((LPCSTR)v5);
      sub_48CDDF(L")");
    }
  
  
  很显然……有没有注册就是判断5305B4这个位置的值是不是0……
  根据程序的意思,如果是0那就没有注册,反之就是注册……这下就简单了……我们先把它改成1试试看……
  事实证明,改成1以后那个程序标题上的未注册版就没有了……但是NAG还是存在……于是乎继续找字符串……
  找到下一个字符串unreg的地点
  
代码:
  00451201  |.  68 08314D00   push    004D3108                         ;  unregistered copy
  
  这里……IDA里F5
  
代码:
    if ( (_BYTE)dword_5305B4 )
    {
      if ( strlen(byte_5305D8) - 1 "Registered to:  "[/color]);
        CString__operator_((LPCSTR)v19);
        a2 = off_4DB5D4;
        CString__operator_(byte_5305D8);
        LOBYTE(v23) = 5;
        CString__operator__(&a2);
        LOBYTE(v23) = 1;
        sub_48CA90();
        Rect.left = 0;
        Rect.right = v4;
        v20 = *(_DWORD *)v3;
        Rect.top = v26 + 10;
        Rect.bottom = v5 + v26 + 10;
        (*(int (__thiscall **)(void *, void *, _DWORD, struct tagRECT *, signed int))(v20 + 104))(
          v3,
          v22,
          *((_DWORD *)v22 - 2),
          &Rect,
          1);
      }
  
  看来不仅要判断5305B4这个位置,还要判断5305D8这个位置……据分析……这个位置应该就是用来储存注册用户名的,既然要储存,当然要写入……那就在这里下硬件写入断点,会断在两个地方……
  
代码:
  Place 1
  
  004305C3  |.  881D D8055300 mov     byte ptr [5305D8], bl            ; |
  004305C9  |.  881D 90055300 mov     byte ptr [530590], bl            ; |
  004305CF  |.  FF15 10D04A00 call    dword ptr [; \RegCreateKeyExA
  
  
  
  Place 2
  00430483  |.  881D D8055300 mov     byte ptr [5305D8], bl            ; |
  00430489  |.  881D 90055300 mov     byte ptr [530590], bl            ; |
  0043048F  |.  FF15 10D04A00 call    dword ptr [; \RegCreateKeyExA
  
  很显然……程序从注册表里读完了数据就开始往内存里写,据分析……place 2 是从place 1后面的某个Call 过来的,所以我们只改第一个Call就好了……
  
  找到第一个procedure的起始地址,然后开始补丁
  
代码:
  00430590      C605 B4055300>mov     byte ptr [5305B4], 1
  00430597      C605 DC055300>mov     byte ptr [5305DC], 65
  0043059E      C705 D8055300>mov     dword ptr [5305D8], 72757A41
  004305A8      C3            retn
  
  
  显然……在这里如果直接ret,下面的流程就不会执行,也不用考虑
  补丁代码的第一句是让Unreg消失,补丁的第二句是让程序显示注册给谁……^_^这里是Azure
  运行程序……虽然Unreg字符也没有了看关于也注册了……不过Nag还是存在……别忘了我们是准备干啥的……
  既然弹出NAG就要ShowWindow,以下是堆栈变化情况
  
代码:
  第一次
  0012F5F4   00490D5F  /CALL 到 ShowWindow 来自 PowerISO.00490D59
  0012F5F8   00490B3E  |hWnd = 00490B3E (class='#32770',parent=004B0B40)
  0012F5FC   00000001  \ShowState = SW_SHOWNORMAL
  0012F600   0049476F  返回到 PowerISO.0049476F 来自 PowerISO.00490D4B
  
  第二次
  0012F5F4   00490D5F  /CALL 到 ShowWindow 来自 PowerISO.00490D59
  0012F5F8   00670896  |hWnd = 00670896 (class='#32770',parent=002A0B1A)
  0012F5FC   00000001  \ShowState = SW_SHOWNORMAL
  0012F600   0049476F  返回到 PowerISO.0049476F 来自 PowerISO.00490D4B
  
  ....(中间省略)
  第七次
  0012FEAC   00490D5F  /CALL 到 ShowWindow 来自 PowerISO.00490D59
  0012FEB0   002A0B46  |hWnd = 002A0B46 ('PowerISO(未注册版本) - New Im...',class='Afx:400000:0')
  0012FEB4   00000005  \ShowState = SW_SHOW
  0012FEB8   00478C3D  返回到 PowerISO.00478C3D 来自 PowerISO.00490D4B
  
  第八次
  0012F930   00490D5F  /CALL 到 ShowWindow 来自 PowerISO.00490D59
  0012F934   00980A8E  |hWnd = 00980A8E ('PowerISO',class='#32770',parent=00340B46)
  0012F938   00000001  \ShowState = SW_SHOWNORMAL
  0012F93C   00490585  返回到 PowerISO.00490585 来自 PowerISO.00490D4B
  0012F940   00000001
  0012F944   00000000
  0012F948   0012F9AC
  0012F94C   0012F99C
  0012F950   00000004
  0012F954   00000001
  0012F958   00000000
  0012F95C   00000001
  0012F960   00340B46
  0012F964   0048D506  返回到 PowerISO.0048D506 来自 PowerISO.0049050F
  0012F968   00000004
  0012F96C   00000001
  0012F970   01E25770
  0012F974   00432520  PowerISO.00432520
  0012F978   00432626  返回到 PowerISO.00432626 来自 PowerISO.00430A10
  0012F97C   00000000
  0012F980   0012F9AC
  0012F984   005823D0  PowerISO.005823D0
  0012F988   00340B46
  0012F98C   0012F96C
  0012F990   0012FC60  指向下一个 SEH 记录的指针
  0012F994   004ABE24  SE处理程序
  0012F998   00000000
  0012F99C  /0012FCE0
  0012F9A0  |00432636  返回到 PowerISO.00432636 来自 PowerISO.0048D425
  0012F9A4  |01E25770
  0012F9A8  |00000000
  0012F9AC  |004AF0E8  PowerISO.004AF0E8
  0012F9B0  |00000001
  0012F9B4  |00000000
  0012F9B8  |00000000
  0012F9BC  |00000000
  0012F9C0  |00000001
  0012F9C4  |00000000
  0012F9C8  |00980A8E
  0012F9CC  |00000000
  0012F9D0  |00000018
  0012F9D4  |75BF2735  user32.DefDlgProcA
  
  想必这个第八次就应该是NAG了……仔细观察堆栈,发现这一大段执行完后返回的地方应该是返回到 PowerISO.00432636 因为中间有个异常处理……相信这个异常处理只是针对这个NAG的……
  
  直接返回到这里
  
代码:
  00432636   . /EB 0E         jmp     short 00432646
  
  观察其上方代码
  
代码:
  00432621   .  E8 EAE3FFFF   call    00430A10
  00432626   .  83C4 28       add     esp, 28
  00432629   .  85C0          test    eax, eax
  0043262B   .  75 0B         jnz     short 00432638
  0043262D   .  8D4C24 08     lea     ecx, dword ptr [esp+8]
  00432631   .  E8 EFAD0500   call    0048D425
  00432636   .  EB 0E         jmp     short 00432646
  
  执行00430A10,应该是个BOOL类型的,然后看EAX,不是0就跳……没有NAG……
  显然那个call在计算注册码。这么容易让我们找到了……不进去看看可不是好孩子……
  说实话我已经晕倒了……
  啥乱其八糟的……都怪我学汇编没学好……看也看不懂……囧rz
  
  好吧好吧……直接补丁好了……
  
代码:
  1
  00430590     /E9 51C70700        jmp     004ACCE6
  
  2
  00432629      40                 inc     eax
  
  3
  004ACCE6      C605 B4055300 01   mov     byte ptr [5305B4], 1
  004ACCED      C605 DC055300 65   mov     byte ptr [5305DC], 65
  004ACCF4      C705 D8055300 417A>mov     dword ptr [5305D8], 72757A41
  004ACCFE      C3                 retn
  
  
  当然04ACCE6处的补丁也可以直接写在00430590,反正下面的东西都不准备要了。
  拍屁股走人……
  
--------------------------------------------------------------------------------
【经验总结】
  看来学好汇编和数学真的很有必要……
  
--------------------------------------------------------------------------------
【版权声明】: 转载请注明作者并保持文章的完整, 谢谢!
                                                       2009年02月05日 16:06:24

作者:admin@常来吧
地址:http://www.chl8.com/post/821/
版权所有!转载时请必须遵守以链接形式署名-非商业性使用-完整方式共享!
欢迎在常来吧留言&评论!


随机日志 综合排行
  • 学英语-口语与单词 2008 build 1112 ( 让英语学...
  • 修改 Windows XP 设定的秘技
  • 一卡多号软件 V1.0 GSM手机卡破解工具,集成驱动,直接安装...
  • 【原创】色彩精灵V1.98去广告绿色特别版
  • 用Word查找替换指定颜色的文字
  • 家家乐电子相册制作系统 V2008.09 简体中文绿色特别版
  • QQ牧场管家辅助V2.84 绿色免费版
  • 【汉化】 ServiWin v1.33--kalahan汉化版
  • UPXShell V3.4.2.2010 (应用程序压缩解压缩)...
  • 风云墙论坛暂时无法访问的解决方案
  • 家家乐电子相册制作软件系统 2010.5 算法注册机
  • Photoshop教程:把老虎照片转换为水墨画
  • 五一期间开放注册的优秀论坛
  • Symbian Platform Identification ...
  • 推荐几个优秀音乐网站
  • wma to mp3 encoder (音频无损转换)绿色汉化版...
  • 龙族诱惑与论坛建设
  • CHM电子书制作大师 2.1去广告破解版
  • 系统登录时总是自行注销
  • S60 3rd 编程 初体验
  • 光影魔术手0.28正式版
  • 我的博客pR升到2了
  • QQ邮箱当网盘工具 build080806
  • 用手机锁住秘密 隐藏手机软件的小手段
  • 按键娃娃 V3.06简体中文绿色版
  • 【汉化】PanoradoV3.3.1.204 kalahan汉化...
  • SDFix2G_Release v1.0.4 |SD存...
  • 印章制作大师11.0破解版[已修正错误]08-08-11更新
  • 蓝牙软件IVT BlueSoleil 6.2.227.11 + ...
  • Panorado V3.3.1.190┊是一个能够360度全方位...
  • 【汉化】All Media Fixer Pro 9.03 汉化修...
  • 【原创】Hotspot Shield 1.20汉化版-自动搜索V...
  • 【推荐】自动搜索VPN代理最新版-Hotspot Shield+...
  • 一键屏蔽视频广告(屏蔽优酷土豆奇艺等网站广告) 2.1
  • 【汉化】Panorado V3.3.1.192┊是一个能够360...
  • 冰点文库下载 [无需积分就可以自由快速下载百度文库] 1.5 免...
  • 钢玻璃杯的故事
  • Ultimate Defrag(硬盘优化) 3.0.100.19...
  • 鲁大师下载 2.88 Build 11.822 绿色版
  • QQ远程聊天记录查看器4.3破解版(不用密码查看记录)natyo...
  • 把心仪的视频刻成能在电视上看的DVD之菜鸟篇
  • 修改 Windows XP 设定的秘技
  • KEmulator Lite v0.9.8电脑手机模拟器中文绿色...
  • 免费领取卡巴斯基KIS2011一年激活码
  • [RPG]诛仙传说"炼剑炉"系列第三部 [N...
  • 我常去的技术论坛
  • 移动硬盘文件或目录损坏且无法读取修复工具
  • 赠送2个印心邀请码
  • 暴强的在线工具 【逐渐增加中】
  • 用标题来提高网站流量的常用手段
  • 【推荐】破解Hotspot Shield的流量限制
  • PotPlayer V1.5 build 25231 32位绿色...

  • 文章来自: 本站原创
    发表评论
    昵称 [注册]
    密码 游客无需密码
    网址
    电邮
    打开HTML 打开UBB 打开表情 隐藏 记住我