|
[求助]Win7下不支持创建远程线程了?
LZ你确定?我试过是可以的,只是Kernel32在不同进程里面基址可能不同,你如果是直接以本进程的LoadLibrary地址作为CreateRemoteThread参数的话,很可能是无法成功的 |
|
[求助]防止别人调用自己做的dll
EPE对我这类半桶水来说还是挺牛的,它用Explorer作调试器,调试运行,这样其他调试器就不能调试运行了,只可惜被牛人做了脱壳机 LZ这个不外乎三种思路,一种是DLL主动并直接地获取EXE的信息进行校验(比如直接计算EXE的MD5值),这种情况下如果DLL用了强壳比如VMP之类的,几乎很难爆破,相对来说比较安全,但是EXE一旦更新DLL就报废了,这样还不如不用DLL,EXE和DLL弄成一个模块; 一种是DLL主动但间接通过一些接口获取EXE信息进行校验(比如通过EXE的导出函数或者系统API等间接获得信息),这类不管DLL有没有加壳,如果别人通过调试手段知道了原理的话,或Hook或Fake这些接口的数据就可以骗过DLL,安全系数也不是太高。 还有一种是DLL被动地被EXE修改信息才能运行,也就是DLL本身就是个半成品,本身是有BUG或者暗桩的,EXE启动DLL后在某些特定的时刻修改DLL的部分代码才能正常运行。如果DLL本身有BUG,基本上很快就会被发现,被人跟踪一遍或许就可以把DLL变“废”为宝,但如果是暗桩的话就没有那么容易发现了,而且修复的代码只在运行到需要修复的地方才会触发,并且不会一次修复全部代码,这样其他人几乎很难得到一个完全正确的DLL。不过这个方法只是浮云,目前应该没有壳可以提供这样的功能,自己实现又太过复杂…… 所以还是建议LZ干脆把EXE和DLL两个项目合并到一块算了。 |
|
[求助]masm里面。怎么将32位浮点数。转换成字串
sprintf最后一个参数是不定参数,这种参数类型在C/C++里面如果传入float(4字节浮点)是会被编译器自动转换为double(8字节浮点)的,其实前面那个"%f"和"%lf"在32位编译器下面根本没区别(看sprintf源代码可以知道)。既然sprintf是API,那么即使用汇编调用也应该遵守这一规则才能成功才对,所以我才觉得5L说的方法应该行不通,不过先把4字节浮点转换为8字节浮点再用他的方法是可以的。 ************************************************ 前面只说了一处疑点,还有一处疑点是我原本认为调用C/C++运行时库是需要初始化的,而2L那段代码调用sprintf,而sprintf就是C/C++运行时库的一部分,但是他没有初始化过,所以我甚至怀疑2L那段代码到底能不能工作。为了证实猜测,于是我用VC进行测试,指定自定义程序入口来跳过C/C++运行时库的初始化工作,结果我发现我的猜测错了,2L的代码可以正常工作,当然先把4字节浮点转换为8字节浮点再用2L的方法也可以正常工作。不过这并不是说C/C++运行时库不需要初始化,而是msvcrt.dll在DllMain里面会初始化,所以即使不手动初始化,实际上初始化还是完成了。 |
|
[求助]一个很现实的问题。搞脱壳破解用笔记本行不?
关键看人,高人用手写的笔记本子都可以 |
|
[求助]这句话什么意思?
这句是真理。 |
|
[求助]masm里面。怎么将32位浮点数。转换成字串
虽然对masm不了解,但根据个人对C/C++以及反汇编的了解,对5L的做法能起作用持怀疑态度,大致有两处疑点。 希望LZ说下结果,如果LZ成功了那就是我理解错了,这样我也可以顺便学习一下。当然把编译好的exe发上来更好,我可以拿去反汇编学习下masm的类型转换机制。 |
|
[求助]关于硬盘分区表的磁头数的问题
我就ghost了C盘,也只交换了C盘。diskgen没啥好修复的,它根本没提示说错误。 另外应该跟MBR没有关系,要是MBR有问题,启动都启动不了。 问题可能就是ghost以后,C盘的柱面磁头数和其他盘的不相同(一者是240,另一者是255),然后就概率性莫名死机了,现象是启动时滚动条一直滚不停,硬盘灯常亮不灭,持续2-3分钟后自动重启,然后在bios自检界面卡柱,只能手动关机再开机重试。 LS说的把其他盘也ghost一遍来保证磁头数相同,貌似可以试试。可以找个空分区ghost一下,这样速度又快又能变更磁头数信息,弄完再把数据从其他盘拷回去,回去试试再说。 顺便问一下,磁头数是不是只是一个逻辑数据,而不是物理数据,随意修改也没有关系的?我看大部分硬盘貌似都是255的,不知道为什么我这块刚好是240的。 |
|
|
|
[求助]求一段C/C++稳定的RSA加密算法源代码
我下载看了下,关于RSA加解密的部分,那些.c和.h的名字完全相同,也有那个NN_Decode和NN_Encode,但是那个j已经改成int了,请问你原来这份RSA相关的代码是哪里找过来的? |
|
[求助]求一段C/C++稳定的RSA加密算法源代码
再搜了一下,TomCrypt确实是集合了各种加密算法,也包含了RSA。 不过实在大了点,我只需要RSA的部分就够了,太大的东西研究使用方法也要花大力气。 貌似miracl也是一个加密算法集成库,同样谢谢你了。 要是真没有,我就还是再用那份代码好了…… |
|
[求助]求一段C/C++稳定的RSA加密算法源代码
呃,我对加解密算法没怎么了解,只知道RSA,DSA之类是非对称加密的,用来做签名比较合适,网上搜了下TomCrypt,貌似不是非对称的。不知道我有没有理解错,不过还是谢谢你了…… |
|
莫名其妙的notepad
notepad会猜测txt的编码格式,但是它错误地猜测为unicode,所以打开后就乱码了。可以选择另存为,在弹出的对话框里面默认的编码格式就是当前的编码。 这个跟你开notepad写一个“联通”后保存,再打开就显示不出来的原因是差不多的,只不过是notepad错误的猜测为utf-8。 |
|
[求助]关于strlen等函数的重定位的一些疑问
如果宿主编译的时候“代码生成”选的是ML或MT,strlen连API都不是,这种情况下如果你的注入代码不是用同一个版本的VC编译的话,你连strlen的入口都找不到。就算宿主是MD方式编译的,但如果你的代码不是用同一个版本VC编译的,因为加载的C运行库不同,strlen的地址是不同的,也需要通过输入表得到函数入口(实现比较麻烦)。 要说通用方法的话,strlen这种简单的函数,在注入代码里面还是干脆自己汇编实现好了。 |
|
[求助]追求快速压缩但不追求压缩率的,哪种压缩算法比较好?
qlz_size_decompressed返回解压后的长度,qlz_size_compressed返回压缩后的长度。我现在不是怕写越界,因为可以根据qlz_size_decompressed分配内存再写,而是怕读越界。 不过听你说起qlz_size_compressed倒确实有方法解决这个问题,谢谢了。这样做应该可以万无一失了: 如果从网络上拿到一串数据lpSrc,长度为size,首先判断size>9,这样调用qlz_size_xxx才安全,然后调用qlz_size_compressed得到压缩后的长度csize,判断size>=csize(quicklz源代码表明它最多访问csize个源数据),接着根据qlz_size_decompressed分配内存,最后调用qlz_decompress就可以保证不出错了。 |
|
[求助]追求快速压缩但不追求压缩率的,哪种压缩算法比较好?
现在用到这压缩库了,测试结果如下: ******************************************** CPU:Intel T7300 原始文件:魔盗.txt 4.31M quicklz: 开启QLZ_MEMORY_SAFE,压缩后2.50M 压缩100次 3.2s 解压100次 3.4s zlib: 最快压缩Z_BEST_SPEED方式,压缩后1.93M 压缩100次 19.0s 解压100次 4.6s aplib: 貌似没有参数控制压缩等级,压缩后1.73M 压缩1次 10.0s -_-b 解压1次 ??.?s 压缩实在是太慢了,测试解压没有任何意义 ******************************************** quicklz真是快啊,非常好,可惜我感觉解压函数不安全,解压函数的原型是 qlz_decompress(const char *source, void *destination, char *scratch_decompress); 它没有指定源的长度,这样如果精心构造原数据,即使有QLZ_MEMORY_SAFE存在也可以让程序越界访问,甚至可能导致程序挂掉。 比如可以假设某块数据压缩后占用100个字节,我用VirtualAlloc分配0x2000个字节的内存,将后0x1000的页面用VirtualProtect修改为不可访问,最后将这100个字节的前99个字节复制到0x1000 - 99的地址上去(即在前一块的末尾),然后将这个地址作为source参数,那么程序必挂,因为它必定要访问到第100个字节才能判断数据是否合法,但现在这个数据处于不可访问页面中。 虽然在正常应用中即使越界访问,问题也未必会这么严重,但是存在越界访问的可能性本身就是不允许的,特别是在“原数据是网络传输的数据”的情况下。 如果解压函数有传入原数据长度的方法就好办了 |
|
[求助]有没有这样的一种非对称加密算法?
[QUOTE='火翼[CCG];890355']用对称算法加密数据 用非对称算法加密对称算法的密钥[/QUOTE] 其实数据样本本身不需要保密,那么是不是非对称加密md5值就够了,会不会存在加密内容太短什么之类的导致容易被破译的问题? |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值