|
|
|
[求助]菜鸟问题。关于mov的赋值
mov edi,dword ptr[00404000] 是把地址0404000里面的值赋给edi,dword ptr只是说明从00404000取出来的是一个DWORD,而不是BYTE或WORD. 至于00404000里面存的值是77777777还是88888888那要看程序运行时里面存的是什么值了。如果写成mov edi,777777,那么程序就是“死”的了。因为那个地址里面可以是一个计算出来的“活”的数。 mov edi,esi 是把esi的值赋给edi |
|
[求助]第一次写程序遇到难题,请指教(关于文件操作)
po声明的时候你用的是DWORD指针,对指针操作+1,就是加指针指向的数据类型的长度,所以是加4,一般对内存字节操作用 BYTE 指针,这样一次+1。 |
|
[求助]逆向的问题!谁能帮帮我!
[QUOTE=cwnd;507599]比如ebp=12fa7a,那[ebp+c]=[12fa7a+c]?,这好像不对吧!! [12f94c]=024930bc这是怎么算出来的!不懂[/QUOTE] 如果2句分开来看,一点错都没有啊。 比如ebp=12fa7a,那[ebp+c]=[12fa7a+c],对啊 第二句话 [12f94c]=024930bc 也没错啊,那个地址里就是这么个数,土生土长的,我也没办法啊。 貌似2句话没什么关系,2个不同的地址而已。。。 |
|
[求助]第一次写程序遇到难题,请指教(关于文件操作)
1) UnmapViewOfFile 2) for(DWORD i=0;i<dwTmp;i++) 改成 for(DWORD i=0;i<dwTmp-(sizeof(Src1)-1)+1;i++) 或者 for(DWORD i=0;i<=dwTmp-(sizeof(Src1)-1);i++) 因为外层循环应该是比较到 (文件长度 - 字符串长度 + 1) 而不是 文件长度,不然 memcmp 会越界 (不过应该没有exe或dll小于你的那个12字节吧,呵呵,不然还要做更多检查) 3) WriteFile(hFile,(LPVOID)lpBuf,dwTmp,&BytesWritten,NULL); lpBuf没赋值?至少你帖的这部分代码没有。。。 |
|
[求助]RADASM那个资源编辑器怎么用?
在 .if eax==WM_INITDIALOG 里面加入 invoke DoToolBar,hInstance,hWin 不行? |
|
[求助]如何把shellcode变成汇编代码?
你的那个shellcode我是自己打到 UltrEdit32 里面的。。。抄错了。。。 |
|
[求助]如何把shellcode变成汇编代码?
自己手动输入的,写错了。。。。 |
|
[求助]如何把shellcode变成汇编代码?
没有上传图片的权限,就口头描述一下,给个最简单的方法吧。 用UltraEdit-32(或者任意一款Hex编辑器)把你的代码生成一个文件,比如 dump.bin。如果是32位的程序,就用OllyDBG就行了,菜单 View->File,然后选刚才的 dump.bin,在新打开的窗口里面点右键选Disassemble就行了,送佛送到西,顺便贴一下内容好了。 00000000 /B8 1220CD10 mov eax, 10CD2012 00000005 BD 187CB918 mov ebp, 18B97C18 0000000A 20B8 0113BB0C and byte ptr [eax+CBB1301], bh 00000010 20BA 1D0ECD10 and byte ptr [edx+10CD0E1D], bh 00000016 - E2 FE loopd short 00000016 00000018 49 dec ecx 00000019 2061 6D and byte ptr [ecx+6D], ah 0000001C 2076 69 and byte ptr [esi+69], dh 0000001F - 72 75 jb short 00000096 00000021 - 73 21 jnb short 00000044 00000023 2046 75 and byte ptr [esi+75], al 00000026 636B 20 arpl word ptr [ebx+20], bp 00000029 - 79 6F jns short 0000009A 0000002B - 75 20 jnz short 0000004D 0000002D 3A ??? 0000002E 2D ??? 0000002F 29 ??? 一看代码这么乱,那就换16位试一下吧。 打开cmd,切换到dump.bin目录下,输入debug dump.bin 提示符下输入 u 和 d 命令,自己看吧,q 是退出。 -u 0B58:0100 B81220 MOV AX,2012 0B58:0103 CD10 INT 10 0B58:0105 BD187C MOV BP,7C18 0B58:0108 B91820 MOV CX,2018 0B58:010B B80113 MOV AX,1301 0B58:010E BB0C20 MOV BX,200C 0B58:0111 BA1D0E MOV DX,0E1D 0B58:0114 CD10 INT 10 0B58:0116 E2FE LOOP 0116 0B58:0118 49 DEC CX 0B58:0119 20616D AND [BX+DI+6D],AH 0B58:011C 207669 AND [BP+69],DH 0B58:011F 7275 JB 0196 -d 0B58:0100 B8 12 20 CD 10 BD 18 7C-B9 18 20 B8 01 13 BB 0C .. ....|.. ..... 0B58:0110 20 BA 1D 0E CD 10 E2 FE-49 20 61 6D 20 76 69 72 .......I am vir 0B58:0120 75 73 21 20 46 75 63 6B-20 79 6F 75 20 3A 2D 29 us! Fuck you :-) 0B58:0130 00 75 05 2E FF 06 94 90-2E 80 3C 00 75 19 A9 01 .u........<.u... 0B58:0140 00 75 09 2E C7 06 96 90-02 00 EB 0E 50 B0 03 B4 .u..........P... 0B58:0150 FF E8 9E 00 58 EB 03 E8-1D 01 58 C3 F9 C3 55 51 ....X.....X...UQ 0B58:0160 26 8A 4F 08 32 ED 0B C9-74 0D 8D 6F 09 E8 19 04 &.O.2...t..o.... 0B58:0170 73 08 E8 0E 00 E2 F6 F9-EB 06 2E 89 2E A9 90 F8 s............... -q 看样子,前面是指令,后面是字符串。至于具体这段代码做什么的,我就不清楚了,也没兴趣,你自己分析吧。 PS:谁能推荐个好用的可以外链的图片空间吗?贴图省事多了,不用打这么多垃圾了。。。 |
|
[求助]谁能帮我解释一下这些汇编的意思啊?
自己写了一个,差不多的,虽然不完全一样。。。 #include <stdio.h> int getresult(unsigned char *aKey) { unsigned char *key = aKey; if (key[2]==0x6B && key[4]==0x6F && key[8]==0x32 && key[6]==0x39) { // *key = "??k?o?9?2......" return 1; } return 0; } int main(int argc, char* argv[]) { char *kkk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; int result = getresult((unsigned char *) kkk); printf("result=%d\n", result); return 0; } 00401050 /$ 55 push ebp 00401051 |. 8BEC mov ebp, esp 00401053 |. 83EC 08 sub esp, 8 00401056 |. C745 FC DC204>mov dword ptr [ebp-4], 004020DC ; ASCII "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 0040105D |. 8B45 FC mov eax, dword ptr [ebp-4] 00401060 |. 50 push eax ; /Arg1 00401061 |. E8 9AFFFFFF call 00401000 ; \Test001.00401000 00401066 |. 83C4 04 add esp, 4 00401069 |. 8945 F8 mov dword ptr [ebp-8], eax 0040106C |. 8B4D F8 mov ecx, dword ptr [ebp-8] 0040106F |. 51 push ecx ; /<%d> 00401070 |. 68 F8204000 push 004020F8 ; |format = "result=%d",LF,"" 00401075 |. FF15 9C204000 call dword ptr [<&MSVCR80.printf>] ; \printf 0040107B |. 83C4 08 add esp, 8 0040107E |. 33C0 xor eax, eax 00401080 |. 8BE5 mov esp, ebp 00401082 |. 5D pop ebp 00401083 \. C3 retn 00401000 /$ 55 push ebp 00401001 |. 8BEC mov ebp, esp 00401003 |. 51 push ecx 00401004 |. 8B45 08 mov eax, dword ptr [ebp+8] 00401007 |. 8945 FC mov dword ptr [ebp-4], eax 0040100A |. 8B4D FC mov ecx, dword ptr [ebp-4] 0040100D |. 0FB651 02 movzx edx, byte ptr [ecx+2] 00401011 |. 83FA 6B cmp edx, 6B 00401014 |. 75 2B jnz short 00401041 00401016 |. 8B45 FC mov eax, dword ptr [ebp-4] 00401019 |. 0FB648 04 movzx ecx, byte ptr [eax+4] 0040101D |. 83F9 6F cmp ecx, 6F 00401020 |. 75 1F jnz short 00401041 00401022 |. 8B55 FC mov edx, dword ptr [ebp-4] 00401025 |. 0FB642 08 movzx eax, byte ptr [edx+8] 00401029 |. 83F8 32 cmp eax, 32 0040102C |. 75 13 jnz short 00401041 0040102E |. 8B4D FC mov ecx, dword ptr [ebp-4] 00401031 |. 0FB651 06 movzx edx, byte ptr [ecx+6] 00401035 |. 83FA 39 cmp edx, 39 00401038 |. 75 07 jnz short 00401041 0040103A |. B8 01000000 mov eax, 1 0040103F |. EB 02 jmp short 00401043 00401041 |> 33C0 xor eax, eax 00401043 |> 8BE5 mov esp, ebp 00401045 |. 5D pop ebp 00401046 \. C3 retn |
|
[求助]隐藏成ActiveX高速缓存文件夹如何破解?
文件夹重命名成普通文件夹不就行了,或者你WinRAR都能看到,把里面的东西复制出来不就好了? |
|
[求助]新手急问
每个软件都不一样,要看情况而定,不是一两句话就能说清楚地。我觉得新手上来还是不要拿软件练手,找一些简单点的crackme比较好,最好是别人破过的,有教程的,先自己试着破,不行就看看教程。下载那个crackme精华不错,都是有教程的,不会了就看看相应的破文就行了。慢慢就知道怎么下断点了。 |
|
[求助]有了解 C-- 的吗?谁能给我一个 C-- 的 IDE啊,最好不是DOS的那种
C-- 生成的怎么是com文件?怪不得这么小。。。 |
|
[求助] 虚拟机里面看汇编教程弹出出错框...错误原因未知...能说的都说说 无论对错.总会有人碰到的啊
http://support.microsoft.com/kb/142731/zh-cn 解码器的问题吧? 有时用虚拟机也挺麻烦的,调试个程序还要装很多别的东西,什么DirecX、.Net Framework等等,弄得现在虚拟机就4G多了,真占地方。。。。 |
|
[求助]VC怎么实现byte连接?
数组的话,是连续存储的,可以用memcpy. 赙赠连接一个:http://msdn.microsoft.com/en-us/library/dswaw1wk(VS.80).aspx |
|
[求助]逆向算法求解
看了一下,不过不知道理解的对不对。 s的规律是从s1到s6每次乘以$0f*4,再加上下一个Sn,也就是最后的s等于 s=60^5*s1 + 60^4*s2 + 60^3*s3 + 60^2*s4 + 60*s5 + s6 s1到s6就是s的60进制的每一位了。 0x4509742D 换成60进制,s1到s6分别是 0x01 0x1D 0x16 0x0F 0x18 0x1D, 不知道这样算对不? |
|
[求助]谁有DES加密算法的源码,最好有C/C++以及汇编语言版?
这个引自上面的链接: /*----------------------------------------------------------------------------- This function performs a DES encryption or decryption on a single 64-bit block of data, using the specified 56-bit key. The data and key are packed one bit per byte. Every element of data[] must be either 0 or 1. The results will be highly anomalous if this is not the case. The encrypted or decrypted data is returned to the data[] buffer. -----------------------------------------------------------------------------*/ void des::encrypt_decrypt(unsigned char data[DES_DATA_SIZE], int /* boolean */ encrypt) 还有这个引自wikipedia: Before the main rounds, the block is divided into two 32-bit halves and processed alternately; this criss-crossing is known as the Feistel scheme. The Feistel structure ensures that decryption and encryption are very similar processes — the only difference is that the subkeys are applied in the reverse order when decrypting. The rest of the algorithm is identical. 上面那个链接不是有解密吗?我觉得与其在这里要代码,还不如自己多看看书,了解一下DES加密算法的原理有意义,知道了原理,看别人的代码也容易一些,不管什么自己想改用什么语言编,也容易很多了。可惜国内上不了wikipedia,那里有很多东西的,一定受益匪浅。 http://en.wikipedia.org/wiki/Data_Encryption_Standard |
|
|
|
|
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值