吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2754|回复: 1
收起左侧

[会员申请] 申 请 I D :nopeslkg

[复制链接]
吾爱游客  发表于 2020-5-22 15:32
1、申 请 I D :nopeslkg
2、个人邮箱:3158907782@qq.com
3、原创技术文章:基础知识:破解一个c语言程序
C语言程序代码:
[url=][/url] 1 #include <STDIO.H> 2 3 int main(){ 4     int age; 5     age=10; 6     if (age==10){ 7         printf("Successful\n"); 8     }else{ 9         printf("No Access\n");10     }11     getchar();12 13     return 0;14 }
[url=][/url]
这个程序编译后,正常运行输出的是"Successful",而现在的目的是采用反汇编让该程序输出"NO Access"。只是个示范我们先在VC6中分析一下这个程序反汇编(Disassembly)之后的结果:Alt+8出现反汇编窗口,或者如图所示点击按钮  查看-->提示窗口-->Disassembly:简单分析之后,可以看出"if (age==10)"被编译为:CMP DWORD PTR [EBP-4],0AHJNE main+34H 分析一下这两条汇编指令:CMP用于将SS:[EBP-4]内存单元中(这个内存单元保存的就是变量age的值)数据与0AH做减法运算,但是不保存结果,只影响标志位,由于被减数和减数都是0AH,所以相减为0,标志位ZF=1。JNE全称为Jump if Not Equal,它与JNZ(Jump if Not Zero)指令等价(为什么要说到JNZ呢,因为在OD软件中是JNZ而不是JNE),JNE/JNZ判断标志位ZF是否为1,如果为1则不跳转,显然此时的ZF=1,那就是不跳转了,将继续执行下面的指令,就输出了"Successful"了。而我们需要输出"No Access",就需要让它跳转,那怎么让它跳转呢,很简单,只需要将JNE修改为JE就行了,JE就是如果ZF=1则跳转。知道了突破口,用OD打开这个程序,找到00401033H行(由于编译环境不同,读者可能不是此行,建议使用ASCII字符串搜索"Successful"进行跳转,此方法自行百度)。双击选中的行,将jnz改写为jz,然后单击“汇编”按钮即可。 在修改的行右键,选择“复制到可执行文件”->“所有修改”,在跳出的对话框中选择“全部复制”。  在跳出的新窗口中右键选择“保存文件”即可保存修改之后的程序。  然后运行修改之后的程序,显示的就是"No Access"啦!
这个可能达不到要求,可我花了很长时间去搞这个,希望管理能尽早申请通过,谢谢

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2020-5-25 11:10
抱歉,未能达到申请要求,申请不通过,可以关注论坛官方微信(吾爱破解论坛),等待开放注册通知。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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