程序破解

程序破解

源代码:hello.c

#include<stdio.h>

#include<string.h>

int main()

{

char name[10];

char a[10]="wjj";

char passwod[10];

char b[10]="20135302";

scanf("%s",name);

if(strcmp(name,a)!=0)

{

printf("user error\n");

return 0;

}

scanf("%s",passwod);

if(strcmp(passwod,b)!=0)

{

printf("passwod error\n");

return 0;

}

printf("hello!20135302...\n");

return 0;

}

  1. 使用objdump –d hello打开文件,找到main函数:

(1) 这里的截图是刚好在scanf函数之后的,因为我们是要比较输入的和提前设置好的变量相比较

(2) 我又找到strcmp这个函数之前的几句有两个lea语句,也就是找了两个地址

(3) 那么strcmp比较的应该就是这两个为首地址的两个字符串

(4) 先看rbp-0x40这里在前面有没有定义

(5) 那么可以看到:

Rbp-0x40为首地址被定义为:0x6a6a77,将ASCII,转换为字符为jjw

Rbp-0x20为首地址被定义为rax:0x32303335333132132

如果从低地址往高地址连续的就是32 30 31 33 35 33 30 32

转换为字符表示为:20135302

(6) 那么我们运行程序,可以看到用户名就是wjj,密码是20135302

如果我们输入错误则程序退出:

  1. 我们采用直接修改hello文件来直接执行函数

我们可以看到在test之后的两句jne跳向的地址是0x4006ac+0x11

0x4006ea+0x11

我在第一个jne指令直接修改为jmp到printf这条指令的位置。

第一条jne的位置是4006aa,此时的eip是4006ac。

我需要跳转到4006fb,那么就是要增加0x4f个位置,那么就是将

74 11 改为 eb 4f

(1) 先打开hello,然后输入:%!xxd

(2) 输入/75 11搜索到位置

(3) 对比objdump查看到的机器指令和这里的机器指令前后相同,则就是要找的位置。修改为eb4f

(4) 修改后输入:%!xxd -r并保存,再重新执行程序,结果如下,破解成功。

(5) 还可修改密码,即查找/32303335333132132 ,改为3030303030303030

(6) 运行破解成功。

 

时间: 2024-08-02 15:14:08

程序破解的相关文章

linux实践之程序破解

linux实践之程序破解 这次的实践是文件破解,让我们从login可执行文件开始吧! 首先我们执行一下这个可执行程序 ①我们希望在不知道密码的情况下,能够登陆进去.且无论密码是什么,都是提示“on your command,my master!”. 首先对该程序执行反汇编. 我们首先要找到main函数的入口处. 我们可以看到cmp语句后,有jmp语句,如果不等于就跳转到“0x8048466”处,这是正常程序执行的过程,我们在这里希望不等于的时候,也不要跳转,所以可以把“75 0e”修改为“75

net程序破解神器

本帖最后由 Pnmker 于 2012-12-2 05:19 编辑 原本这篇文章可以更早一星期写出来与大家分享,由于某方面的原因耽搁到现在,心里竟有那么一点好像对不住大家的感觉.这当然与神器有关,因为我发现利用这 四大神器我似乎觉得几乎所有的NET程序破解都不在话下了.而我竟然在发现这神器组合后推迟了一周才分享与大家! 在开始分享之前,还是要说明一点,说是神器到目前为止也仅仅是对我自己而言,至于这四大神器会不会成为对各位而言的神器就不得而言了,因此当有哪位亲拿到这四大神器后仍然感到破解NET程序

微信开通程序 破解版微信检测助手

如今新入微商行业的大军很多,同样的一个产品做得人越来越多!那么问题来了,客源哪里来,你有好东西,卖给谁?你天天发广告,谁看?很多人只知道在自己朋友圈简单发布一些产品广告,如果光靠你目前那点质量低下的朋友圈.你就是刷爆了也没有成交量的,只会让你的朋友慢慢的把你拉黑,现在大部分人每天都在辛苦的上传产品讯息,首先要知道,朋友圈内的人绝大部分都是自己朋友.亲戚,所以精准客户相对来说寥寥无几. 微信开通程序 破解版微信检测助手 今天小编就交给大家一些比较实用的方法及教你使用微商加好友的便捷工具. 先说说绝

Linux及安全——程序破解

Linux及安全——程序破解 由于我的Ubuntu的vi有故障,所以用kaili做. 运行原程序 1.反汇编代码,查看 objdump -d login 2.修改代码 vi login 转换为16进制 :%!xxd 查找要改的字节 (1)改成无论入什么,都输出on your command, my master! /75 0e 或者 /750e 运行,更改成功 (2)改为无论输入什么,程序直接结束 750e --> 751a (3)更改登录密码 fe07 --> 1804

VB程序破解之API断点[bp __vbaVarTstEq]

软件名称:风云足彩1.7软件大小:2.1M下载地址:http://free.ys168.com/?zhinengxuanhao软件保护:注册码编写软件:Microsoft Visual Basic 5.0 / 6.0 [Debug]破解工具:PEiD,OD破解作者:WildCatIII[D.4s] 引用: 软件介绍:足彩智能选号全能版足彩智能选号全能版 提供了足彩独特选号的方法.不论是足彩高手还是初玩者,足彩智能选号全能版都为他们提供了整套工具,以方便稳中一等奖. 但是,工具不是一个万能.能不能

4.1程序破解

4.1程序破解 20135206 于佳心 ? 基础指令: NOP:NOP指令即"空指令".执行到NOP指令时,CPU什么也不做,仅仅当做一个指令执行过去并继续执行NOP后面的一条指令.(机器码:90) JNE:条件转移指令,如果不相等则跳转.(机器码:75) JE:条件转移指令,如果相等则跳转.(机器码:74) JMP:无条件转移指令.段内直接短转Jmp short(机器码:EB)段内直接近转移Jmp near(机器码:E9)段内间接转移Jmp word(机器码:FF)段间直接(远)转

linux实践程序破解

程序破解 一.建立1.c文档 二.编译并查看 命令为:gcc -o 1 1.c 反汇编:objdump -d 1 三.转16进制 命令::%!xxd main函数的汇编代码中可以看出程序在调用“scanf”函数请求输入之后,对 [esp+0x1c] 和 [esp+0x18] 两个内存单元的内容进行了比较,其作用应该是对比用户输入和预设口令.即预设口令被存放与局部变量 [esp+0x1c]中. 四.将750c改为7500 五.将16进制转回 六.学习总结 NOP:NOP指令即“空指令”.执行到NO

Android简单应用程序破解——runtime.apk

对于<Debugging Android Application>一文中最后附上的练习,我采用了另一种静态方法绕开原有的逻辑去破解.主要的过程如下: 利用apktool将练习的runtime.apk文件反编译,生成的smali格式的反汇编代码,接着从smali文件的代码中寻找突破口,修改程序,再利用apktool重新编译生成apk文件并签名,最后运行测试. 首先安装原应用程序测试功能,当输入正确的PIN码时,就如下左图所示,而输入错误的PIN码时,就如下右图所示. 程序破解的目标是无论输入什么

June 26,程序破解

1.android程序破解练习初级 方法一: 文件名:KeygenMe#1.apk工具:ApktoolGui v2.0 Final 先用ApktoolGui v2.0 Final反编译成java通过查看AndroidManifest.xml文件,找到主Activity. 找到判断注册码正确性的代码,在找相应的smali代码,修改,编译. 方法二: 反编译得到注册算法之后根据这个算法自己写个函数算注册码. SEE MORE>> 2.微信5.0 Android版飞机大战破解无敌模式 微信的游戏继承