免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 13180 | 回复: 17
打印 上一主题 下一主题

linux 下如何反编译一个二进制程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-19 14:25 |只看该作者 |倒序浏览
linux 下如何反编译一个二进制程序? 这个程序启动时需要指定一个license文件!

请教各位编程高手!

论坛徽章:
0
2 [报告]
发表于 2008-09-19 14:41 |只看该作者

回复 #1 myfreeke 的帖子

用objdump命令

论坛徽章:
0
3 [报告]
发表于 2008-09-19 15:08 |只看该作者
感谢,好像不怎么会使用:


#objdump -x filename

得到下面一条,但不会如何修改
080cf058 g     F .text  00000025              _ZN10SIPLibrary12CheckLicenseEPKcS1_

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
4 [报告]
发表于 2008-09-19 15:22 |只看该作者
............反编译后,然后自己想办法改,crack哪有那么直截了当

论坛徽章:
0
5 [报告]
发表于 2008-09-19 16:02 |只看该作者
呵呵,版主教训得是!

主要是因为一个程序对于我非常有用,但有license限制.

论坛徽章:
0
6 [报告]
发表于 2008-09-20 09:22 |只看该作者
破解估计没那么容易,还是找lic吧。

论坛徽章:
0
7 [报告]
发表于 2008-09-20 10:11 |只看该作者
objdump -sd   文件

论坛徽章:
0
8 [报告]
发表于 2008-09-21 13:14 |只看该作者
我使用-d参数后找到一段:

080d94d8 <check_registration>:
80d94d8:        55                           push   %ebp
80d94d9:        89 e5                        mov    %esp,%ebp
80d94db:        57                           push   %edi
80d94dc:        56                           push   %esi
80d94dd:        53                           push   %ebx
80d94de:        83 ec 0c                     sub    $0xc,%esp
80d94e1:        8b 75 08                     mov    0x8(%ebp),%esi
80d94e4:        e8 9b f9 ff ff               call   80d8e84 <noisy_getcanonicalhostname>
80d94e9:        31 ff                        xor    %edi,%edi
80d94eb:        85 c0                        test   %eax,%eax
80d94ed:        a3 10 ae 60 08               mov    %eax,0x860ae10
80d94f2:        0f 84 a0 00 00 00            je     80d9598 <check_registration+0xc0>
80d94f8:        85 f6                        test   %esi,%esi
80d94fa:        74 0d                        je     80d9509 <check_registration+0x31>
80d94fc:        8b 1e                        mov    (%esi),%ebx
80d94fe:        85 db                        test   %ebx,%ebx
80d9500:        74 07                        je     80d9509 <check_registration+0x31>
80d9502:        8b 46 08                     mov    0x8(%esi),%eax
80d9505:        85 c0                        test   %eax,%eax
80d9507:        75 1f                        jne    80d9528 <check_registration+0x50>
80d9509:        83 ec 08                     sub    $0x8,%esp
80d950c:        68 4c 7f 47 08               push   $0x8477f4c
80d9511:        68 69 7f 47 08               push   $0x8477f69
80d9516:        e8 d5 af 00 00               call   80e44f0 <error>
80d951b:        b8 ff ff ff ff               mov    $0xffffffff,%eax
80d9520:        8d 65 f4                     lea    0xfffffff4(%ebp),%esp
80d9523:        5b                           pop    %ebx
80d9524:        5e                           pop    %esi
80d9525:        5f                           pop    %edi
80d9526:        c9                           leave  
80d9527:        c3                           ret   
80d9528:        83 ec 08                     sub    $0x8,%esp
80d952b:        68 7c 7f 47 08               push   $0x8477f7c
80d9530:        53                           push   %ebx
80d9531:        e8 6e a5 f7 ff               call   8053aa4 <strstr@plt>
80d9536:        83 c4 10                     add    $0x10,%esp
80d9539:        39 d8                        cmp    %ebx,%eax
80d953b:        74 4d                        je     80d958a <check_registration+0xb2>
80d953d:        ff 35 88 9f 60 08            pushl  0x8609f88
80d9543:        6a 30                        push   $0x30
80d9545:        6a 01                        push   $0x1
80d9547:        68 60 7e 47 08               push   $0x8477e60
80d954c:        e8 83 b0 f7 ff               call   80545d4 <fwrite@plt>
80d9551:        83 c4 10                     add    $0x10,%esp
80d9554:        85 ff                        test   %edi,%edi
80d9556:        7e 1c                        jle    80d9574 <check_registration+0x9c>
80d9558:        83 ec 0c                     sub    $0xc,%esp
80d955b:        ff 35 10 ae 60 08            pushl  0x860ae10
80d9561:        e8 6e ad f7 ff               call   80542d4 <free@plt>
80d9566:        c7 05 10 ae 60 08 00         movl   $0x0,0x860ae10
80d956d:        00 00 00
80d9570:        31 c0                        xor    %eax,%eax
80d9572:        eb ac                        jmp    80d9520 <check_registration+0x48>
80d9574:        ff 35 88 9f 60 08            pushl  0x8609f88
80d957a:        6a 1f                        push   $0x1f
80d957c:        6a 01                        push   $0x1
80d957e:        68 a0 7e 47 08               push   $0x8477ea0
80d9583:        e8 4c b0 f7 ff               call   80545d4 <fwrite@plt>
80d9588:        eb 91                        jmp    80d951b <check_registration+0x43>
80d958a:        83 ec 0c                     sub    $0xc,%esp
80d958d:        56                           push   %esi
80d958e:        e8 5d fe ff ff               call   80d93f0 <registration_valid_file>
80d9593:        89 c7                        mov    %eax,%edi
80d9595:        eb ba                        jmp    80d9551 <check_registration+0x79>
80d9597:        90                           nop   
80d9598:        83 ec 08                     sub    $0x8,%esp
80d959b:        68 c0 7e 47 08               push   $0x8477ec0
80d95a0:        68 69 7f 47 08               push   $0x8477f69
80d95a5:        e8 46 af 00 00               call   80e44f0 <error>
80d95aa:        83 c4 10                     add    $0x10,%esp
80d95ad:        e9 46 ff ff ff               jmp    80d94f8 <check_registration+0x20>
80d95b2:        90                           nop   
80d95b3:        90                           nop

