随笔分类 -  逆向基础

摘要:要实现这样一个窗口,点击目录按钮弹出窗口,显示pe结构的目录项; 画一个窗口,然后解析pe的数据目录,将得到的值用sendmessage放入输入框即可; 没什么难度,但是数据太多麻烦; 实现代码: //解析数据目录文件 BOOL getDirInfo(HWND hwndDlg){ LPVOID pF 阅读全文
posted @ 2020-01-17 09:04 L丶银甲闪闪 阅读(612) 评论(0) 推荐(0)
摘要:1.目标 点击按钮“区段”弹出节表框,显示当前所选pe文件的节表信息 2.分析 1)画一个新对话框;只需要一个listView即可; 2)按钮的点击事件中调用DialogBox弹出该对话框; 3)在新对话框的回调函数的窗口加载事件中初始化listview; 4)为了得到节表信息,需要知道pe文件的路 阅读全文
posted @ 2020-01-16 15:42 L丶银甲闪闪 阅读(466) 评论(0) 推荐(0)
摘要:1.目标 点击PE查看按钮,选pe文件,然后将该pe文件的信息展示在另一个窗口中; pe信息窗口: 2.需求分析 1)新窗口 需要一个新的窗口,可用资源脚本新建一个对话框,然后拖控件实现; 然后在pe查看按钮的点击事件中调用DialogBox(hAppInstance,MAKEINTRESOURCE 阅读全文
posted @ 2020-01-15 09:48 L丶银甲闪闪 阅读(808) 评论(0) 推荐(0)
摘要:1.目标 需要实现一个pe文件的查看工具; 左边有两个listview; 上方是进程列表,下方是模块列表,进程列表中显示当前运行的所有进程信息; 点击进程列表中的某一个进程,在模块列表中显示该进程的所有模块信息; 点击右边的pe查看,先选一个pe文件,然后会弹出另一个窗口,显示该pe文件的信息; 2 阅读全文
posted @ 2020-01-14 12:27 L丶银甲闪闪 阅读(1082) 评论(0) 推荐(0)
摘要:1.进程的继承 创建进程的函数:BOOL CreateProcess( LPCTSTR lpApplicationName, // 创建进程时打开的exe文件名 LPTSTR lpCommandLine, // 创建进程时的命令行参数 LPSECURITY_ATTRIBUTES lpProcessA 阅读全文
posted @ 2020-01-10 10:53 L丶银甲闪闪 阅读(1576) 评论(0) 推荐(0)
摘要:1.进程的创建过程 步骤一: 当系统启动后,创建一个进程:Explorer.exe 也就是桌面进程. 步骤二: 当用户双击某一个EXE时,Explorer 进程使用CreateProcess函数创建被双击的EXE,也就是说,我们在桌面上双 击创建的进程都是Explorer进程的子进程. 可以用工具X 阅读全文
posted @ 2020-01-08 10:18 L丶银甲闪闪 阅读(585) 评论(0) 推荐(0)
摘要:TCHAR字符串操作函数: _tcslen(str) //获得字符串长度 _tcsrchr(str, L'\\') //反向搜索获得最后一个TCHAR的位置 _stprintf(TCHAR *buffer,const TCHAR *format [,argument] ... ) //获得一个格式化 阅读全文
posted @ 2020-01-06 13:44 L丶银甲闪闪 阅读(340) 评论(0) 推荐(0)
摘要:多线程程序需要注意两件事:互斥和同步; 互斥是多个线程访问同一个资源时,要保证同一时刻只能有一个线程访问该资源; 互斥常用的实现方式有:临界区和互斥体; 临界区无法跨进程,互斥体可以; 互斥体是内核对象,内核对象需要对0环进行操作,效率不如临界区; 同步是为了线程按顺序执;例如两个线程,希望某一个线 阅读全文
posted @ 2020-01-04 14:21 L丶银甲闪闪 阅读(363) 评论(0) 推荐(0)
摘要:1.内核对象 内核对象是由操作系创建和维护的,在程序的高2g内存中创建; 进程可以共享内核对象; 常见的内核对象:进程、线程、文件、文件映射、事件、互斥体等等 1)内核对象的创建 各种内核对象有各自的创建API函数; 内核对象是由操作系统创建的,三环程序只能用API函数告诉系统需要创建一个内核对象; 阅读全文
posted @ 2020-01-04 10:34 L丶银甲闪闪 阅读(304) 评论(0) 推荐(0)
摘要:1.等待函数 1)WaitForSingleObjectDWORD WaitForSingleObject( HANDLE hHandle, // handle to object DWORD dwMilliseconds // time-out interval ); 功能说明: 等待函数可使线程 阅读全文
posted @ 2020-01-02 14:10 L丶银甲闪闪 阅读(744) 评论(0) 推荐(0)
摘要:1.线程不安全的原因 一个进程的4GB空间中可能有多个线程; 每一个线程都有自己的堆栈; 堆栈中放参数、局部变量等; 如果线程只使用参数和局部变量不会有线程安全问题; 当多个线程访问同一资源例如放在全局变量区中的全局变量时可能会有线程安全问题; 例如一个线程读另一个线程写或者两个线程都写同一个全局变 阅读全文
posted @ 2019-12-30 08:39 L丶银甲闪闪 阅读(431) 评论(0) 推荐(0)
摘要:1.线程控制 控制线程状态的API函数: //挂起线程: ::SuspendThread(hThread); //恢复线程: ::ResumeThread(hThread); //终止线程: //方式一: ::ExitThread(DWORD dwExitCode); //参数中没有线程句柄,在线程 阅读全文
posted @ 2019-12-26 12:12 L丶银甲闪闪 阅读(278) 评论(0) 推荐(0)
摘要:1.进程与线程 程序: 当代码写完后,编译会生成一个.exe文件,存储在硬盘中;这就是程序; 内存镜像: exe文件双击执行时,会加载到内存中; exe文件在内存中的状态和在文件中的状态不同; 内存中的状态是pe结构拉伸后的状态; pe结构拉升后的状态称为内存镜像; pe文件的内存镜像并不一定可以运 阅读全文
posted @ 2019-12-25 13:55 L丶银甲闪闪 阅读(323) 评论(0) 推荐(0)
摘要:1.标准控件 可以在win32窗口程序中添加资源脚本来给程序添加标准控件; 具体操作为:新建资源脚本 ->在.rc文件中添加控件 ->给控件绑定事件; 常用的标准控件: Static ->组框,用来将窗口分成多个块 Group Box Button Check Box Radio Button Ed 阅读全文
posted @ 2019-12-23 15:00 L丶银甲闪闪 阅读(1720) 评论(0) 推荐(1)
摘要:win32程序编译完成后会有默认的图标,很丑; 也可以自己添加图标; 1.给win32程序添加图标 首先下载.ico格式的图标,放入工程目录中; 打开xx.rc文件 -》右键选中xx.rc -》插入 -》选图标Icon -》引入 -》选自己下载的.icon 添加完成后,可以在resource.h中看 阅读全文
posted @ 2019-12-21 17:53 L丶银甲闪闪 阅读(458) 评论(0) 推荐(1)
摘要:1.快捷创建窗口 win32程序创建窗口需要:定义窗口类、注册窗口类、创建窗口、写回调函数来处理消息、添加消息循环来接收消息等等; 还有另外一种创建窗口的方式:利用资源文件; 先创建一个空的win32项目; 在项目中添加资源文件: File -> New -> Resource Script 创建成 阅读全文
posted @ 2019-12-16 14:56 L丶银甲闪闪 阅读(451) 评论(0) 推荐(0)
摘要:1.按钮是什么 在win32窗口中,经常可以看到按钮,点击按钮可以触发各种事件; 创建按钮的函数: void CreateButton(HWND hwnd) //参数为父窗口句柄,按钮必须属于一个父窗口,因此该函数只要在父窗口创建完成即父窗口的CreateWindow函数调用完成之后就能调用; { 阅读全文
posted @ 2019-12-12 16:28 L丶银甲闪闪 阅读(2057) 评论(0) 推荐(0)
摘要:1.分析消息的附加参数 例如:为了查看程序处理了哪些消息 在回调函数中调用输出函数,在控制台中输出消息的值; 结果:可以看到处理了消息7f、88、31f等消息 例如分析7f消息; 在vc6中可以选中任意一个消息类型宏,按F12进入宏的定义头文件中; 在头文件中找到7f对应的消息宏; 可以看到是WM_ 阅读全文
posted @ 2019-12-11 12:16 L丶银甲闪闪 阅读(588) 评论(0) 推荐(0)
摘要:1.事件和消息 Windows中的事件是一个“动作”,这个动作可能是用户操作应用程序产生的,也可能是Windows自己产生的. 例如:鼠标右键点击就是一个事件 当我们做了这个动作后,windows要能正确响应必须记录如下信息:点的是谁、在哪里点的、动作是什么类型等等; 否则windows就无法知道我 阅读全文
posted @ 2019-12-09 16:15 L丶银甲闪闪 阅读(644) 评论(0) 推荐(0)
摘要:1.关于字符编码 1)ASCII 1】ASCII 码使用指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符。 2】标准 ASCII 码使用 7 位二进制数来表示所有的大写和小写字母,数字 0 到 9、标点符号,以及在美式英语中使用的特殊控制字符。 3】扩展 ASCII 码允 阅读全文
posted @ 2019-12-06 15:23 L丶银甲闪闪 阅读(901) 评论(0) 推荐(0)