|
|
[求助]请问:一般在进程里附加一个进程是干什么用的啊?
附加,是作为调试器附加到一个进程来对它进行调试。 附加后还是两个各自的进程,只是被附加的进程发生一些调试事件(如异常)时,调试进程会收到通知。 附加,并不是“合并”,或者“侵入”,只是获得对另一个进程的调试的能力。 |
|
|
[求助]请问:IMAGE_SECTION_HEADER中的PointerToLinenumbers是什么意思啊,行号表是什么啊?
给调试器用的,为了实现源码级调试。 |
|
|
[原创]对api 名字 hash的一点理解
有一种函数,叫intrisics function,它是编译器(compiler)提供的,而不是库(library)提供的。 比如此例中的_rotl,再比如memcpy。比如这里有一篇文章,对memcpy进行了分析: 88fK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0D9L8$3N6Q4x3X3g2U0L8$3c8A6L8X3N6F1L8%4N6Q4x3X3g2U0L8$3#2Q4x3V1j5J5x3o6l9#2i4K6u0r3x3e0m8Q4x3V1k6$3j5#2)9#2k6X3#2W2L8h3y4H3P5g2)9J5k6h3S2@1L8h3H3`. 虽然PC平台的编译器,这种函数不常见,但也是存在的,只是不同的编译器实现方式不同。 在嵌入式编译器中,intrinsics function是相当常见的。打开iar embbedded workbench的头文件,随处可见intrisics修饰的函数,最典型的就是__disable_interrupt()。 |
|
|
[求助]如果我想把在intel上运行的程序 转到 mipsR3000上去执行,只用改IMAGE_FILE_HEADER的Machine这个值吗?
好强大好强大。。。 根本就不是一种平台,二进制代码无法通用。 要不,就没有软件“移植”这一说了。。。 |
|
|
[讨论]关于内存注册机
最好是自己写一个loader,patch一些代码,对LoadLibrary的参数进行判断,若是计算注册码的那个dll,则将返回值记录下来,之后用这个基址加上偏移去读取注册码。 |
|
|
[求助] 怎么解密这个 Bat 文件,请告诉方法,谢
如果你看不懂,你还需要学习一下批处理的高级用法。只包含命令序列的批处理只是批处理的最简单形式。 其实很简单,用十六进制编辑器打开一看便明:开头两个字节是ff fe,这就是unicode的标志。往后看,看到几个0d 00 0a 00这是unicode的换行,再往后是0d 0a 0d 0a,这是ASCII的换行,再后面便都是ASCII字符了。 |
|
|
[求助]一段汇编代码中的问题,望高手解答
堆栈,按照栈顶指针操作,分为“空”堆栈和“满”堆栈;按生长方向,分为“递增”堆栈和“递减”堆栈。 概念的准确解释,谷歌或百度就行。 x86的堆栈是“满递减”堆栈。 ARM处理器支持全部4种堆栈模式。 |
|
|
[求助]请问SMM在intel开发手册哪里
我的2005版的,在VOL3:System Programming Guide的第13章。 |
|
|
[求助]关于劫持DLL后获得原函数的参数,不知道怎么办
那个jmp eax,需要注意: 1.如果原来函数是通过寄存器传递参数的,特别是Borland的编译器,会使用EAX来传递参数的,那么这样做会破坏寄存器。 对DLL导出的函数,虽然不多见,但还是要查看一下比较好。 2.注意函数调用时栈帧的变化。一般编译器会自动插入类似 push ebp/mov ebp,esp + leave这样的指令,那么你就不能直接jmp eax了,需要先修改栈帧的结构,具体用什么指令,要具体看一下。 对VC,使用__declspec(naked)修饰函数,可以阻止编译器自动插入对栈帧调整的指令,不过对naked函数,编译器有很多限制,比如会忽略其返回类型,不能初始化局部变量,不能有return语句等。通常naked函数是用完全用汇编来写的。 |
|
|
[求助]怎样从dede中导出.map文件
[QUOTE=小虾;606153]点击Dede的Table标签控件的:[输出]按钮,点击RadioButton控件的"IDA/SoftIce的MAP/SYM文件"选项(包含选上下面的两个CheckButton控件的选项)。在输出文件里选择要输出*.map/sym文件的目录地址。最后按[产生输出文件]按钮就行了。[/QUOTE] 主要时平时dede用得少,通常是直接IDA了;这下又学到了。 |
|
|
[求助od regsvr32时,为什么弹出注册表呢?
regsvr32,简化一些,就是先LoadLibrary(...),再GetProcAdress(,"DllRegisterServer",...);然后CALL一下得到的DllRegisterServer。 具体会有什么行为,完全由程序中的DllRegisterServer函数决定的,它只要CreateProcess("regedit.exe",...),那就会弹出regedit了;如果它ExitWindowsEx,那就是关机了。 第二个问题:你觉得什么是线程?每一个进程,至少有一个主线程,它是进程创建时由系统创建的;否则,进程如何运行? |
|
|
|
|
|
|
|
|
[求助]<<加密与解密>>书中是否有错误---IMAGE_NT_HEADERS的有没有Signature啊?
以下是winnt.h中的内容。注意#ifdef这一部分。
typedef struct _IMAGE_NT_HEADERS64 {
DWORD Signature;
IMAGE_FILE_HEADER FileHeader;
IMAGE_OPTIONAL_HEADER64 OptionalHeader;
} IMAGE_NT_HEADERS64, *PIMAGE_NT_HEADERS64;
typedef struct _IMAGE_NT_HEADERS {
DWORD Signature;
IMAGE_FILE_HEADER FileHeader;
IMAGE_OPTIONAL_HEADER32 OptionalHeader;
} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;
typedef struct _IMAGE_ROM_HEADERS {
IMAGE_FILE_HEADER FileHeader;
IMAGE_ROM_OPTIONAL_HEADER OptionalHeader;
} IMAGE_ROM_HEADERS, *PIMAGE_ROM_HEADERS;
#ifdef _WIN64
typedef IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS;
typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS;
#else
typedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS;
typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS;
#endif
|
|
|
[求助] 怎么解密这个 Bat 文件,请告诉方法,谢
没有加密,只是在前面插入一行UNICODE的字符,这样你用notepad打开后,会把后面的非unicode的字符显示为乱码。 用十六进制编辑器将前面的UNICODE删除,后面的内容就会正确显示了。 |
|
|
[讨论]讨论下Win7计算器移植到XP下的可能性
所需要做的工作,最主要的是消除API的差异,是用旧的API模拟新的API。在新的平台上有一些新的轻量级注册表访问的API,在旧的平台上不存在,也不存在等效的替代品,所以需要自己写wrapper函数,并修改所有的相关函数调用代码。 其它要进行的工作,等待高手补充。 |
|
|
[求助]带壳程序汉化
软件带壳不影响其汉化??? 壳一般会对资源进行压缩或加密的,所以,带壳的程序一般是无法替换资源的。 另外,汉化也可能需要修改程序代码和数据,比如有些国外软件只支持ASCII字符,那你必须修改它让它支持UTF-8或UNICODE。 所以,还是先脱壳吧。 |
|
|
[求助]疑惑:对于PE文件的IMAGE_DOS_HEADER, 它里面都是原来的Dos程序的一些信息,那么现在为什么不把它重新修正,以适应新的windows程序啊?
PE格式之初,微软想要让一个以EXE为扩展名的文件在DOS下和在WINDOWS下都是一个合法的可执行程序。否则,一个DOS用户,看到一个EXE文件,结果敲入命令,提示一个"bad command or file name",他会迷惑的。 并且,微软早期的一些产品,比如office,用同一个EXE文件,在DOS下和在WINDOWS下都可以用。 |
|
|
|
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
勋章
兑换勋章
证书
证书查询 >
能力值