导入表注入(iathook)-爱代码爱编程
头文件(hookMain.h)内容 #pragma once #include<Windows.h> DWORD* g_iatAddr = NULL; DWORD* g_unHookAddr = NULL; BOOL InstallHook(); //安装钩子 BOOL UninstallHook(); //卸载钩子 DWORD* Get
代码编织梦想
头文件(hookMain.h)内容 #pragma once #include<Windows.h> DWORD* g_iatAddr = NULL; DWORD* g_unHookAddr = NULL; BOOL InstallHook(); //安装钩子 BOOL UninstallHook(); //卸载钩子 DWORD* Get
重点是理解下面的代码:把v3是一个二维数组,每个数组元素是一个字符。循环体内按一定规则取一个字符减去输入的字符串中的某个字符的值,若不为1,则失败。 __int64 __fastcall sub_4006FD(__int64 a1) { int i; // [rsp+14h] [rbp-24h] __int64 v3[4]; // [rsp+18
0x00 前言 最近突然忙起来了,忙里偷闲的做道题。 0x01 复习 首先要复习一下布尔运算的一些知识。 布尔运算符有“&,|,-,⊕”,分别对应“与、或、非、异或”。其中的运算规则为: 与: 0&0 = 0,0&1 = 0,1&0 = 0,1&1 =
[MRCTF2020]Shit 给了源码, 修改一下decode, 可以解出flag // Damn.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include<Wi
0x00 前言 越呆着心越慌,索性做道题压压惊。 0x01 正文 不一样?有多不一样?是骡子是马牵出来遛遛。 还是先查壳,32位程序,C++编写,Balabalabala……,打开32位IDA。 看到一串奇怪的代码“*111101000010100001
从逆向角度看C++ 1.2.1 虚函数地址表(虚表) 定义:当类中定义有虚函数时,编译器会把该类中所有虚函数的首地址保存在一张地址表中,即虚函数地址表。虚表信息在编译后被链接到执行文件中,因此所获得的虚表地址是一个
程序1 使用 VC6.0 编译如下程序(使用 VC6.0 的原因是该编译器不会对代码进行过多的优化,因此适合逆向入门) // 01.cpp : Defines the entry point for the consol
0x00 前言 好不容易休息了,躺在床上睡了一整天。真不是我不行,996啊。 0x01 Hello World 一开始的看到这题目的时候觉得没什么难的,直到下载下来的时候才发现,这不是普通的程序,而是安卓的APK。说实话,一开始我也多少有点慌,安卓啊,没见过啊。 但是有了之前的经验,无非是查壳、看
常见的干扰逆向分析的技术有花指令、反调试、加壳、控制流混淆、双进程保护、虚拟机保护等技术。 目录 一、花指令 1.定义 2.基本思路 3.实例分析 二、反调试 1.利用ptrace 2.proc文件检测系统 3.父进程检测 4.实例分析 三、加壳 1.基本思路 四、控制流混淆 1.基本思路 2.实例分析 五、双
(1)使用VC++,C语言编写简单的hello world程序 #include <stdio.h> int main(int argc, char* argv[]){ printf("Hello World\n"); getchar();//防止弹框一下消失,无法观察到现象 return 0;} (2)生成E
0x00 前言 最近觉得正业有点坑,做点题缓解缓解心情。 0x01 正文 首先拿到题目之后,先丢到exeinfo中查看题目信息。 可以得到的信息有:C++,32位,无壳。所以可以采用IDA32打开。 打开之后很明显的可以看到main函数,双击追踪一下。
本问只是为初入逆向工程大坑的新人们指出方向学习,没有实质性的技术。总的来说,基础才是最重要的。 逆向工程入门应该算是所有学习方向中最难的。但是选择了这一方向的请不要放弃,一旦学成,必定会是大神级别的存在。 那么,逆向工程的
findKey shift + f12 找到一个flag{}字符串, 定位到关键函数, F5无效, 大概率是有花指令, 读一下汇编 这里连续push两个byte_428C54很奇怪, nop掉下面那个, 再往上找到
通用环境配置 Android Studio和gradle插件兼容性 Android Studio java17配置 同步错误 .kts maven { setUrl("https://maven.aliyun.c
大部分佬都是用动调做出来的,我暂时还没动调出来,意外发现可以用ponce插件符号化input字符串进行求解 Ponce插件约束求解 input后有个cmp指令 用于判断字符串长度等于32 然后是移动key字符串
易语言版本和python版本都可实现 打开页面之后,寻找x-api-eid-token的生成接口。 就是这个jstk.do 的接口,其中a参数和d参数都是需要处理的加密参数。 点击接口启动器,尝试寻找入口。 点击进
[SWPU2019]ReverseMe 反编译的伪码看不明白, 直接动调 这里显示"Please input your flag", 然后接受输入, 再和32进行比较, 应该是flag长度要求32位, 符合要求则跳
[NPUCTF2020]你好sao啊 int __cdecl main(int argc, const char **argv, const char **envp) { __int64 v3; // rax
[CISCN2018]2ex 四处游走寻找关键代码 int __fastcall sub_400430(int a1, unsigned int a2, int a3) { unsigned int v3; //
[GWCTF 2019]babyvm void __fastcall __noreturn main(int a1, char **a2, char **a3) { __int64 v3[2]; // [rsp+1