linux 下如何反编译一个二进制程序
linux 下如何反编译一个二进制程序? 这个程序启动时需要指定一个license文件!
请教各位编程高手!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
linux 下如何反编译一个二进制程序? 这个程序启动时需要指定一个license文件!
请教各位编程高手!
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(9)
偶将你的汇编代码反翻译为 C 代码,大概是以下这种逻辑,你自己去分析一下:
{
_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;
}
用objdump命令
感谢,好像不怎么会使用:
#objdump -x filename
得到下面一条,但不会如何修改
080cf058 g F .text 00000025 _ZN10SIPLibrary12CheckLicenseEPKcS1_
............反编译后,然后自己想办法改,crack哪有那么直截了当
呵呵,版主教训得是!
主要是因为一个程序对于我非常有用,但有license限制.
破解估计没那么容易,还是找lic吧。
objdump -sd 文件
我使用-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
不完全明白上面的意思,修改不知如何下手!
看汇编还是很头疼的。