我刚刚在VS2010上编译了以下内容(优化已关闭).
class Shape {
public:
int x,y;
Shape() {
x=10;
y=20;
}
virtual void function1() {
cout<<"function1";
}
virtual void function2() {
cout<<"function2";
}
};
int main() {
Shape *s = new Shape();
s->function1();
s->function2();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
反汇编不显示与虚函数对应的代码块或对它的任何调用,因此我假设这是因为使用vftable查找虚函数的方式.我正在使用IDA Pro,因此可能无法解决此类问题.如果我错了,请纠正我.
我在这方面也有一些疑问.
我有许多数据库表,我需要对POJO进行反向工程.我已经获得了创建裸POJO以及cfg.xml文件:
简单的POJO:
public class AddressType implements java.io.Serializable {
private long addressId;
private char addressType;
private String addressDescription;
}
Run Code Online (Sandbox Code Playgroud)
简单的cfg.xml:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.mycompany.model.Addytyp" table="ADDYTYP" schema="XX" catalog="BANANA">
<comment>Address Types</comment>
<id name="addressType" type="char">
<column name="ADDRESS_TYPE" length="1" />
<generator class="assigned" />
</id>
<property name="addressId" type="long">
<column name="ADDRESS_ID" precision="10" scale="0" not-null="true">
<comment>Address ID</comment>
</column>
</property>
<property name="addressDescription" type="string">
<column name="ADDRESS_DESCRIPTION" length="25" not-null="true">
<comment>Address Decription</comment>
</column>
</property>
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
我想知道的是,是否有一个设置或工具可以使用POJO中的列和ID信息作为注释对POJO进行反向工程而不是单独的文件?例如:
带注释的简单POJO:
@Table(name="ADDYTYP")
public class AddressType implements …Run Code Online (Sandbox Code Playgroud) elf文件是静态链接的
目前objdump的输出是这样的:
Disassembly of section: .init:
xxxxxx
Disassembly of section: .plt:
xxxxxx
Disassembly of section: .text:
xxxxxx
Run Code Online (Sandbox Code Playgroud)
基本上我想要实现的是
"elf-file - (通过objdump反汇编) - >汇编文件 - (重新编译) - > 相同的功能 "
我不需要重新编译的二进制文件具有与原始二进制文件相同的二进制内容,只有相同的功能就足够了.
经过快速搜索,基本上答案是否定的,他们认为反汇编文件丢失了一些像符号信息或其他东西,但我认为通过静态链接,我可以摆脱这个问题......
谢谢!
我们正在开发一个Android应用程序.我们知道使用像APKTool,dex2jar这样的工具可以获得APK的源代码.
1)他们可以获得完整的源代码,以便他们可以轻松地重建相同的APK吗?
2)获取源代码后,其他人是否有可能以自己的名义上传重建的APK?
3)如果可能,如何防止这种情况?
我们的客户对此很感兴趣.
老实说,我感到非常困惑,因为我的炸弹第三阶段看起来不像我的任何同学或教授给我的例子。任何帮助将不胜感激。我有我最近使用的终端机的一个副本,但在5个小时的大部分时间内我一直在努力尝试这一点,我已经知道了%d%d是所请求的布局,并且它要求2个数字,我相信其中一个是负数。由于这里有比较语句和jg
0x08048fbb <+39>: cmp $0x1,%eax
0x08048fbe <+42>: jg 0x8048fc5 <phase_3+49>
Run Code Online (Sandbox Code Playgroud)
同样,它要求再次比较同一个值,我认为这是这里的第一个
0x08048fc5 <+49>: cmpl $0x7,-0xc(%ebp)
0x08048fc9 <+53>: ja 0x8049032 <phase_3+158>
Run Code Online (Sandbox Code Playgroud)
让我失望的是,所有的加法和减法都是蝙蝠,总的来说,所有加法和减法都挤在了底部。
我应该在哪里找到可以与这些语句实际一起使用的值,如果我将它们加起来就等于多少。在这一点上,我什至不知道它是否正盯着我。所有比较如下
0x08048fbb <+39>: cmp $0x1,%eax
Run Code Online (Sandbox Code Playgroud)
0x08048fbe <+42>:jg 0x8048fc5
0x08048fc5 <+49>: cmpl $0x7,-0xc(%ebp)
0x08048fc9 <+53>: ja 0x8049032 <phase_3+158>
0x0804903c <+168>: cmpl $0x5,-0xc(%ebp)
0x08049040 <+172>: jg 0x8049047 <phase_3+179>
Run Code Online (Sandbox Code Playgroud)
但目前我需要对此问题重新审视。如果有任何帮助,将不胜感激。
That's number 2. Keep going!
0 1
Breakpoint 1, 0x08048f9a in phase_3 ()
(gdb) disas
Dump of assembler code for function phase_3:
0x08048f94 <+0>: push %ebp
0x08048f95 <+1>: mov %esp,%ebp
0x08048f97 <+3>: …Run Code Online (Sandbox Code Playgroud) 我正在分析一个可执行文件的格式,在中找到了基本重定位表image_optional_header,这个基本重定位表是什么?
windows reverse-engineering malware malware-detection visual-c++
我的公司有一个用matlab编写的分析产品.我们想将其编译为可执行文件并出售给第三方.我们关注的一件事是代码被反向工程的可能性.
对编译的matlab代码进行反向工程是否很难?与编译的c ++代码相比,这样做有多难?因此,如果我们需要将所有内容转换为c ++,我们会做出决定,这显然会花费大量的劳动时间.
我计划通过smali更改包名(反向)
当我打开apktool.yml时,我看到了这个
forced-package-id:'127'
我试图改变它,但它崩溃我为什么要这样做?
可有人向我解释为什么我们在移动值rax,以rdi在主函数中@0x6f5,然后在值复制rdi到的堆栈 get_v,然后转移回rax @0x6c8?也许它是x86-64的惯例,但我不理解它的逻辑.
main:
0x00000000000006da <+0>: push rbp
0x00000000000006db <+1>: mov rbp,rsp
0x00000000000006de <+4>: sub rsp,0x10
0x00000000000006e2 <+8>: mov rax,QWORD PTR fs:0x28
0x00000000000006eb <+17>: mov QWORD PTR [rbp-0x8],rax
0x00000000000006ef <+21>: xor eax,eax
0x00000000000006f1 <+23>: lea rax,[rbp-0xc]
=>0x00000000000006f5 <+27>: mov rdi,rax
0x00000000000006f8 <+30>: call 0x6c0 <get_v>
0x00000000000006fd <+35>: mov eax,0x0
0x0000000000000702 <+40>: mov rdx,QWORD PTR [rbp-0x8]
0x0000000000000706 <+44>: xor rdx,QWORD PTR fs:0x28
0x000000000000070f <+53>: je 0x716 <main+60>
0x0000000000000711 <+55>: call …Run Code Online (Sandbox Code Playgroud) 我很想知道如果没有用于混淆的商业产品,有什么方法可以安全地存储API网址和参数,这些都无法在逆向工程中编译?我已经尝试了所有我的应用程序和他们的API网址和代码很容易阅读.我担心安全问题.
android ×3
assembly ×3
gdb ×2
x86 ×2
apk ×1
c++ ×1
decompiling ×1
disassembly ×1
elf ×1
hibernate ×1
java ×1
malware ×1
matlab ×1
obfuscation ×1
objdump ×1
proguard ×1
smali ×1
visual-c++ ×1
windows ×1
x86-64 ×1