岁月联盟 - 技术社区 - BBS.SYUE.COM's Archiver

猪猪 发表于 2007-4-25 19:38

W32DASM范例 例二

信息来源:红星软件工作室

例一、实验目的 : 找到注册码的识别点 ( 难度 : 简单 )


实验工具 :w32dasm,hiew


实验对象 :quick view plus 4.0


第一步 : 运行 order32.exe


第二步 : 点 $49 single user license , 然后点 accept, 接着点 unlock by phone.


第三步 : 随便输入几个字符就会得到一个错误信息 ( 你应该马上用笔记下来 ), 然后点 cancel 退出 .


第四步 : 进入 QVP 目录 .


第五步 : 将 ORDER32.EXE 复制两份 , 分别命名为 order32.exx 和 1.exe.


第六步 : 运行 w32dasm, 将 1.exe 反汇编 .


第七步 : 一旦完成反汇编 , 点 string data reference 按钮 , 在列出的字符串列表中找到 : "You have entered an incorrect code. Please check your entry" 并双击它 .


第八步 : 关闭这个窗口回到主窗口 , 你应该能够看到下面这一行 :


* Possible reference to String Resource ID=00041: "You have entered...


:004049F8 6A29 push 00000029


:004049FA FF353CCE4000 push dword ptr [0040CE3C]


第九步 : 现在你必须从这行起向上找 , 直到找到有这样的命令为止 :cmp,jne,je,test 等等 .


:004049CD 755A jne 00404A29


* Possible reference to String Resource ID=00032: "You must select...


:004049CF 6A20 push 00000020 ... ...


* Possible reference to String Resource ID=00040: "Unlock Error"


第十步 : 现在你应该知道当你输入一个错误注册码时程序将跳到哪里运行了 . 现在可以想一想如果将上面那条 jne 命令换成 je, 会发生什么 ? 将绿色的光条移到 :004049CD 755A jne 00404A29 上 , 在窗口底部有一行字指示这句   命令的偏移地址 , 此处为 @Offset 00003DCDh. 这就是应该修改的地方了 .


第十一 : 启动 DOS 窗口并且运行 hiew order32.exe, 按 F4 然后选择 decode mode, 按 F5 输入 3dcd. 你应该看到下面这几行 :


00003DCD: 755A jne 000003E29


00003DCF: 6A20 push 020


00003DD1: FF15 call w,[di]


第十二 : 这就是应该修改的地方了 . 按 F3, 输入 74, 按 F9 将修改存盘 . 然后按 ESC 离开 .


第十三 : 运行 order32.exe, 随便输入几个字符试试 . 成功了 !


注意 : 如果刚才我们将 jne 改成 jmp 则更为彻底

—————————————————————————————————————

例二、实验目的 : 从 ABOUT 窗口突破 !( 难度 : 简单 )


实验工具 :W32dasm89,Hiew601


实验对象 :Hex Workshop 2.51




第一步 : 运行 hworks32.exe


第二步 : 点击 HELP, 然后点 ABOUT HEX WORKSHOP...


第三步 : 随便输入几个字符以得到它的错误信息 ( 请赶紧用笔记下来 ), 然后离开程序 .


第四步 : 进入 HWS 目录 .


第五步 : 将 HWORKS32.EXE 复制两份分别命名为 HWORKS32.EXX 及 1.EXE.


第六步 : 运行 W32DASM 并且将 1.EXE 反汇编 .


第七步 : 一旦它被反汇编 , 点击 FIND TEXT 按钮 , 输入刚才记下的信息 "You have entered an", 然后寻找 .( 注意 , 这个字符串在 string data reference 窗口中是找不到的 )


第八步 : 现在你应该看到下面这几行 :


Name: DialogID_0075, # of Controls=003, Caption:"Registration Unsucce..


001-ControlID:FFFF, Control Class:""Control Text:"You have entered an..


002-ControlID:FFFF, Control Class:""Control Text:"Please confirm you..


第九步 : 现在你已经知道提示你注册码错误的窗口的 CONTROLID 了 . 点击 FIND TEXT, 输入 "dialogid_0075" 直到你找到 :


* Possible reference to DialogID_0075


:0041E233 6A75 push 00000075


:0041E235 8D8D10FFFFFF lea ecx, dword ptr [ebp+FF10]


第十步 : 还是老办法 . 从这行开始向上找 , 一直找到有如下命令时为止 :cmp,jne,je 等等 .


:0041E145 837DEC00 cmp dword ptr [ebp-14], 00000000


:0041E149 0F8479000000 je 0041E1C8


:0041E14F 8B8DFCFEFFFF mov ecx, dword ptr [ebp+FEFC]


第十一 : 找到了 ! 如果将上面那句 JE 改成 JNE 会怎么样呢 ?! 将光条移到 :0041E149 0F8479000000 je 0041E1C8 上 , 然后记下它的偏移地址 ( 窗口底部 ), 这里是 @offset 0001d549h.


第十二 : 进入 DOS 窗口 , 运行 HIEW HWORKS32.EXE, 按 F4, 选择 DECODE MODE, 按 F5, 输入 1D549.


0001D549: 0F847900 je 00001D5C6 ---------- (1)


0001D54D: 0000 add [bx][si],al


0001D54F: 8B8DFCFE mov cx,[di][0FEFC]


第十三 : 这应该是修改的地方吧 . ;-)) 按 F3, 输入 0F85, 按 F9 将修改存盘 . 离开 HIEW.


第十四 : 运行 HWORKS32.EXE, 输入任意几个注册码 , 成功了吧 ?NO!!!??? 不要紧 , 一定是哪里出问题了 . ;-) 进入 DOS 窗口 , 将 HWORKS32.EXX 复制为 HWORKS32.EXE, 幸好我们先备份了一下 . ;-) 回到 W32DASM 窗口 , 让我们再试试吧 .


第十五 : 按 F3 再寻找一次 "dialogid_0075", 你应该可以找到 :


* Possible reference to DialogID_0075


:00430ADD 6A75 push 00000075


:00430ADF 8D8D10FFFFFF lea ecx, dword ptr [ebp+FF10]


第十六 : 对了对了 , 从这行开始向上找 , 一直找到 cmp,jne,je 等等此类命令为止 :


:004309EF 837DEC00 cmp dword ptr [ebp-14], 00000000


:004309F3 0F8479000000 je 00430A72


:004309F9 8B8DFCFEFFFF mov ecx, dword ptr [ebp+FEFC]


第十七 : 这次找到的对不对呢 ? 试试吧 ! 把光条移到 :004309F3 0F8479000000 je 00430A72. 记下它的偏移地址 : @Offset 0002FDF3h.


第十八 : 进入 DOS 窗口 , 运行 HIEW HWORKS32.EXE, 按 F4 选择 DECODE MODE, 按 F5 然后输入 2FDF3:


0002FDF3: 0F847900 je 00001D5C6 ---------- (1)


0002FDF7: 0000 add [bx][si],al


0002FDF9: 8B8DFCFE mov cx,[di][0FEFC]


第十九 : 这应该就是修改的地方了 . 按 F3, 输入 0F85, 按 F9 将修改存盘 . 离开 HIEW.


第二十 : 再运行一次 HWORKS32.EXE, 随便输入几个注册码 , 怎么样 ? 成功了 !!!

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.