|
[求助]这种现象是怎么回事?
用工具(例如PC Hunter)检查一下explorer进程中的异常线程,异常模块。内核是否有不明过滤驱动,Object Hook等。 如果有一定技术实力的话,可以调试一下explorer进程,看看到底是从哪里访问网络的。网络就那么多API,一个个监控调试一下。 |
|
[原创]windbg 脚本化扩展 xcwd
最初版?那ImmunityDebugger呢? |
|
[原创]windbg 脚本化扩展 xcwd
我只是拿Py举个例子。你看不起随你去,我说有了YYY了,所以不需要XXX,你到是说个“需要XXX”的必要性啊。 |
|
|
|
[原创]windbg 脚本化扩展 xcwd
为什么不用现成的脚本系统,比如Python,而要自己发明轮子呢?Python等是通用脚本,看帖的人可能已经会了,就免除了学习语法的负担。就算没学,学了以后在其他领域也有用处(例如IDA有IDA Python)。Python的稳定性、完善的语言设施和庞大的三方库支持,肯定是自己实现的脚本所不能比的。 另外,Windbg的Python脚本扩展,已经有人做了:https://pykd.codeplex.com/ |
|
[求助]各位大哥,请教一下IRP HOOK 鼠标
键盘又不是没有USB的,你知道去过滤kbdclass而不是hidusb。换成鼠标就不知道了? |
|
[求助]求助大牛们,在文件微过滤驱动中,由卷设备对象如何获取对应的磁盘设备对象?
用IoBuildDeviceIoControlRequest和IoCallDriver发送IOCTL_STORAGE_QUERY_PROPERTY,判断BusType是不是USB。 |
|
[求助]随机取其中20个数
先shuffle一下,再取前20个即可。 |
|
[原创]inline hook
这篇帖子作为新手教程,非常棒!不过,我补充解释一下为什么实际的Hook用jmp的比较多,而push-ret相对比较少。 push-ret不用算相对偏移,用起来确实方便。但和jmp相比多了一个字节。毕竟Hook的目的是监控和操纵被Hook函数的行为,多数情况下,还是需要调用原来函数的。这时候,多了一个字节就意味着可能会覆盖更多的指令内容,从而带来不必要的麻烦。例如这种入口: mov edi, edi push ebp mov ebp, esp ; * 到这里正好5个字节 call XXXXXXXX ; ** 麻烦来了 .... 原本用jmp的话,只会覆盖到*。构建调用原函数的跳板,只需要把前三条指令拷贝下来即可。如果是push-ret,会覆盖6字节,从而覆盖到**处。而**处指令是call,带的是相对偏移,要构建跳板时,需要手动修正相对偏移,增加了不必要的难度。还有一种情况是,覆盖的区域超出了被Hook函数入口第一个Basic Block的长度,从而可能会导致BB间的跳转出现问题。覆盖的指令序列越长,越有可能遇到麻烦。 除了jmp之外,call指令也是不错的选择,因为长度和jmp一样,还能知道是从哪个函数的hook来的(看压栈地址),从而方便实现统一的hook管理入口。 |
|
[求助]IDA结构体的建立
硬来的话没什么特别好的方法。先分析一下结构的长度。这可以通过寻找类似 分配内存,然后this调用一个函数(构造函数)的代码来做到。分析出结构长度后,先创建一个结构,把已经分析出的域填好。没分析的,先用DWORD unkXX;代替,XX是偏移,添加成员,直到结构长度达到先前分析的值。随后慢慢分析,慢慢修改结构定义即可。 大对象通常都会有嵌套的小对象,或者内嵌数组之类的,要注意分析出来。 |
|
[求助]写了个小工具,看能不能被破解。。
易语言写的,暂时没兴趣。 |
|
[原创]SEH Hook
1. VirtualProtect对页属性的修改是针对Page而言的。即使是1字节,也会修改整个Page(典型大小是4KB,此外也有大页面,可能更大)。所以,可能会影响到同Page下的其他API。所以,完善的代码要加上覆盖判断。如果是其他API导致的页面错误,需要想办法过滤。Hook多个API的时候,这个问题尤为突出。除了Hook的时候会重复外,还原的时候,也会一并把同Page里的其他API也还原了。这样,处理多线程也是个问题。 2. 可以考虑用VEH实现。 |
|
[讨论]软件使用次数限制,如何在离线模式下保证安全?
理论上讲,单纯本机的,无解。 不考虑联网,也有一些措施可以增加破解难度。具体采用哪个,要看你的软件价值有多高,值得用多强的保护措施。比如,面向大众的,就不值得用太强的保护措施。如果是用户很专业,很少,单份价值很高的,可以适当提高保护强度。 常见的措施有: 1. 一般的防破解保护。例如反调试、混淆等,可以提高分析难度,让破解者不容易分析出存放次数的位置。适合一般软件。 2. 适当增加试用次数存放位置的数量,并提高隐秘性。例如,多放几个位置,几个位置联合校验,程序自修改等。适合一般软件。不过,非常不建议存放在MBR中。理由是,首先,MBR是很隐秘,但那是针对病毒而言,对正常软件而言,这个位置太特殊了,因为除了操作系统自己、一些安全软件以及病毒外,几乎不会有软件会触碰。如果是有人想破解,很容易注意到这个位置。其次,这个位置,是各个杀软、主防等监控的重点。贸然去碰它,很容易被主防当成危险行为挡下来。最后,MBR比较复杂和脆弱,容错性差,修改出错会导致系统出现严重问题。 3. 利用辅助硬件,比如加密狗。成本高,应用得当的话,保护强度会比较高。适用于价值很高的专业软件。 4. 使用次数限制,能否改成其他的?例如模仿IDA的做法,试用版功能有阉割,没有保存的功能,而且会随机超时退出。 |
|
|
|
[求助]请教linux下都有哪些加密授权工具?类似vmprotect、zprotect这种。
客户不懂软件,那么你自己修改源代码加上时间检测和序列号检测不就完了。没序列号就限定时间,有序列号就不限定。客户给钱了,给序列号。 |
|
[讨论]IDA如何识别类名?
IDA自带的FLIRT签名只包含若干种较为固定的编译器,例如微软的VC系列,宝蓝BCB系列等。开源的编译器,比如GCC,Clang等,由于变种太多,每个操作系统构建的都可能不一样,IDA自带的签名并不包含。这部分编译器,需要自己用IDA提供的签名创建工具去创建FLIRT签名。而且,自带的签名,通常是一些编译器的CRT运行库,像cocos2d这种开源的库,不会自带。除非你自己创建的,否则肯定不会有。 从你的情况看,不太可能是通过RTTI实现的,最大的可能是,你的so文件带了调试符号。Release版带调试符号并不是奇怪的事情,因为一旦出现Bug,还要靠符号来定位错误位置的。尤其是像cocos2d这种开源的东西,更加没有隐藏源代码信息的必要。符号有可能嵌在可执行文件里面,也可能是独立的文件。这里,看上去是嵌在so里面的。所以,IDA直接解析so里的调试符号得出了类名等符号信息。 要想确认,你可以用strip工具处理一下so,确保去掉调试符号,再看看IDA是否还能识别。 |
|
请问这是什么什么加密算法?
观察可以发现 1. 明文相同,密文也相同。反之亦然。例如,三个明文都有公共前缀,密文也有相同的公共前缀。后面明文不同个,密文也不同。 2. 明文长度 * 2 = 密文长度(第一条除外,似乎少了一个字符?) 推测是某种基于字符替换的算法。 |
|
[求助]分析一个DLL碰到问题了
dll不能用的话,也可以直接分析文件格式 |
|
[原创]ida循环搜索
求一个控制流图(CFG)中所有的循环,应该先计算出必经(或叫支配,dominate)节点树。然后计算出所有的回边,从而得出所有的循环。 算法例子:http://www.cnblogs.com/zwm512327/p/3536484.html 楼主的这种搜索算法,效率低,尤其是想求CFG中所有的循环的时候。 |
|
[求助]汗,问个最基本的常识问题
eax/rax |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值