|
怎么样才能越过系统权限改系统时间
我想到时的几种思路: 一是你自己登录为高权限用户或使用 runas 命令开一个高权限的 cmd 控制台,然后更改 二是修改系统仅限配置,给你现在使用的用户赋于足够的权限 三是干脆在开机时进入BIOS里更改,据我所知,冰点仅在 Win XP 下才有效,它是原理不是接管BIOS的 int13中断而是接管 XP 的磁盘驱动 对于病毒为什么可以修改,如果你写过类似的东西就会知道,通常病毒会为了执行某些操作而把自己的运行权限提高到 local system 甚至 DEBUG 权限,因为只有在DEBUG权限下才可以执行某些操作,比如向PID很低的系统进程中注入代码等... |
|
如何在汇编中输出十进制数
如果你说的是压缩BCD码表示的数据,就使用BCD调整指令 如果是二进制的整数,那就得涉及数制转换的问题了,似乎很多讲汇编的教材里都有数制转换的例程吧 对于BCD码调指令,有不明白可以查看I386手册的相关内容就可以 你如果用的是MASM32环境的话,作者是提供了类似 Int2Str的函数的,看文档自己找吧 你说的编写一个函数来处理,当然是可行的了,你可以做为一个练习试试嘛 |
|
[求助]有时我脱完壳的程序,双击运行时没反映呢?
一般是因为脱壳失败造成的,虽然壳被脱掉了,但程序没有被正确修复 使用ImportRec可以修复脱壳过程造成的输入表的错误 但其它错误就不好说了 比如有的程序尾部有附加数据,那么脱壳后还必须手动把附加数据补回来 或者有的程序带有自校验,当检测到自己被脱壳后便自动退出 等等原因都可能造成脱壳不成功 只要你多多练习,把调试的基本功练好了,一般来说都可以手工解决脱壳的问题的 可以查查看雪上的教程... |
|
绝对有意思的问题?新手高手都来看,给个思路
我提供一种思路 有不对的地方尽管批评 我曾经看过一个编写游戏密码记录机的文章 程序里网络封包发送的地方为了不让主程序出现"卡"的情况,并不是类似call dword ptr ds:[WSASend] 的格式,而是 ... push dword ptr ds:[WSASend] \ call CreateThread 这样的方式 你看看你调试的程序里是不是这样的,用一个线程来发包,而主线程负责管理一些用来同步的信号量 这样当你将程序暂停后,由于信号量得不刷新,导致工作线程不停地发包.... 所以应该断 CreateThread 而不是 WSASend 仅供参考 |
|
[求助]如何修改顶端的文字,太长了,很不舒服
不知道楼主试过 FreeRes 没有 我不知道楼主说是不是要把W32DSM的标题栏是文字改变, 如果是的话我觉得应该能用 FreeRes 当然用UE试试也行啊 |
|
[求助]VB注册无提示怎么破解?
如果是VB-P码的,用WKTDEBUGGER跟,对你点的按钮设置事件断点。 如果编译成了VB-N码,直接用OD跟,在注册页面,在OD里试试查找窗口函数的地址,试试对父窗口的 WM_COMMAND消息设置消息断点... WKTDEBUGGER用法自己查资料吧,看雪上有过专题的... |
|
初级问题
看雪老师亲自回答了... 对于很多像我这样的新手, 可能不太明白原理 我只是补充一下 高手莫笑 修改的原则,就是保持堆栈的平衡. 基础知识(给小菜看的) 在CALL之前,连续的压栈操作是将调用函数的参数压入堆栈,压入的数据都是临时数据,在函数返回后便没有用了,所以必须要进行清栈 如果函数的返回入的指令是 retn X 这样的形式,(比如函数需要3个参数,那么这里便是 retn 0C),在C语言中,意思就是这个函数是 _cdecl 属性的 而C语言中 _stdcall 在汇编层面表现就是函数以 retn 指令返回,而在call指令下面,有一条清栈的指令,一般为 add esp,X (如3个参数,X便为0C).(一般是紧接着的一条指令,但不一定,可能会因为改善代码密度等原因被编译器进行优化,推迟几条指令,或者几个CALL之后再批量清栈) 对于后种情况,直接将 CALL 指令 NOP 掉是最简单的修改方法 对于前种情况,可以像看雪老师给出的示例那样,在参数压栈之前便进行修改,便可以保持堆栈平衡,而如果要在CALL上做手脚的话,必须改为 add esp, X 的形式 当然只是为了说明原理,不同的方法都是正确的. 可以这样改: ::004012E5:: 6A 00 PUSH 0 ::004012E7:: 68 68274000 PUSH 402768 \->: test2.exe ::004012EC:: 68 60274000 PUSH 402760 \->: Open ::004012F1:: 6A 00 PUSH 0 ::004012F3:: FF15 B0224000 CALL NEAR DWORD PTR [4022B0] >>>: SHELL32.DLL:ShellExecuteA // 这里改为 add esp,0x10 ::004012F9 |
|
[注意]公布超级骗子一名(已经委托浙江宁波警方调查)
多谢jinzhcheng兄弟的提醒 我从来不会请人有偿破解软件的 我觉得有偿破解本身就与CRACKER精神背道而驰 只有真正的技术爱好者,才能成为一个好的CRACKER 而真正的CRACKER,绝不会将CRACK延申到技术本身之外的. |
|
[求助]OD按健中断的函数
如果要调试游戏的话,这个我也不知道怎么办, 但对于常规Windows窗口应用程序,要设定按键中断倒不是太难的事. 在OD中查看窗口类信息,或者用SPY++之类开发工具,找到窗口的窗口过程, 并找到处理按键消息的窗口(一般为顶层窗口)的句柄, 在窗口函数处下条件断点,即在窗口函数的入口处按 Shift + F4 当然也可以用OD的消息断点功能来设置, 中断次数是1,中断条件按你自己的需要设置,OD很好地支持用C语法写的表达式作为中断条件. 如果你对编程比较熟的话,窗口函数的各个参数(即堆栈中的几个数据)应该是不陌生了,开动你的聪明才智,你会发现OD的断点功能其实非常强大的.. |
|
[求助]这样才能修改进程的名称!
是小黑吧呵呵,要隐藏进程或者改为具有迷域性的名字是吧. 这样,如果你的宝贝改名后不能用, 那么程序里可能对软件名进行了检测, 或者它使用了配置文件,而这个配置文件,程中可能是以与程序名相同,再修改后缀名,比如door.exe -> door.ini 如果是前一种原因,那么就用十六进制编辑器对文件进行中的字节进行替换(未加壳),注意字节数最好一致.. 如果是后一种原因,你就把 door.ini 同时也改名就可以了. 如果要隐藏进程,则有很多教程可以查询,都是经典的方法,我就不多说了,自己去查好了,当然这需要一定的编程基础. |
|
周末好哈!发个代码,来烦烦各位[讨论]
我没有做过这方面的开发,只能根据自己调试的经验来胡乱猜测一下原因了 我觉得有两种可能的原因 其一是堆栈问题,可以看到原来的CALL指令后有清栈的动作,那么被调用者是_stdcall 属性的子函数,而堆栈中是参数,虽然你的替代函数用了 pushad 和 popad,你还是必须在汇编级别进行调试,看看在你的功能函数 dispfunc 执行完毕并返回后堆栈指针是否正确,因为对于 naked 的函数,不能想当然,一定要在汇编指令这个层次看了,才知道你的代码工作是否正确 原因之二,是我认为可能性比较大一点的,就是那条 jmp conaddress 指令并没有将 conaddress 的执作为跳转的目的地址,而是作为对 eip 操作的一个偏移地址了,因为 I386 的指令集有许许多的跳转,而其助记符只有 jmp ,对于 naked 的函数,C的编译器对汇编指令的翻译不一定是按你想像的进行的, 同样只需要在汇编级上对程序进行调试即可 如果真是这个原因,那么你可以这样修改(还记得写 shellcode 时常用的方法吗): mov eax,conaddress / jmp eax 这样便可以进行绝对调了. BTW:在VC的调试环境中,按调试工具条上的反汇编按钮或者直接按ALT + 8便可打开源码对应的汇编代码,当然前提是编译和连接时打开了源码调试的选项(对于默认的DEBUG模式是打开的) 如果不用VC而用其它调试工具的话,可以在需要设断点的地方手动插入一条 int3 ,那么程序跑到这里便会停下来,然后激活你的Just in time Debugger即可跟踪 如果不是我猜的原因,那么你可以放上更详细的介绍,大家继续探讨. 祝你好运. |
|
OllyDBG调试程序时出现奇怪问题???请高手赐教
程序的VC入口点是伪装的, 至于你说的OD死机,我还从严没有遇到过 OD会对模块进行反汇编分析,以前听说有程序可以反DASM,我想这个也可能是一样是方法,让OD分析时出错 你可以这样试试:用OD启动另一个OD,然后再用这个OD调试被调试的程序,这样便可以确定OD出错的原因,, 你不妨试试... |
|
[求助]我讨厌VB写的软件..一破VB的软件就不懂如何下手.
首先你应该知道, VB 的程序分为 P 码和 N 码, 如果不太明白可以去查相关资料,我这里不敢班门弄斧,因为我讲不太明白,呵呵 对于 N 码的程序,其实和其它程序一样进行调试就可以了,只不过是因为VB语言的关系,它的数据类型有点别扭,需要花时间习惯,而且它的函数的起始和结束有很多附加的工作,由于VB是弱类型语言,它的程序中会有大量的内存申请 释放和变量的复制,进入函数的局部变量的使用也与C很不一样,不过这些一般都不必太仔细, 至于算法,VB里进入运算很多都是用VB的运行时库进行,并不一定是ADD ,XOR之类的CPU指令,而可能是类似 call __vbaVarAdd 之类, 但没什么难的,习惯就好 特别的,调试N码的一个法宝SmartCheck,你必定会用得着,但得很有经验和耐心,因为它给出的信息太多了... 而对于P码的程序,由于程序本身不是CPU指令代码序列,而VB的VM 伪指令序列, 用常规的调试方法就不那么容易了,比如OD,IDA,因为它们对P-CODE的伪指令没有任何办法,而OD是动态调试,它虽然不能处理P-CODE,仍然可以调试,但它直接控制的不是应用程而是VB的VM的执行过程,虽然也可以费点劲绕个弯来调,终究会累死人的... 所以对于P-CODE的程序,应该使用VB P-CODE 的专用工具,静态的用VB Explorer,Exdec等,动态的可以用WKTVBDebugger 但在我调试中遇到一个问题,不知是我自己机器还是共性的问题,那就是WKTVBdebugger遇到多线程的程序时工作不太好.. 关于VB我只能说这么多了,本人对VB的程序也只略通毛皮而已... 大家共同进步中... |
|
[求助]有关W32asm的问题
可能是你反汇编的文件里没有字符串,你可以试试其它相关的DLL文件 也可能是它使用的字符串不是标准资源格式,比如加过密或加过壳 我不知道处理的文件是怎么个样子 你自己试着分析一下 |
|
[求助]VB下断遇到的问题
我曾经遇到过类似你所说的情况,具体是不是一样,你自己再试试看,我先说下 一种可能:如果你用OD调 VB P-Code 的程序,因为 int3 断点会将下断处的一个字节填入 0xCC 而VB的VM读取伪指令时会将修改过的字节进行解释, 这样如果 0xCC 这个字节与相邻的字节构成的指令是VB的VM不能解释的指令,那么就会出错了 这种情况,你不能用OD来调,而应该用专用的P-CODE调试器 WKTVBDebugger 另一种情况是(我曾经遇到,但至今没有解决)用 WKTVBDebugger 调试一个多线程的P-CODE的程序时程序一启动便出错,如果哪位高手知道解决方法,请一定不吝赐教 我的思路是分析VB的VM的启动过程,特别要清楚P-CODE的多线程是如何在VM里工作的,因为线程函数必定也是P-CODE的,当肯定不是用程序中的线程函数作为参数直接调用 CreateThread(), 而肯定在VM里有一个特殊的线程函数,以它作为参数创建新的线程,然后在这个线程函数里再执行应用程序中的P-CODE功能代码. |
|
这种程序什么跟踪?求大侠们给个思路,程序1跳到程序2再跳回1
首先声明,我也只是一个水平一般的代码爱好者,不敢妄言,再加上我没有看到你的程序,所说的仅供参考.. 我以前调试过一些病毒,很多都是一个文件来启动另外的文件 你可以试试下断 CreateProcessW 或者 ShellExucuteW之类,然后取得控制权 再新开一个OD启动新的程序,慢慢调,有点耐心 其实跟调试一般程序没有太多区别,关键是找到两个程序之间通信的方法, 你可以在OD里将 SendMessage 和 OpenProcess 之类的函数全部下断 要调试这样的程序,前提是把每个单独的程序的功能是什么搞清楚 然后只要找到它们通信的原理,一切便尽在掌握 最好的能把你调的程序的链接给一个,或者给我发一份 油箱:lostgoldkey@163.com 欢迎往里加油.. |
|
|
|
|
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值