破解软件的思路

核心思想:objdump -d 找到关键汇编代码,然后用ghex2 打开可执行程序,修改和汇编对应的机器码,当然前提是对汇编足够了解。

下面讲一个简单在linux上的例子:

1.   先建立一个简单的程序,

#include <iostream>
using namespace std; 

bool abc(){
	return false; 
}

int main(int argc, char *argv[])
{
	if(abc()){
		cout  <<  "hacked" << endl; 
	}else{
		cout  <<  "not hacked" << endl; 
	}
	return 0; 
}

2.  用g++ main.cpp编译成可执行程序a.out,

3.    运行./a.out 输出:

 not hacked

4.  调用 objdump -d a.out > simple.txt

5.  在simple.txt中搜索abc,找到如下代码

080486f4 <_Z3abcv>:
 80486f4:	55                   	push   %ebp
 80486f5:	89 e5                	mov    %esp,%ebp
 80486f7:	b8 00 00 00 00       	mov    $0x0,%eax
 80486fc:	5d                   	pop    %ebp
 80486fd:	c3                   	ret 
6.   然后用ghex2打开a.out, 搜 55 89  e5 b8 00 00 00 00, 找到这段汇编对应的机器码的位置,

7.   最后到了关键一步, 把上面的一段机器码改成 55 89  e5 b8 01 00 00 00, 其实只改了一个字,意思是把返回false改成返回true。

8.   再次运行./a.out 输出: hacked。大功告成。




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值