VC+高级技术文章+2012-08-26
VC+高级技术文章
32位汇编学习的一点心得
以前一直用C/C++写程序;最近突然抽起了一条筋,祭出Win32ASM,想试试在汇编代码级别写32位程序的滋味,也因此明白了不少以前一直没彻底弄懂的东西。
先说说堆栈的使用。以前一直以为堆栈就是push、pop两个很基本的操作,只是用来暂时储存数据用的,现在发现这种观念已经过时了,因为到了32位编程的时代,堆栈的主要用途已经变为API函数调用时的参数放置处,例如:
push MB_OK
push offset Caption
push offset Text
push NULL
call MessageBoxA
有经验的C/C++程序员一眼就能看出,这是API函数MessageBox的调用方式,前面的那几个push就是用来把MessageBox的参数压入堆栈内,然后一个call就调用了MessageBox,上面的语句相当于C语言写的调用:
MessageBox(NULL, Text, Caption, MB_OK);
这是符合win32标准standard调用约定的,即函数入口参数按从右到左的顺序入栈,并由被调用者清理栈中参数,返回值放在eax寄存器中。
win32的一千多个API函数都是符合这种standard调用约定的,但只有一个函数例外,那就是wsprintf,这个函数是C约定的,因此在win32汇编中,你得这样写:
push ebp ;ebp入栈
mov ebp, esp ;因为esp是堆栈指针,无法暂借使用,所以得用ebp来存取堆栈
sub esp, 4*5 ;下面的wsprintf一共使用了5个参数,每个参数占用4个字节,所以要入栈4*5个字节
push 1111
push 2222
push 3333
push offset szFormat
push offset szOut
call wsprintf ;调用wsprintf
add esp, 4*5 ;堆栈使用完毕,“还”回4*5个字节给系统 ...
mov esp, ebp ;恢复esp的值
pop ebp ;ebp出栈
VC+高级技术文章
ret
很好,看到这里,相信你已经明白了堆栈的使用方法。我忽然又想起了平时用SoftICE来crack一些软件的时候经常看到的东西:
push 00001111
push 00002222
call lstrcmp
test eax, eax
jne 00003333
......
以前我一直弄不明白前面那两个push是用来干吗的,于是只好跳过不看;现在我知道了它们是作为lstrcmp函数的两个参数后,直接打入d 00001111,哈哈,注册码就出来了!
掌握知识的感觉真棒,尤其是底层的知识!谁说电脑是冷冰冰的?
“知其然,亦须知其所以然。”
嗯,古人果然诚不我欺也。
“打字高手”5.31版的破解
最近脑袋突然抽筋,想学五笔打字(注:其实我的拼音也打得不错啊,用紫光拼音双拼输入法能达到100字/分钟呢)。于是从网上down了一个叫做“打字高 手——文录鉴定考核系统”5.31版的软件下来,用起来还不错,就是窗口标题栏上老是出现“文录鉴定考核系统 【未注册版本】”的字样,虽说不影响使用,但是看起来就是非常的不爽!
遇到这种情况,我等穷人首先想到的不是给作者寄钱(乖乖,要20大洋呢!!!),而是“自力更生,丰衣足食”,将它“变”成注册版本。(读者:这、这不是犯罪吗?)
好了,废话少说,开始工作!让我们祭出传说中的Cracker的先锋精锐武器——W32DASM黄金版(这个版本可以显示出中文字符串)!当当当当~~~反汇编中,我等啊等 脖子都长了,还没行???先去喝杯茶 呼~~~终于
VC+高级技术文章
OK了,好,让我们看看有什么好东西。
首先运行“打字高手”,在“帮助->软件注册”中输入:
输入个人或单位名称:laoluo
软件序列号:729051221(这个是软件自动生成的,不是我输入的)
输入注册码:123456789(为什么是9个数字?呵呵,等一会你就知道了)
按下“注册”按钮,立即弹出“注册码输入错误!请重新输入!”,很好,尾巴被我抓住了。
回到W32DASM,按下“string reference”按钮,找到“注册码输入错误!请重新输入!”的字样,双击它,来到这里:
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:006F2B3F(C)
|
:006F2B6F 64FF30 push dword ptr fs:[eax]
:006F2B72 648920 mov dword ptr fs:[eax], esp :006F2B75 8D55F0 lea edx, dword ptr [ebp-10]
:006F2B78 8B83E4020000 mov eax, dword ptr [ebx+000002E4] :006F2B7E E8593CF4FF call 006367DC
:006F2B83 8B45F0 mov eax, dword ptr [ebp-10] :006F2B86 E8DD15F1FF call 00604168
:006F2B8B 83F809 cmp eax, 00000009 <-对比输入的注册码,不等于9位数的话就game over了,所以前面要输入9位数的注册码。 :006F2B8E 741D je 006F2BAD
* Possible StringData Ref from Code Obj ->"注册码输入错误!请重新输入!"
|
:006F2B90 B8742E6F00 mov eax, 006F2E74
:006F2B95 E87EA1F6FF call 0065CD18
:006F2B9A 8B83E4020000 mov eax, dword ptr [ebx+000002E4] :006F2BA0 8B10 mov edx, dword ptr [eax]
:006F2BA2 FF92B0000000 call dword ptr [edx+000000B0] :006F2BA8 E96B020000 jmp 006F2E18
再次双击“注册码输入错误!请重新输入!”的字样,来到另外一个地方:
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |:006F2D48(C)
|
VC+高级技术文章
* Possible StringData Ref from Code Obj ->"注册码输入错误!请重新输入!"
|
:006F2E00 B8742E6F00 mov eax, 006F2E74
:006F2E05 E80E9FF6FF call 0065CD18
:006F2E0A 8B83E4020000 mov eax, dword ptr [ebx+000002E4] :006F2E10 8B10 mov edx, dword ptr [eax]
:006F2E12 FF92B0000000 call dword ptr [edx+000000B0]
这里就是真正的对比注册码的地方了,看看上面入口处有个地址006F2D48,说明这里是由这个地址调用的,于是按下Shift+F12(location to),输入006F2D48,来到这里:
:006F2D43 E83015F1FF call 00604278
:006F2D48 0F85B2000000 jne 006F2E00 <-找到了,就是它!
看到这个jne 006F2E00了吗?就是它跳到了“注册码输入错误!请重新输入!”的地方,再看看上面有什么代码吧!
结果发现,一大堆call和jne、je、jmp 好恐怖!头都晕了,算了,懒得算出真正的注册码,直接用hiew暴力破解吧!
在 hiew里把jne 006F2E00改为je 006F2E00,存盘、退出,再次运行“打字高手”,随便输入一个什么注册码,哈哈,OK,显示“注册操作完成,重新启动本系统,如果个人或单位 …… 此处隐藏:15725字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [高等教育]一年级家长课程教案
- [高等教育]封丘县人民医院深入推进纠正医药购销领
- [高等教育]2017年6月大学英语四级真题试卷及答案(
- [高等教育]2017年北京第二外国语学院文学院824中
- [高等教育]7 高中历史第7单元1861年俄国农奴制改
- [高等教育]【K12学习】4、实际测量-苏教版六年级
- [高等教育]药具培训试卷题库及部分参考答案
- [高等教育]本土电子元器件目录分销商如何赢得生意
- [高等教育]七年级岭南版美术教案
- [高等教育]书作文之书法活动通讯稿
- [高等教育]Endnote X 软件使用入门和用法总结(LS)
- [高等教育]嵌入式系统的现状及发展状况
- [高等教育]2012抗菌药物专项整治活动方案解读
- [高等教育]人教版新课本一年级数学下册期末试卷
- [高等教育]爱课程民法学观后感
- [高等教育]930机组使用说明书1
- [高等教育]煤气设备设施点检标准
- [高等教育]常见室内观叶植物图解
- [高等教育]312党员群众路线心得体会
- [高等教育]小学信息(苗版)第一册全册教案
- 在市---局2010党建大会上的讲话
- 《科哲》提纲及补充阅读材料(2010.7)
- 苏州高博软件技术职业学院论文开题报告
- 兼职导游管理的困境及对策探讨
- 基于通用设计理念的现代厨房产品语义研
- 康乐一中2010年至2011年度鼓号队、花束
- 第10章_数据收集整理与描述_期末复习课
- 2008年黑龙江林甸商贸购物中心营销策划
- 水硬度的测定实验报告
- 五分钟教你拍摄夜景光绘照
- 2014年临床妇产科三基三严试题及答案
- 0第二课 纾解压力第一站了解压力
- 解析建筑工程电气设备安装施工技术要点
- 地方性应用型本科高校“双师型”师资队
- 高考语文专题复习课件:小说阅读指导
- 装饰工程投标书2
- 大学生就业难问题探讨及对策
- English and Its History
- 青岛市城市房屋修缮工程质量监督管理办
- 初中英语形容词和副词的用法和练习题




