telnetBBS

闲着无聊和天台一起搞出来的。并木有什么技术含量
一个玩具而已,虽说基础功能是完成了的,但是拿来用还是元元不可能的。
因为天台他上学了,所以这个玩具就搁置啦
1.png
2.png
3.png
源码在这,得先运行py的main.py再运行golang的telnet.go
然后推荐使用Putty或者xshell连接,windows自带的那个连接器是另外一个协议我们还没写_(:з)∠)_
telnetBBS.rar

Tags: golang, telnet, bbs

[汇编]学习笔记

//不知不觉2017了,看着博客发布日期是2016-07-15.

相关文档


汇编指令基础

DIV

div有毒,除数是8位,被除数就得是16位。被除数是16位,除数就得是32位。

div word/byte ptr [ax]

8位情况下,al存商,ah存余数。16位情况下ax存商,dx,存余数。

dw,db,dd

等于开辟内存,dw是开辟4位,称呼为1字。db是2位,称呼为1字节。dd为8位,顾名思义,双字。
db 1 = 01 , dw 1 = 0001 , dd 1 = 00000001

各个寄存器作用

  1. cs,都名思意,Codesegment
  2. ds,也是很容易理解,数据段寄存器
  3. ss,栈寄存器
  4. 通用寄存器有好多,ax,bx,cx,dx,si,di,其中,ax,bx,cx,dx可以分为两个8位寄存器位[]h(igh)高位和[]l(ow),储存八位数据
  5. bp,和ss联用,BP为基址指针,作为校准使用,一般用途是[sp+bp]( 其实是存取某时刻的栈顶指针,以方便对栈的操作,如获取函数参数、局部变量等。
  6. ip,和cs联用,指向下一步执行代码段的地址
  7. sp,和ss联用,一直指向栈顶的指针,pop为sp+=2,push为sp-=2,ss为空时sp指向0,如果push或者pop过多会溢出或者越位,危险!
  8. ES,附加段寄存器,和di寄存器相关联使用,一般是es:di

寻址方式

debug下可以直接[idata],但是在MASM下会忽略[],直接传送数字去了,而不是指向地址的值,[ 0 ]除外。想要那样寻址,一般可以使用 ds : [偏移地址]

jmp

  • jmp short 标号 : 段内短转移,对IP的范围为(-128~127)
    ,并不是通过段:偏移地址来跳转,而是计算目前这条语句到跳转语句的偏移地址来跳转,所以说CPU并不会知道要跳转的地址,而是只知道距离要跳转的地址有多少个字节来跳转
  • jmp near ptr : 段内近转移,范围(-32769~32767),16位位移
  • jmp far ptr : 会连CS:IP一起修改

jcxz,loop

条件转移 jcxz 标号,有条件转移,只有在CX为0时才会转移。当CX!=0时,程序将继续执行下面的指令。这样看来的话,loop指令其实也是一个条件转移指令,每次loop,cx递减1,直到cx为0时跳出循环。注:标号均为8位,范围为-128~127

ret,retf

ret是跳转前的指令,把IP压入读出栈,之后sp-=2,相当于POP IP
retf同等,之不过多了CS,差不多等于POP CS;SP-=2,POP IP;SP-=2

Call指令

Call 标号 ,把当前IP,push入栈之后,跳转到标号地址执行
执行过程为:sp-=2;((ss)x16)+sp = IP#把IP压入栈;IP=IP+16位位移
因为跳转是计算位移而不是更具物理地址跳转,所以16位位移地址 = 标号地址 - call指令之后的第一个地址
因为是16位,所以范围是-32768~32767

标志寄存器

  • ZF 判断结果是否为0,执行结果为0,则ZF为1,反之
  • PF 判断奇偶,偶数为1,基数为0
  • SF 符号寄存器,判断是否带符号。
  • CF 进位或者结尾标志,debug中,NC为没进位,CY为进位,对于无符号数来说才会存在
  • OF 溢出标志位,对于有符号数来说才会存在
  • DF 方向标志位,DF=0,si di都会递减,DF=1,si di都会递增
  • TF 用来检测单步中断,如果TF=1则产生中断

ADC,SBB指令

  • adc,才不是射手呢(doge)带进位加法指令,adc ax,bx 相当于 ax = ax + bx +CF
  • SBB,有加法当然就有减法,带进位减法指令

cmp指令

对比指令,cmp a,b == a-b,只不过不记录结果
这时候我们可以看ZF位就可以进行对比,PF可以判断奇偶,看CF来判断两个大小,但是还要关注SF和OF来判断是否有溢出/进位

检测比较结果的转移指令

  • je,等于则转移 ZF=1
  • jne,不等则转移 ZF=0
  • jb,低于则转移 CF=1
  • jnb,不低于则转移 CF=0
  • ja, 高于则转移 CF=0 ZF=0
  • jna, 不高于则转移 CF=1 或ZF=1

movsb,movsw

功能是将ds:si中的内存单元指向es:di中然后更具DF进行sidi的递增或者递减
(果然我们计算机中的数据都是sb么2333
传送一个字就是movsw,区别就是每次递增或者递减sidi+-=2
可以配合rep指令使用,rep是更具CX重复执行指令

cld,std

有了上面那些,当然要对DF进行操作啦,然而肯定不能用ADD的说。所以就有了cld和std
cld 让DF=0,std让DF=1

CPU调用中断指令

也相当于执行N号中断

  1. 取中断类型码N
  2. push IF,TF
  3. push CS,IP
  4. IP=N4 CS=N4+2

lea

lea指令,格式:lea 目的寄存器,源操作数
作用:将源操作数的地址偏移量保存到目的寄存器中。学习lea指令可以和mov指令一起来记,他们格式相同,但mov指令是将操作数指向的内存中的数据保存到目的寄存器。

函数调用方式

//作用范围为VC++

  1. 首先是在上层函数,在调用函数之前,会先把参数从左到右push进栈
  2. 然后执行call函数,其中call函数又会隐藏触发一个压栈操作,会把IP压入栈
  3. 然后到了被调用函数,会先push ebp,把主函数的ebp保存
  4. 之后mov ebp,esp 更新EBP寄存器的值,更新完成后,被调用函数即可以使用EBP定位它的函数参数和局部变量
  5. 之后esp-00C,创建一片内存空间来保存函数状态
  6. 之后保存上层函数的ebx,esi,edi
  7. 之后在附加段寄存器创建一片空间(创建方式是为ECX赋值然后用rep stos循环写入
  8. 之后开始函数操作
  9. return操作其实是把值传给eax
  10. pop edi,esi,ebx
  11. mov esp,ebp 调整栈顶指针,使esp指向保存有main函数EBP的地址处,为恢复main函数ebp做准备
  12. pop ebp 正式恢复main函数的ebp
  13. ret 会触发一次栈出操作,会把最开始Call压入的IP弹出,然后程序开始执行IP所指向的地址
Tags: 学习笔记

python-IAT HOOK

难的不是HOOK,而是各种类型的转换。
先占坑。考完试再填。如果你们发现这个文章消失了的话估计就是弃坑了HHHH


2017/7/15
终于填完了,贼难受。头晕晕的,使用方式如图
IAT HOOK:
TIM截图20170714170055.png
LOAD IAT:
TIM截图20170714170432.png
代码在这里iat.rar

Tags: iat, hook

基于免杀马的永久防上报的实现以及工具

首发于 http://mapers.net/t/topic/328

两年前的一个点子,今天正好有时间。

前提:
你得马得免杀,而且我的工具是花几分钟随手写的,可能不靠谱。
其中增大文件我用的是在文件尾部增加空白数据,我记得这会被360给提示的,如果不想提示就自己写个添加随机数据的吧。反正winrar也能压缩

原理:
原理很简单,说出来可能会被笑。就是利用winrar的压缩+自解压把扩大体积后的免杀木马文件给怼成一个压缩包,因为被压缩了所以体积很小,再加上设置了密码所以即使被上报了360的云也无法自动检测出什么来。然后把压缩包追加到一个解压的壳后面又壳释放运行/
缺点:
虽然壳体积才6kb,但是加上winrar.exe体积就大了,至少300kb,所以你的文件最终体积可能是 你的木马体积+6kb壳的体积+200+winrar.exe体积,300+kb体积可是非常大的,可能某些条件下很难接受
怕手工分析,手工分析立刻翻水水。

P.S : 我只考虑防上报,免杀和过主防不在此考虑范围。壳是随便写的,所以压缩包内木马文件名称得是server.exe,不然无法启动木马,并且压缩包密码只支持coinkboom(逃

下面正式开始,首先,先找到我们的免杀马(好早之前写的,貌似不过主防),增大体积,并且给测试查杀
ed3bade92bb229aad997f654f31d9e489a018d35_1_690x410.png
然后打包为压缩文件并添加密码2.png
最后体积只有121kb,hhhhhhh
3.png
最后拉出我们的壳:
4.png
惨不忍睹啊惨不忍睹,壳本身6kb,加上rar.exe瞬间这么大了。有机会我写一个把rar.exe弄成远程下载的把。
最后利用cp把两个文件合并,得到最终的木马文件。
5.png
最后丢到虚拟机执行并且开启上报,成功执行木马。
6.png
查看上报区,空空如也7.png

毕竟40mb的东西也不好上报。
基本就这样啦。

壳在这里:链接: http://pan.baidu.com/s/1qXZh9zI 密码: wt92

就是这样辣,一个没啥用的小玩意_(:з)∠)_

Tags: 免杀

ffmpeg-rtmp搞事指南

因为有一台闲置的PI,加上直播浪潮,准备自己弄个无人点播的电台
收集了一些资料

  1. 使用FFmpeg在B站直播的姿势
  2. ffmpeg处理RTMP流媒体的命令大全
  3. ffmpeg 将1张图片和1个MP3音频文件转为MP4
  4. 利用 FFmpeg 将 MP4 转成 FLV
  5. PYTHON合并flv

预想效果:
收到点播弹幕->从网易云下载mp3文件和专辑图->合成mp4->转换为flv->合并到推送的主flv文件->推送到直播地址

希望合并到推送的主flv文件这里不会出错。

各种协议好神奇啊,可惜我只是高中生,不是大学生。不能花太多时间研究这些协议。QAQ

顺便求推荐一款语法爽快不冗杂的强类型的语言呀qwq。java和C#的语法。。。好。。长QAQ,记不下来,IDE带不动


2017/5/25

ffmpeg使用失败,太难用了,出现了几个问题

  • 没办法同时转码同时推流
  • 推流会出现间隔,没办法无间断播放
  • 十分不稳定

所以,打算,自己开始怼rtmp协议。
犹豫用golang还是py。golang的话在Pi上运行和编译略麻烦,Py的话感觉实现rtmp协议有点。。。不稳。
先收集资料

嗯,开怼。
(突然记起来,博客的点击查看大图还没写,应该就一个js绑定img标签被单机的时候弹出一个div里面放着一张大图的herf跳转应该就行了吧XD

Tags: ffmpeg, rtmp, 直播

瞎JB乱写的一个PY-BLOG

下载地址:SuperrrrrrrrrrrrrrrrrrMiniBlog.rar
看到天台用PY写了个博客,我自己也手痒,弄了一个
不使用数据库,用文件管理,排序也用系统日期,十分节能,使用markdown语法包,直接转换,没写后台,就写了一个写文章的页面,不过要求输入密码hhhhhhh所以管理员只有一个。自己用用十分适合。
样式是扒别人的QQ截图20170102220516.jpg
hhhhh毫无技术含量。

Tags: none