社区
C语言
帖子详情
大家帮我看看这个函数错哪了!调得我郁闷死了!
fcwfcwfcw
2005-11-10 08:52:46
int fill_date(void *x,void *y,int i)
{ int j;
for (j=0;j<i;j++)
{
(unsigned char *)*x++=(unsigned char*)*y++;
}
}
...全文
149
6
打赏
收藏
大家帮我看看这个函数错哪了!调得我郁闷死了!
int fill_date(void *x,void *y,int i) { int j; for (j=0;j<i;j++) { (unsigned char *)*x++=(unsigned char*)*y++; } }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chqu18
2005-11-14
打赏
举报
回复
关键是看起来要容易明白。
liuq
2005-11-14
打赏
举报
回复
多写几句话嘛,你那样效率也不会高,还难看。
codearts
2005-11-10
打赏
举报
回复
楼主为何不用memcpy这种函数呢?
改成:
int fill_date(void *x,void *y,int i)
{ int j;
for (j=0;j<i;j++)
{
//(unsigned char *)*x++=(unsigned char*)*y++;
*(unsgined char*)x++ = *(unsigned char*)y++;
}
//还有返回值
}
goodluckyxl
2005-11-10
打赏
举报
回复
*(unsigned char *)(x++) = *(unsigned char *)(y++);
逍遥过客
2005-11-10
打赏
举报
回复
(unsigned char *)*x++=(unsigned char*)*y++;
上面写的有问题,楼主的意思应该如下吧:
*(unsigned char *)x = *(unsigned char *)y;
x++;
y++;
其实这样写,虽然多了两个语句,但更清晰,可维护性更好,否则别人看你的程序会很不爽。
如果要写成一句,要注意*的优先级高于++,如下:
*(unsigned char *)(x++) = *(unsigned char *)(y++);
遇到这种问题,建议楼主单步调试一下,一步步跟进去,看每个语句执行后,各个变量的值,应该可以不那么郁闷的。
Grubby_c
2005-11-10
打赏
举报
回复
学习
window内核监控工具源代码
一:SSDT表的hook检测和恢复 ~!~~~ 二:IDT表的hook检测和恢复 ~~~~~~(idt多处理器的恢复没处理,自己机器是单核的,没得搞,不过多核的列举可以) 三:系统加载驱动模块的检测 通过使用一个全局hash表(以DRIVEROBJECT为对象)来使用以下的方法来存储得到的结果,最终显示出来 1.常规的ZwQuerySystemInformation来列举 2通过打开驱动对象目录来列举 3搜索内核空间匹配驱动的特征来列举(这个功能里面我自己的主机一运行就死机,别的机器都没事,手动设置热键来蓝屏都不行,没dump没法分析,哎,郁闷) 4从本驱动的Modulelist开始遍历来列举驱动 四:进程的列举和进程所加载的dll检测 采用以下方法来列举进程: 1ZwQuerySystemInformation参数SystemProcessesAndThreadsInformation来枚举 2进程EPROCESS 结构的Activelist遍历来枚举 3通过解析句柄表来枚举进程 4通过Handletablelisthead枚举进程 5进程创建时都会向csrss来注册,从这个进程里面句柄表来枚举进程 6通过自身进程的HANDLETABLE来枚举进程 7通过EPROCESS的SessionProcessLinks来枚举进程 8通过EPROCESS ---VM---WorkingSetExpansionLinks获取进程 9暴力搜索内存MmSystemRangeStart以上查找PROCESS对象 进程操作: 进程的唤醒和暂停通过获取PsSuspendProcess和PsResumeProcess来操作的 进程结束通过进程空间清0和插入apc。 采用以下方法查找DLL: 1遍历VAD来查找dll 2挂靠到对应的进程查找InLoadOrderLinks来枚举dll 3暴力搜索对应进程空间查找pe特征来枚举dll DLL的操作: Dll的卸载是通过MmUnmapViewOfSection和MmmapViewOfSection(从sdt表中相应
函数
搜索到的)来实现的(本来想直接清0 dll空间,有时行有时不行)(只要将这个进程的ntdll卸载了,进程就结束了,一个好的杀进程的办法撒,绿色环保无污染),注入dll使用的是插入apc实现的。(注入的dll必须是realse版的。Debug版会出现***
错
误,全局dll注入貌似也是)插入apc效果不是很好,要有线程有告警状态才执行。 五:线程信息的检测 遍历ThreadList来枚举线程 线程的暂停和唤醒都是通过反汇编获取PsResumeThread和PsSuspendThread直接从r3传来ETHREAD来操作的,通过插入APC来结束线程 六:shadow sdt表的hook检测与恢复 没有采用pdb来解决
函数
名问题,直接写入xp和03的shandow表
函数
名(主要是自己的网不稳定,连windbg有时都连不上微软) 七:系统所有的过滤驱动的检测 查看各device下是否挂接有驱动之类的,可直接卸载 八:系统常用回调历程的检测和清除 只检查了PsSetLoadImageNotifyRoutine PsSetCreateThreadNotifyRoutine PsSetCreateProcessNotifyRoutine CmRegisterCallback这几个,至于那个什么shutdown回调不知道是啥玩意,就没搞了,有知道的顺便告诉我下撒,谢谢 九:文件系统fat和ntfs的分发
函数
检测 直接反汇编fat和ntfs的DriverEntry得到对应的填充分发的偏移,然后和当前已经运行的文件系统的分发相比是否被hook,并附带恢复 十:文件查看功能 自己解析ntfs和fat的结构,来实现列举文件和直接写磁盘删除。附带有普通的删除和发生IRP来删除。不过这里面有点问题,ntfs删除有时把目录给搞坏了,大家凑合着吧, Ntfs网上删除这些操作的代码不多,就是sudami大大的利用ntfs-3g来实现的,看了下,太多了,充满了结构。然后自己对照着系统删除文件时目录的变化来自己实现的。只处理了$BITMAP对应的位清除,父目录的对应文件的索引项的覆盖,删除文件对应的filerecord清0. 另外偷懒时间都没处理,呵呵,y的,一个破时间都都搞好几个字节移来移去的。 十一:常用内核模块钩子的检测和恢复 这里只检测了主要的内核模块nkrnlpa**.exe的.win32k.sys,hal.dll,比对它们的原始文件从而查找eat inline hook,iat hook ,和inline hook。Inline是从TEXT段开始一段位置开始比较的。(有点慢貌似,等待显示扫描完成就好了) 十二:应用层进程所加载dll的钩子 应用层钩子检测和内核模块钩子检测原理一样,不过为了能读写别的进程的空间,并没有使用openprocess去打开进程,而是通过KiattachProcess挂靠到当前进程,然后通过在r0直接读写进程空间的。
回调
函数
(郁闷至极,总是不理解)
什么是回调
函数
? 简而言之,回调
函数
就是一个通过
函数
指针调用的
函数
。如果你把
函数
的指针(地址)作为参数传递给另一个
函数
,当这个指针被用为调用它所指向的
函数
时,我们就说这是回调
函数
。 为什么要使用回调
函数
? 因为可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型、某些限制条件(如返回值为int)的被调用
函数
。 如果想知道...
ajax框架dwr自定义同步异步--解决回调
函数
中处理无法得到预期结果问题
这几天用到dwr在回调
函数
中给变量赋值的时候总是有时候对有时候
错
,搞的很郁闷,后来百度了下才知道原来是同步异步的问题,应为dwr是异步的所以,但你回调的时候主线程已经往下执行了,而回调
函数
有可能还没有结束,那么你在回调
函数
中做的处理,比如赋值,就有可能无法完成,自然在主线程中也我发得到想要的值。(自己当时怎么没想到呢,功力不够)下面一篇文章作为参看,基本能解决问题。 DWR是Ajax的一个开...
JNI层线程回调Java
函数
关键点及示例
JNI是Java Native Interface的缩写,是Java平台的重要特性,使得Java代码可以方便地与C/C++代码编译生成的动态链接库进行交互。本文主要给出一份示例代码(工程文件见附件),描述如何在Android的JNI层开启一个线程,并在线程中回调Java层的
函数
。 代码主要分为Java层(java代码)和JNI层(c语言代码),首先
看看
Java层的代码(Nativ
URLDownLoad
函数
回调进度条
URLDownloadToFile这个
函数
,我一开始只是用它来下载配置文 件,主要考虑到如果下载较大的文件这个
函数
会阻塞很长时间,全部下载完毕后才返回,而且无法显示下载进度,今天才知道自己火星了,人家的最后一个参数提供 了相关的接口(以前看都不看直接传NULL),查了些资料总算搞清楚怎么用了,记录一下。 1。创建一个IBindStatusCallback的派生类,声明 IBindStatusCa...
C语言
70,037
社区成员
243,243
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章