C++反编译-类的继承二

- - - - - - begin - - - - - -
;42 :        speak(&chinese);
0x4013c7    lea    0x5c(%esp),%eax
0x4013cb    mov    %eax,(%esp)
0x4013ce    movl   $0x1,0x20(%esp)
0x4013d6    call   0x401350 <speak(CPerson*)>
- - - - - - call speak - - - - - -
;34 :    void speak(CPerson* pPerson) {
0x401350    push   %ebp
0x401351    mov    %esp,%ebp
0x401353    sub    $0x8,%esp
;35 :        pPerson->showSpeak();
0x401356    mov    0x8(%ebp),%eax //一级寻址ebp+0x8
0x401359    mov    (%eax),%eax //二级寻址eax
0x40135b    add    $0x8,%eax
0x40135e    mov    (%eax),%eax //三级寻址eax,这里等同于0x438780
0x401360    mov    0x8(%ebp),%ecx
0x401363    call   *%eax //call showSpeak
;36 :    }
0x401365    nop
0x401366    leave
0x401367    ret
- - - - - - call showSpeak - - - - - -
;14 :        virtual void showSpeak() {
0x438780    push   %ebp
0x438781    mov    %esp,%ebp
0x438783    sub    $0x28,%esp
0x438786    mov    %ecx,-0xc(%ebp)
;15 :            printf("speak Chinese\n");
0x438789    movl   $0x4b9024,(%esp)
0x438790    call   0x430c20 <puts>
;16 :        }
0x438795    nop
0x438796    leave
0x438797    ret
- - - - - - 对应栈过程 - - - - - -
栈编号        处值      地址
esp-0x10(esp)              0x28fea0
esp-0xc               0x28fea4
esp-0x8(ebp)               0x28fea8    

esp          0x28ff0c   0x28feb0
                0x28ff08   0x28feb0

esp+0x20        0x1        0x28fed0

esp+0x54        0x4c14d0   0x28ff04
esp+0x58        0x4c150c   0x28ff08
esp+0x5c        0x4c14f8   0x28ff0c

ebp             0x28ff28
- - - - - - 补充处 - - - - - -
                            0x4c14d0
                            0x4c14d4
                0x438658    0x4c14d8

                            0x4c14f8
                            0x4c14fc
eax             0x438780    0x4c1500

                            0x4c150c
                            0x4c1510
                0x43880c    0x4c1514

原文地址:https://www.cnblogs.com/reverse201/p/10362241.html

时间: 2024-10-16 01:02:54

C++反编译-类的继承二的相关文章

C++反编译-类的继承

;35 : DExtend de; - - - - - - main栈 - - - - - - 0x401369 lea -0x10(%ebp),%eax 0x40136c mov %eax,%ecx 0x40136e call 0x438628 <DExtend::DExtend()> //定义时调用空构造函数 0x40138a lea -0x10(%ebp),%eax 0x40138d mov %eax,%ecx 0x40138f call 0x438640 <DExtend::~D

Eclipse - 安装了jd-eclipse插件后依然无法反编译类文件

问题 Eclipse在安装了jd-eclipse插件后依然无法反编译类文件,这个问题是因为没有修改默认的类文件查看器. 解决方法 修改默认的类文件查看器为jd-eclipse Window -> Preference -> General -> Editors -> File Associations 选中*.class,将Class File Editor设置为默认(Default) 选中*.class without source,将Class File Editor设置为默认

C++反编译-类与结构体分析二

类作为参数传递 main函数;17 :    {0x401373    lea    0x4(%esp),%ecx0x401377    and    $0xfffffff0,%esp0x40137a    pushl  -0x4(%ecx)0x40137d    push   %ebp0x40137e    mov    %esp,%ebp0x401380    push   %ecx0x401381    sub    $0x24,%esp0x401384    call   0x4270d

C++ 类的继承二(赋值兼容性原则)

//赋值兼容性原则 #include<iostream> using namespace std; class PointA{ public: PointA(){ x = 0; y = 0; } void Set(){ } private: int x; int y; }; class PointB :public PointA{ public: private: int c; }; /* 赋值兼容性原则内部原理分析 在子类继承父类的时候,在子类的内存区域上,父类的元素会放在前面,子类的元素会

C++反编译-类与结构体分析

类>构造函数 ;5 : A(int a, int b, int c) { 0x438638 push %ebp 0x438639 mov %esp,%ebp 0x43863b sub $0x4,%esp 0x43863e mov %ecx,-0x4(%ebp) ;6 : this->a = a; 0x438641 mov -0x4(%ebp),%eax 0x438644 mov 0x8(%ebp),%edx //等价于取a的值 0x438647 mov %edx,(%eax) //等价于把a赋

java javassist创建类和反编译类

用javassist生成一个新的类 public class Byte { public static void main(String[] args) throws Exception { //获得类池 ClassPool pool=ClassPool.getDefault(); //创建类 CtClass cc=pool.makeClass("cn.sxt.in.Emp"); //创建属性 CtField f1 = CtField.make("private int em

C++反编译-类与结构体分析三

main函数 ;15 : { 0x40137a push %ebp 0x40137b mov %esp,%ebp 0x40137d and $0xfffffff0,%esp 0x401380 sub $0x60,%esp 0x401383 call 0x427130 <__main> ;16 : A a; ;17 : a.a = 1; 0x401388 movl $0x1,0x38(%esp) ;18 : a.b = 2; 0x401390 movl $0x2,0x3c(%esp) ;19 :

iOS开发——装逼技术精选&amp;关于反编译和防止反编译

关于反编译和防止反编译 反编译 内购破解 iOS应用需防反编译风险之一:插件法(仅越狱).iTools工具替换文件法(常见为存档破解).八门神器修改 网络安全风险 iOS应用需防反编译风险之二:截获网络请求,破解通信协议并模拟客户端登录,伪造用户行为,对用户数据造成危害 应用程序函数PATCH破解 iOS应用需防反编译风险之三:利用FLEX 补丁软件通过派遣返回值来对应用进行patch破解 源代码安全风险 iOS应用需防反编译风险之四:通过使用ida等反汇编工具对ipa进行逆向汇编代码,导致核心

iOS 反编译

iOS开发 防止应用程序被反编译 1  本地数据加密   iOS应用防反编译加密技术之一:对NSUserDefaults,sqlite存储文件数据加密,保护帐号和关键信息2  URL编码加密    iOS应用防反编译加密技术之二:对程序中出现的URL进行编码加密,防止URL被静态分析3  网络传输数据加密   iOS应用防反编译加密技术之三:对客户端传输数据提供加密方案,有效防止通过网络接口的拦截获取数据4  方法体,方法名高级混淆   iOS应用防反编译加密技术之四:对应用程序的方法名和方法体