随笔分类 -  汇编知识

摘要:hrdev 详细参考: https://github.com/ax330d/hrdev/issues/2 在ida7.0环境下验证的 1.python是2.7版本,需要安装对应的clang版本11.0 c:\python27\Scripts\pip.exe install clang Collect 阅读全文
posted @ 2020-11-07 20:07 _**
摘要:1.将项目导出为jar包 2.使用dx命令将jar转为dex文件(android下执行文件为dex) 3.将生成的dex文件加入到jar包中(直接用压缩软件拖进去) 4.将jar包导入到/data下 5.切换为su用户,执行 摘自android应用安全防护和逆向分析 阅读全文
posted @ 2019-08-15 19:20 _**
摘要://android 常用命令 cat demo.txt |grep xxx start demo.txt echo "xxx" >demo.txt touch "xxx">demo.txt adb shell dumpsys adb shell dumpsys activity top adb sh 阅读全文
posted @ 2019-08-02 13:25 _**
摘要:将dump拖入到windbg中后,在command输入栏输入 .load wow64exts 回车 !sw 回车,就将windbg的dump,从64位模式切换到了32位模式,否则看到的call stack 对我们分析dump是没有帮助的。然后就可以使用其它的命令来分析了。比如:使用kb命令,查看所有 阅读全文
posted @ 2019-07-31 20:10 _**
摘要:https://blog.csdn.net/Young_Time/article/details/80346631 https://blog.csdn.net/yao_94/article/details/79151804 https://blog.csdn.net/u012737144/artic 阅读全文
posted @ 2019-07-30 10:58 _**
摘要:利用fastcall中ecx edx传递的特性,解决了ecx需要内嵌汇编才能实现hook thiscall函数的问题。 仅列出关键代码,其他不展示了,不懂的留言。 阅读全文
posted @ 2019-04-03 16:52 _**
摘要:2.main函数和启动例程 为什么汇编程序的入口是_start,而C程序的入口是main函数呢?本节就来解释这个问题。我们的汇编和链接步骤是:$ as hello.s -o hello.o$ ld hello.o -o hello以前我们常用gcc main.c -o main命令编译一个程序,其实也可以分三步做,第一步生成汇编代码,第二步生成目标文件,第三步生成可执行文件:$ gcc -S main.c$ gcc -c main.s$ gcc main.o-S选项生成汇编代码,-c选项生成目标文件,此外在还讲过-E选项只做预处理而不编译,如果不加这些选项则gcc执行完整的编译步骤,直到最后链 阅读全文
posted @ 2012-12-30 18:53 _**
摘要:3.变量的存储布局 首先看下面的例子:例19.2.研究变量的存储布局#include <stdio.h>const int A = 10;int a = 20;static int b = 30;int c;int main(void){ static int a = 40; char b[] = "Hello world"; register int c = 50; printf("Hello world %d\n", c); return 0;}我们在全局作用域和main函数的局部作用域各定义了一些变量,并且引入一些新的关键字const、 阅读全文
posted @ 2012-12-30 18:53 _**
摘要:1.函数调用我们用下面的代码来研究函数调用的过程。例19.1.研究函数的调用过程int bar(int c, int d){ int e = c + d; return e;}int foo(int a, int b){ return bar(a, b);}int main(void){ foo(2, 3); return 0;}如果在编译时加上-g选项那么用objdump反汇编时可以把C代码和汇编代码穿插起来显示,这样C代码和汇编代码的对应关系看得更清楚。反汇编的结果很长,以下只列出我们关心的部分。$ gcc main.c -g$ objdump -dS a.out ...08048394 阅读全文
posted @ 2012-12-30 18:49 _**
摘要:五大内存分区 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。 全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又 阅读全文
posted @ 2012-12-11 17:04 _**
摘要:堆和栈的区别(转载文章,原著地址不详)一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。-程序结束后有系统释放4、文字常量区—常量字符串 阅读全文
posted @ 2012-12-11 16:56 _**