不完全明白上面的意思,修改不知如何下手!

论坛徽章:
0
9 [报告]
发表于 2008-09-21 17:37 |只看该作者
看汇编还是很头疼的。

论坛徽章:
0
10 [报告]
发表于 2008-09-22 00:44 |只看该作者
原帖由 myfreeke 于 2008-9-21 13:14 发表
我使用-d参数后找到一段:

080d94d8 :
80d94d8:        55                           push   %ebp
80d94d9:        89 e5                        mov    %esp,%ebp
80d94db:        57                           push   %edi
80d94dc:        56     ...


偶将你的汇编代码反翻译为 C 代码,大概是以下这种逻辑,你自己去分析一下:

int check_registrantion(_T **arg)
{
        _T **p = arg;
        int x = 0;

        var1 = noisy_getcanonicalhostname();

        g_var_860ae10 = var1;

        if (var1 == 0)
                error($0x8477f69,0x8477ec0);
       
        if (p && *p && *(p+1)) {
                s_p = strstr(*p, g_var_8477f7c);

                if (s_p == *p) {
                        x = registration_valid_file(p);

                } else
                        fwrite($0x8477e60,1,0x30,ptr_0x8609f88 );

                if (x > 0) {
                        free(ptr_0x86ae10);
                        ptr_0x86ae10 = NULL;
                        return 0;
                } else {
                        fwrite($0x8477ea0,1,0x1f,ptr_0x8609f88 );
                        return -1;
                }
       
        }


        error(g_var_8477f69, g_var_8477f4c);
       
        return -1;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP