- 博客(57)
- 资源 (9)
- 收藏
- 关注
原创 进制间的转换笔记
今天发现电脑中的破解计算器似乎被病毒感染了,启动不了,于是乎,就有了今天的这篇笔记吧。。。说动手就马上动手写一个功能和它相同的计算器,方便以后的使用,就不会在去求助于别人的程序了。。。说道这里,我发现,其实计算器的实现,其实还是字符串与个进制的转换问题。。。因为,只要你从文本框获取数据或者是写入数据,不可避免的都要使用字符串的操作。。到底我们应该怎么样去做呢? 还是首先来
2009-11-29 18:04:00 506
原创 总结一下应用层上对注册表的操作
注册表,对于系统来说,重要性不用多说,我们能够通过修改里边的数据来达到某种目的。。。对于它的处理,基本上也就是 增,删,改,查。。。 HKEY key = NULL; LONG lResult = 0; LPCSTR data_set = "SOFTWARE//Microsoft//Internet Explorer//Main"; int len = st
2009-11-27 23:22:00 537
转载 在应用层上_注册表的_API
1:注册表操作常用API API说明RegCreateKey创建一个KEY,并返回相应的HKEYRegOpenKey打开注册表,得到一个HKEY,用来作为下面这些函数的第一个参数。RegOpenKeyEx同RegOpenKey类似,一般很少用,增加了一个访问控制类型参数。RegSetValue设置一
2009-11-27 21:20:00 756
原创 同步处理_2
#include #include #include UINT WINAPI Thread(LPVOID para){ static int i = 1; printf("this is Thread %d/n", i++); Sleep(5000); return 0;} int main(){ HANDLE handle[2]; handle[0]
2009-11-26 23:07:00 409
原创 使用等待对象的方法,实现多线程的同步处理。。
#include #include /* _beginthread, _endthread */这是一个创建线程的宏,必须在工程->设置->C/C++->Code Generation->Use run-time libray->选 Debug Multithread(多线程),或 Multithread才可以使用,不然会出现,没有定义的错误。。。#include
2009-11-25 23:51:00 747
原创 修改注册表,实现开机启动程序
#include #include #include using namespace std;int main(){ HKEY key; //注册表的句柄 LPCSTR
2009-11-24 17:39:00 1327
转载 关于ACM错误提示的说明
下面是一般JudgeOnline系统所有可能产生的结果,如果对返回的结果不明,看看解释吧Waiting: Your program is being judged or waiting to be judged. Accepted (AC): Congratulations! Your program has produced the correct output! Pr
2009-11-17 18:21:00 1134
原创 关于 NDIS 中间层驱动的实现方案。。。
最近,打算写一个基于 中间层的驱动过滤程序,功能应该具有基本的防火墙的特点:可以对本机发出和接受的数据包进行过滤,达到一般的数据处理的功能,以后会继续完善里边的功能。。。具体的实现想法:1:在passthrough 的框架下2:能够提示数据的信息,达到内核与用户层的交互3:添加功能:对注册表写的禁止,对IE的保护。。。4:提高效率
2009-11-16 18:05:00 505
原创 乘法口诀
#include using namespace std;int main(){ int i, j, k, nArray[10] = {0}, l = 0; cin >> k; while (0 != k) { nArray[l++] = k; cin >> k; } k = 0; while ( k { cout for (i = 1; i { fo
2009-11-16 18:01:00 414
原创 二叉树的非递归访问
#include #include using namespace std;struct Infor{ char word; int nFlags; struct Infor *lchild, *rchild, *next;};class Test{public: Test(); void CreatTree(); void PreOrder(); void PrePassT
2009-11-16 18:01:00 486
原创 舞伴问题
#include #include using namespace std;struct Infor{ char szSex; string strName; struct Infor *next;};class Test{public: Test(); void InterFace(); void CreatQuene(); void ShowResult();privat
2009-11-16 18:00:00 716 1
原创 判断某日是该年第几天
#include using namespace std;struct Infor{ int nYear; int nMonth; int nDay; int nNum; struct Infor *next;};int main(){ // 1 2 3 4 5 6 7 8 9 10 11 12 const int nArray
2009-11-16 18:00:00 477
原创 一元多项式的运算
#include using namespace std;struct Infor{ int coef; int exp; struct Infor *next;};int main(){ int i = 0, j, k; char word; struct Infor *p1 = new struct Infor; struct Infor *p2 = p1; struct In
2009-11-16 17:58:00 635
原创 判断闰年的另类条件
#includeusing namespace std;int main(){// freopen("1.txt", "r", stdin); long int i; cin >> i; while (0 != i) { bool bRet = false; if ((0 == i % 172800) && (0 == i % 86400)) { bRet = true;
2009-11-16 17:58:00 518
原创 数组输出
#include using namespace std;#define MAXSIZE 100int main(){ freopen("1.txt", "r", stdin); int word; int nArray[MAXSIZE], i, j = 0, k, l; cin >> word; for (; 0 != word; ) { nArray[j++] = word
2009-11-16 17:56:00 339
原创 打印方阵
#include using namespace std;int main(){ int i, j, k; cin >> i; for (j = 0; j { for (k = 0; k { if (0 == j || j == i - 1 || 0 == k || k == i - 1) { cout } else if (j == i/2 && k =
2009-11-16 17:56:00 399
原创 AC WA or PE
#include #include using namespace std;struct Infor{ string str; int nFre;};int main(){ int i, j, k = 0; string strWord; struct Infor array[100]; cin >> i; while (0 != i) { int nSum = 0
2009-11-16 17:56:00 766
原创 计算二叉树的结点个数
#include using namespace std;extern int gNum = 0;struct Infor{ char word; struct Infor *lchild, *rchild;};class Test{public: Test(); void CreatTree(); void PreTree();private: struct Infor *
2009-11-16 17:55:00 1601
原创 二叉树的建立和访问的方法
#include #include #include using namespace std;struct Infor{ int nNum; struct Infor *lChild, *rChild, *next;};class Test{public: Test(); void creatTree(); void PreTree(); void MidTree(); void Las
2009-11-16 17:54:00 390
原创 集合的运算
#include using namespace std;class Test{public: Test(); void InterFace(); void ShowDef(); void ShowSame(); void GetArrayA(); void GetArrayB();protected:private: int m_nArray_1[20], m_nArray_2[20
2009-11-16 17:53:00 419
原创 队列的顺序存储结构与操作
#include using namespace std;templateclass Test{public: Test(); void InterFace(); void GetIntoQue(); void CleanQuene(); void GetQueueHead(); void DeleteQueueHead(); void Exit();private: T m_t[100
2009-11-16 17:52:00 515
原创 队列的链式存储结构与操作
#include using namespace std;struct Infor{ char temp; struct Infor *next;};templateclass Test{public: Test(); void InterFace(); void GetIntoQueue(); void GetTopStack(); void Exit(); void Delete
2009-11-16 17:52:00 559
原创 栈的顺序存储结构与操作
#include using namespace std;struct Infor{ char word;};templateclass Test{public: Test(); ~Test(); void InterFace(); void GetIntoStack(); //入站 void OutputStack(); //出站不删除 void ShowStack();
2009-11-16 17:51:00 407
原创 栈的链式存储结构与操作
#include using namespace std;struct Infor{ char temp; struct Infor *next;};templateclass Test{public: Test(); ~Test(); void InterFace(); void Exit(); void GetIntoStack(); void GetOutStack();
2009-11-16 17:51:00 391
原创 线性表的链式存储结构与操作
#include using namespace std;struct Infor{ int nLocal; char szWord; Infor *next;};class Test_2{public: Test_2(); ~Test_2(); void InterFace(); void BuildList(); void SearchOne(); void DeleteOne(
2009-11-16 17:50:00 608
原创 简单的括号匹配问题,只有 ( 和 )。。。其实原理就是开栈最后的状态。。。
#include using namespace std;templateclass Test{public: Test(); void GetIntoStack(T temp, int nSize); private: int m_nLeft;};templateTest::Test(){ m_nLeft = 0;}templatevoid Test::GetIntoStac
2009-11-16 17:48:00 361
原创 线性表的顺序存储结构与操作
#include#define MaxSixe 20using namespace std;struct Infor{ char szWord; Infor *next;};class Test_1{public: Test_1(); ~Test_1(); void InterFace(); void InsertNum(); void CreateList(); void Show
2009-11-16 17:46:00 458
原创 驱动程序的基本结构
对于 DriverObject:它是驱动的核心部分,每一个驱动程序,都会对应有一个驱动对象,每一个驱动对象都会派生出一个或对个的设备对象。。。也可以说“设备对象重属于驱动对象” 对象又可以分成3类:1:文件对象2:设备对象3:驱动对象 设备对象(DeviceObject)它的flags 有几个域在过滤程序中经常用到。。。DO_BUFFERED_IO(
2009-11-12 23:03:00 610
原创 帮朋友搭建好了开发环境。。。
今天,帮朋友搭建好了驱动的开发环境,总是有点感触。。。对于内核方面,入门真的是比较难的,就连一个环境就得让初学者忙活半天,想想当初,自己也是弄了好久,虽然我还是菜鸟,但是,对于刚刚入门的时候,总是感觉到时有那么得难,毕竟,没有人能给自己指点,确实经常会比较郁闷的了。。。不过,这是一种历练吧,只有那一段时间过后,你才能上升到另一个高度。。。
2009-11-12 22:26:00 379
原创 this 指针的运用实例
#include using namespace std; class Point { public: Point( ); Point( int a, int b ); void display( ); void display( int a1, int b1 ); private: int a1; int b1; }; Point::P
2009-11-12 11:18:00 408
原创 5种常见语言特征区段
Borland C++ 00401000 > $ A1 A8534B00 MOV EAX,DWORD PTR DS:[4B53A8] 00401005 . C1E0 02 SHL EAX,2 00401008 . A3 AC534B00 MOV DWORD PTR DS:[4B53AC],EAX 0040100D . 57 PUSH EDI 0040100E .
2009-11-12 11:17:00 764
原创 构造函数
在构造函数时,先构造基类,然后才是子类。 但是,析构时,正好相反。。。 函数的覆盖是发生在父类与子类之间的。。 函数的重载是发生在一个类中的函数与函数之间的。。 看内存类型是否可以转换关键看内存模型; 执行强制转换时: 如果是内存模型小的转换成大的,则不会发生折断; 否者就会发生精度上的丢失; 多态性;一种迟后联编技术 如果想利用多态性,则可以将基类中
2009-11-12 11:17:00 461
原创 手脱 Armadillo 3.78 - 4.xx -> Silicon Realms Toolworks
手脱 Armadillo 3.78 - 4.xx -> Silicon Realms Toolworks 这是一个穿山甲的壳。。。当运行它后,在任务窗口,只发现有一个进程, 那么我们就用常规的方法来处理它。。。 首先,用OD载入, 下 GetModuleHandleA+5 这个断点,然后 shift+F9 运行。 观察堆栈窗口 001292A4 /0012EBB0
2009-11-12 11:16:00 2532
原创 脱ACProtected的壳的过程
004254C9 55 push ebp 004254CA 8BEC mov ebp,esp 004254CC 83EC 44 sub esp,44 脱ACProtected的壳的过程: 当拿到它的时候,用PEID查壳UltraProtect 1.x -> RISCO Software ,用OD载入后,运行后,记事本直接打开,然后重新开始,右键 分析代码 ,shif
2009-11-12 11:16:00 764
原创 手脱 UltraProtect 1.x -> RISCO Software Inc
手脱 UltraProtect 1.x -> RISCO Software Inc. 用PEID 查壳 用OD 载入。。。 分析代码。。。。 不选非法访问内存!!! 可以用ESP定律来取得它的入口地址。。 当然首先应该看一下它是否被抽取了入口代码,将它们隐藏起来了。。 载入后后,可以对代码进行分析,用最后一次异常的方法来到那个 ret 然后打开内存镜像,在代码处内
2009-11-12 11:15:00 1532
原创 ESP定律和内存断点
1.ESP定律的原理是什么? 堆栈平衡原理。 2.ESP定律的适用范围是什么? 几乎全部的压缩壳,部分加密壳。只要是在JMP到OEP后,ESP=0012FFC4的壳,理论上我们都可以使用。但是在何时下断点避开校验,何时下断OD才能断下来,这还需要多多总结和多多积累。 数据窗口跟随----硬件访问---DWORD 3.内存断点: 在所执行的代码的当前地址的一个字
2009-11-12 11:15:00 1579
原创 手脱 ASProtect 1.22 - 1.23 Beta 21 -> Alexey Solodovnikov
手脱 ASProtect 1.22 - 1.23 Beta 21 -> Alexey Solodovnikov 并修复的过程; OD忽略出内存和添加的访问的所有异常; 还是运用最后一次异常的方法,达到程序OEP 达到脱壳的目的; 当达到后,打开内存镜像,在CODE 段下断点,运行。。达到OEP。。 脱壳,修复。。。不能运行。。。 为什么??因为程序中还有还有问
2009-11-12 11:14:00 1275
原创 不脱壳破解 ASProtect 2.0x Registered -> Alexey Solodovnikov 加壳程序
不脱壳破解 ASProtect 2.0x Registered -> Alexey Solodovnikov 加壳程序 e2h-dist.exe。。 首先用 OD 载入程序。忽略出 int3 外的所有异常。。 运行它。。出现注册对话窗口。。 填入假码和注册信息。。。确定,,出现一个对话框 “invalidus code” 记住它。。暂停后,分析一下代码,搜索-》所有文
2009-11-12 11:14:00 1760
原创 手动查找 IAT 的方法!!!
一个这样的壳: MoleBox 2.x.x -> Mole Studio 是用 汇编写的; ***************************** 运用 ESP 定律 达到程序的 OEP (如果在这个过程中,程序出现异常,就将它们添加进异常,继续运行程序,到达OPE,当看到 -jmp后,F7 进入就到了),正常脱壳后,发现程序无法运行。。修复时,有两个无效的指针。用
2009-11-12 11:13:00 3003
原创 手动去自校验!!
快速去掉自校验的思路: 用od 将壳脱掉后,没有什么其他的问题,然而程序仍然不能运行,可能就是程序中 存在自校验了。。。 当然,你可以用双 OD 的方法,慢慢的比较他们的不同,现在,我们来用一种更快的方法去掉它。。 将程序载入后,查找--当前模块的标签--》找到 ExitProcess... 因为程序的退出都是由它来完成的。。 怎么样来退出程序呢?? 肯定是通过一
2009-11-12 11:13:00 1114
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人